> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0xmonaco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FaucetService

> Testnet token minting

Package: `monaco.api.faucet`

Source: `protos/api/faucet.proto`

Use `FaucetService` to mint testnet tokens and read the faucet quota for an authenticated user.

```protobuf theme={null}
service FaucetService {
  rpc MintTokens(MintTokensRequest) returns (MintTokensResponse);
  rpc GetFaucetInfo(GetFaucetInfoRequest) returns (GetFaucetInfoResponse);
}
```

## Notes

* Faucet access is for testnet workflows.
* The quota is per wallet and application: `MintTokens` enforces the calling application's quota, and `GetFaucetInfo` counts and lists only the calling application's requests.
* Both RPCs reject delegated-agent sessions with `PERMISSION_DENIED` before reading or changing the quota.
* `GetFaucetInfo` returns `UNAUTHENTICATED` without a session, `PERMISSION_DENIED` for a delegated-agent session, `RESOURCE_EXHAUSTED` when the read budget is exhausted (retry after `RetryInfo`), `INTERNAL` when the quota history cannot be read, and `UNAVAILABLE` when the quota configuration is unavailable (safe to retry).
* `MintTokensRequest` requires `turnstile_token`, a Cloudflare Turnstile captcha token — a non-optional field, listed in the message's `required` schema. Runtime enforcement is governed by the `faucet_captcha_enforced` flag, which is on by default and fails closed: while it is on, a mint carrying no token or an invalid one is rejected, and an unconfigured verifier makes the endpoint temporarily unavailable rather than minting unchecked. An operator can disable enforcement for an environment that has no Turnstile verifier, in which case the token is not consulted — so always solve the captcha and send one.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.