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).
| Network | Endpoint | How to mint |
|---|---|---|
| Devnet | https://faucet.devnet.aptoslabs.com | SDKs, CLI, or POST /fund with no auth |
| Testnet | https://faucet.testnet.aptoslabs.com | Mint page, or POST /fund with a Google ID token |
| Mainnet | — | Not 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.
Using the faucet in a wallet
Section titled “Using the faucet in a wallet”Most wallets, such as Petra, have a Devnet faucet button. See the Aptos wallets directory.
Using the faucet in the Aptos CLI
Section titled “Using the faucet in the Aptos CLI”After CLI setup, fund an account on Devnet:
aptos account fund-with-faucet --account 0xd0f523c9e73e6f3d68c16ae883a9febc616e484c4998a72d8899a1009e5a89d6 --amount 100000000On Testnet, use the mint page instead of this command.
Using the faucet in the TypeScript SDK
Section titled “Using the faucet in the TypeScript SDK”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.
Using the faucet in the Python SDK
Section titled “Using the faucet in the Python SDK”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, )Using the faucet in the Go SDK
Section titled “Using the faucet in the Go SDK”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()) }}Calling the faucet without an SDK
Section titled “Calling the faucet without an SDK”POST /fund on Devnet:
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: Google sign-in
Section titled “Testnet: Google sign-in”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):
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.