Developers
Faucet
Request testnet BTSG tokens from the Crescendo-1 faucet with form and API reference.
The Crescendo-1 faucet distributes free testnet BTSG tokens so you can test transactions, staking, and governance. You can request tokens using the form below or directly via the API.
Request Tokens
Testnet Faucet
Get free BTSG tokens for testing
API Usage
If you prefer to interact with the faucet programmatically, use the REST API at https://faucet.testnet.bitsong.io.
Submit a faucet request
Send a POST request with your BitSong address:
curl -X POST https://faucet.testnet.bitsong.io/request \
-H "Content-Type: application/json" \
-d '{"address": "bitsong1yourtestnetaddresshere"}'
The response includes a request ID:
{ "id": "abc-123" }
Poll for status
Use the request ID to check the status:
curl https://faucet.testnet.bitsong.io/status/abc-123
The response indicates the current state:
{ "status": "complete", "txHash": "ABCDEF..." }
:::
async function requestTokens(address) {
// 1. Submit the faucet request
const { id } = await fetch('https://faucet.testnet.bitsong.io/request', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ address })
}).then(res => res.json())
// 2. Poll for status
while (true) {
await new Promise(resolve => setTimeout(resolve, 3000))
const result = await fetch(
`https://faucet.testnet.bitsong.io/status/${id}`
).then(res => res.json())
if (result.status === 'complete') {
console.log('Tokens sent! Tx:', result.txHash)
return result
}
if (result.status === 'failed') {
throw new Error(result.error || 'Faucet request failed')
}
}
}
requestTokens('bitsong1yourtestnetaddresshere')
::
API Reference
Endpoints
| Method | Endpoint | Description |
|---|---|---|
POST | /request | Submit a new faucet request. Body: { "address": "bitsong1..." } |
GET | /status/:id | Check the status of a faucet request |
Status Values
| Status | Description |
|---|---|
pending | Request received, waiting to be processed |
complete | Tokens have been sent successfully |
failed | Request failed — see the error field for details |
Troubleshooting
Make sure your address starts with bitsong1 and is a valid Bech32 address. You can verify your address with:
import { fromBech32 } from "@cosmjs/encoding"
fromBech32("bitsong1youraddress") // throws if invalid
The faucet may be experiencing high demand. Wait a few minutes and try again. If the issue persists, check the BitSong community channels for faucet status updates.
After a successful faucet request, it may take a few seconds for the tokens to appear. Verify your balance with:
const balance = await client.getBalance("bitsong1youraddress", "ubtsg")
console.log(balance)