Request testnet coins programmatically, for CI, integration tests, and tooling. Free, keyless, and rate-limited. The coins have no value.
Just sending a user here, say from a wallet's "get testnet coins" button? Link them to a faucet page with their address in ?address= and the claim box arrives pre-filled, and they solve the captcha and click. No integration, just an <a href>:
https://cypherfaucet.com/xmr-stagenet?address=YOUR_ADDRESS
It works on every faucet page and is display-only, so the captcha, validation, and rate limits all still apply on submit.
Use the network slug below in API requests.
| network | coin | payout |
|---|---|---|
xmr-stagenet |
sXMR | 0.01 sXMR |
xmr-testnet |
tXMR | 0.01 tXMR |
ltc-testnet |
tLTC | 0.01 tLTC |
btc-testnet |
tBTC | 0.01 tBTC |
Payout amount, claim window, and balance for each faucet, served from cache so it never hits a node. Add ?network=<slug> to filter to one.
curl https://cypherfaucet.com/api/v1/info
Send one payout. JSON body with the network slug and a destination address; returns the transaction id (and, for Monero, the tx_key so the payment can be proven).
curl -X POST https://cypherfaucet.com/api/v1/claim \
-H 'Content-Type: application/json' \
-d '{"network":"xmr-stagenet","address":"YOUR_ADDRESS"}' Success: {"ok":true,"network":"...","amount":"...","txid":"..."}.
Failures are {"ok":false,"error":"<code>","message":"..."} with a matching HTTP status:
| status | error |
|---|---|
| 400 | invalid_request, unknown_network, invalid_address |
| 405 | method_not_allowed (use POST for /claim) |
| 409 | faucet_empty |
| 429 | rate_limited, ip_rate_limited, daily_cap |
| 503 | node_busy, send_failed, unavailable, faucet_offline |
| 500 | internal_error |
rate_limited includes retry_after (seconds) and next_claim, and sets the Retry-After header.
- One claim per address per claim window, and (behind Cloudflare) one per IP per window, shared with the website. Claiming on the site and via the API count together.
- A faucet-wide daily cap is the overall ceiling.
These are valueless testnet coins, so please don't hammer or hoard. A 429 means wait (respect Retry-After), not retry-in-a-loop.
The defaults cover most projects. If you need higher limits, bulk testnet coins, or a faucet/API integration, get in touch.
If you build the faucet into a tool or show it to your users, a credit is appreciated but never required: a link to cypherfaucet.com, or "Testnet coins via CypherFaucet."
Machine-readable index: /api/v1/ · full reference and source: the repository.