> For a complete index of Agora Finance documentation, fetch https://docs.agora.finance/llms.txt # Sandbox > Documentation for the AUSD stablecoin and Agora's APIs. ## Docs - [Quickstart](https://docs.agora.finance/api/sandbox/quickstart.md): From an API key to a settled testnet mint in about five minutes. - [Testnet Tokens](https://docs.agora.finance/api/sandbox/testnet-tokens.md): The chains, tokens, and faucets the sandbox uses. - [Authentication](https://docs.agora.finance/api/sandbox/authentication.md): How to authenticate against the sandbox. - [On-Chain Deposits](https://docs.agora.finance/api/sandbox/on-chain-deposits.md): Testnet deposits to stablecoin routes pay out on testnet. - [Simulated Wires](https://docs.agora.finance/api/sandbox/simulated-wires.md): Test fiat mints and redeems without moving US dollars. - [Overview](https://docs.agora.finance/api/sandbox/endpoints/accounts/overview.md): The bank accounts and wallets your funds move through. - [Overview](https://docs.agora.finance/api/sandbox/endpoints/routes/overview.md): Reusable mint and redeem paths, and how they settle in the sandbox. - [Overview](https://docs.agora.finance/api/sandbox/endpoints/transactions/overview.md): Settled transactions and their per-leg detail. - [Errors](https://docs.agora.finance/api/sandbox/errors.md): HTTP status codes, error codes, and recommended handling. ## API Docs - Endpoints > Auth [Create a Session Token](https://docs.agora.finance/api/sandbox/endpoints/auth/token.md) - Endpoints > Metrics [Get Aggregate and Per-Chain Metrics](https://docs.agora.finance/api/sandbox/endpoints/metrics/get.md) - Endpoints > Metrics [Get Aggregate Total Supply](https://docs.agora.finance/api/sandbox/endpoints/metrics/totalsupply.md) - Endpoints > Metrics [Get Aggregate Circulating Supply](https://docs.agora.finance/api/sandbox/endpoints/metrics/circulatingsupply.md) - Endpoints > Accounts [List Accounts](https://docs.agora.finance/api/sandbox/endpoints/accounts/get.md) - Endpoints > Accounts [Get an Account by ID](https://docs.agora.finance/api/sandbox/endpoints/accounts/getbyid.md) - Endpoints > Accounts [Register an Account](https://docs.agora.finance/api/sandbox/endpoints/accounts/create.md) - Endpoints > Accounts [Update an Account](https://docs.agora.finance/api/sandbox/endpoints/accounts/update.md) - Endpoints > Routes [List Routes](https://docs.agora.finance/api/sandbox/endpoints/routes/get.md) - Endpoints > Routes [Get a Route by ID](https://docs.agora.finance/api/sandbox/endpoints/routes/getbyid.md) - Endpoints > Routes [Create a Route](https://docs.agora.finance/api/sandbox/endpoints/routes/create.md) - Endpoints > Transactions [List Transactions](https://docs.agora.finance/api/sandbox/endpoints/transactions/list.md) - Endpoints > Transactions [Get a Transaction by ID](https://docs.agora.finance/api/sandbox/endpoints/transactions/getbyid.md) - Endpoints > Sandbox Tools [CTK Faucet](https://docs.agora.finance/api/sandbox/endpoints/sandbox-tools/faucet.md) - Endpoints > Sandbox Tools [Simulate a Wire](https://docs.agora.finance/api/sandbox/endpoints/sandbox-tools/wires.md) ## OpenAPI Specification The raw OpenAPI 3.1 specification for this API is available at: - [OpenAPI JSON](https://docs.agora.finance/openapi.json) - [OpenAPI YAML](https://docs.agora.finance/openapi.yaml) > **Note:** This page contains both a page directory (above) and the landing page content (below). The page directory is generated for agent use and does not appear on the landing page. > For a complete index of Agora Finance documentation, fetch https://docs.agora.finance/llms.txt # Sandbox Overview [← Switch to the Production API](/api) > **Warning** > > **This is the sandbox.** It runs on testnets only. **Never send real money or real tokens to an address or bank account the sandbox returns.** > > The sandbox is subject to the Beta Features section of our [Terms of Use](https://static.agora.finance/termsofuse.pdf). Use the sandbox to try Agora's APIs before you have a production account, or to test changes without touching your live integration. It runs the same `/v0` endpoints as production, so the code you write here carries over with a few config changes. See [Move to production](#move-to-production). > **Tip** > > Agora sets up your sandbox organization and sends you its API key. To request access, [fill out this form](https://qkrgh.share.hsforms.com/2PY7mSFohRvCxAuBD7resPw). Download Sandbox OpenAPI spec For AI agents: this is the sandbox section of the docs. The sandbox OpenAPI contract is served live and unauthenticated at `https://api.sandbox.agora.finance/v0/openapi.json`. The sandbox runs on testnets only. Its chain and currency values differ from production. ## Base URL All sandbox endpoints are served from `https://api.sandbox.agora.finance`. ## Chains and currencies | | Sandbox values | | --------------------- | ------------------------------------ | | Chains | `avalanche-fuji`, `ethereum-sepolia` | | Wallet address format | `ethereum` | | Tokens | `ausd`, `ctk` | | Fiat | `usd`, simulated only | Anything else is rejected with a `400`. See [Testnet Tokens](/api/sandbox/testnet-tokens) for addresses and faucets. **No US dollars move in the sandbox.** Bank accounts and routes accept `usd` so you can build fiat flows, but the sandbox never sends or receives a wire. It [simulates](/api/sandbox/simulated-wires) them instead. Any bank details it returns are fake. **Never send real money to them.** > **Error** > > **Tokens sent to the wrong place are lost.** Sandbox deposit addresses are keyless, so no one can return them. Send only the route's source token. Send faucet CTK to your own wallet first, never straight to a deposit address. ## Conventions A few conventions hold across the API: * **Monetary values are decimal strings, not numbers.** Amount fields are strings like `"987654321.654321"`. AUSD carries six decimals of precision; representing an amount as a JSON number would silently truncate it. Parse with a decimal library (`decimal.Decimal` in Python, `BigNumber.js` in JavaScript, `rust_decimal` in Rust). This follows industry standard practice (Circle, Stripe). * **Every response carries a `Request-Id` header.** Capture it in your logs — it's how Agora support traces a specific request end-to-end. Endpoint-specific response details — such as the per-chain shape and partial-state behavior of `/v0/metrics` — are documented on each endpoint under [Endpoints](/api/sandbox/endpoints). ## Filtering list endpoints `GET /v0/accounts`, `GET /v0/routes`, and `GET /v0/transactions` accept filters alongside `cursor` and `limit`. The grammar is the same on all three: * **Filters combine with AND.** Every filter you send must hold for a record to appear. * **Multi-value filters take one comma-separated parameter**: `?network=avalanche-fuji,ethereum-sepolia`, not a repeated `?network=avalanche-fuji&network=ethereum-sepolia`, which is rejected. * **Date ranges use dotted bounds**: `.gte` / `.gt` for the lower bound, `.lte` / `.lt` for the upper, as in `?createdAt.gte=2026-03-01T00:00:00Z&createdAt.lt=2026-04-01T00:00:00Z`. Timestamps are ISO-8601 and must carry a zone (`Z` or an offset). The exclusive bounds let you select a period without naming its last instant. * **A filter is never silently dropped.** An unknown parameter, an unknown range operator, a value outside the accepted set, an empty value, two bounds on the same side, or a range nothing can satisfy all return `400 parameter_invalid` with the offending parameter named in `context.issues`. A filter that is valid but matches nothing returns `200` with an empty `data` array. ## Move to production > **Info** > > Before you can get production API keys, your organization needs to complete Agora's onboarding, including KYB and KYC checks. When you're ready for production, change three things: 1. Point your client at `https://api.agora.finance`. 2. Swap in a production API key, created from the [Agora dashboard](https://app.agora.finance). 3. Replace sandbox chain and currency values with their production equivalents, such as `ethereum-sepolia` to `ethereum` and `ctk` to `usdc`.