Skip to content

Faucet API

The faucet mints test APT so you can develop before Mainnet. Devnet is programmable with no Google login. Testnet requires Google sign-in (the mint page or POST /fund with a Firebase ID token). There is no Mainnet faucet.

Amounts are in Octas (1 APT = 100,000,000 Octas).

NetworkEndpointHow to mint
Devnethttps://faucet.devnet.aptoslabs.comSDKs, CLI, or POST /fund with no auth
Testnethttps://faucet.testnet.aptoslabs.comMint page, or POST /fund with a Google ID token
MainnetNot available

OpenAPI (live): Devnet spec and Testnet spec. Explorer: Devnet /spec. Source: crates/aptos-faucet/doc/spec.yaml.

The current operation is POST /fund with a JSON FundRequest body (address, auth_key, or pub_key, and optional amount). Devnet still accepts a legacy POST /mint?amount=&address= query; new integrations should use /fund.

Most wallets, such as Petra, have a Devnet faucet button. See the Aptos wallets directory.

After CLI setup, fund an account on Devnet:

Terminal window
aptos account fund-with-faucet --account 0xd0f523c9e73e6f3d68c16ae883a9febc616e484c4998a72d8899a1009e5a89d6 --amount 100000000

On Testnet, use the mint page instead of this command.

This example funds 0xd0f523c9e73e6f3d68c16ae883a9febc616e484c4998a72d8899a1009e5a89d6 with 1 APT on Devnet.

import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
const aptos = new Aptos(new AptosConfig({ network: Network.DEVNET }));
await aptos.fundAccount({
accountAddress: "0xd0f523c9e73e6f3d68c16ae883a9febc616e484c4998a72d8899a1009e5a89d6",
amount: 100_000_000,
});

See each SDK for more client examples.

from aptos_sdk.v2 import Aptos, AptosConfig, Network
async with Aptos(AptosConfig(network=Network.DEVNET)) as aptos:
await aptos.faucet.fund_account(
"0xd0f523c9e73e6f3d68c16ae883a9febc616e484c4998a72d8899a1009e5a89d6",
100_000_000,
)
package main
import (
"github.com/aptos-labs/aptos-go-sdk"
)
func main() {
client, err := aptos.NewClient(aptos.DevnetConfig)
if err != nil {
panic("Failed to create client: " + err.Error())
}
address := aptos.AccountAddress{}
err = address.ParseStringRelaxed("0xd0f523c9e73e6f3d68c16ae883a9febc616e484c4998a72d8899a1009e5a89d6")
if err != nil {
panic("Failed to parse address: " + err.Error())
}
err = client.Fund(address, 100_000_000)
if err != nil {
panic("Failed to fund account: " + err.Error())
}
}

POST /fund on Devnet:

Terminal window
curl -X POST "https://faucet.devnet.aptoslabs.com/fund" \
-H "Content-Type: application/json" \
-d '{"address":"0xd0f523c9e73e6f3d68c16ae883a9febc616e484c4998a72d8899a1009e5a89d6","amount":100000000}'

A successful response looks like {"txn_hashes":["..."]}. If amount is omitted, the faucet uses its configured default (capped at the maximum mint).

Testnet POST /fund requires a human Google login. The mint page does this for you. To call the API directly, send a Firebase ID token for project aptos-api-gateway-prod (scopes openid, email, profile):

Terminal window
curl -X POST "https://faucet.testnet.aptoslabs.com/fund" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN" \
-H "x-is-jwt: true" \
-H "Content-Type: application/json" \
-d '{"address":"0xd0f523c9e73e6f3d68c16ae883a9febc616e484c4998a72d8899a1009e5a89d6"}'

There is no agent-registration shortcut. See /auth.md for the OAuth discovery documents.