Use the sandbox to build cash integrations without KYB, real funds, or live card issuance. Sandbox teams use simulated provisioning, simulated cards, and test spending keys that start with din_test_.
#What sandbox mode means
DINO_SANDBOX_MODE=true tells a Dino deployment to provision developer-safe resources:
- a team wallet with test USD balance
- a default agent account / policy profile
- a simulated proxy card
- a default spending key that starts with
din_test_ - access to the USD test-money faucet
Production deployments reject faucet calls, and live keys cannot use the faucet.
#Key prefixes
| Prefix | Use | Sandbox behavior |
|---|---|---|
din_test_ | Dino spending key for cash sandbox calls | Accepted by /v1/spend-requests, /v1/checkout/intents, /v1/balance, and /v1/sandbox/faucet |
din_live_ | Dino spending key for live cash or crypto calls | Rejected by the faucet |
dba_ | Team API key for developer / workspace APIs | Use for team-scoped reads and approval actions when a route requires it |
For the full credential model, see Credential guide.
#Add test money
Set your API URL and sandbox key:
export DINO_API_URL="https://api.dino.id"
export DINO_SPEND_KEY="din_test_..."
Then call the faucet:
curl -sS -X POST "$DINO_API_URL/v1/sandbox/faucet" \
-H "Authorization: Bearer $DINO_SPEND_KEY" \
-H "Content-Type: application/json" \
-d '{"amount_cents":100000}'
The faucet adds USD test balance only. It does not mint crypto, bridge assets, or fund a Solana wallet.
#Cash test flow
-
Check balance:
curl -sS "$DINO_API_URL/v1/balance" \ -H "Authorization: Bearer $DINO_SPEND_KEY" -
Create a governed spend request:
curl -sS -X POST "$DINO_API_URL/v1/spend-requests" \ -H "Authorization: Bearer $DINO_SPEND_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ "amount_cents":1299, "currency":"usd", "merchant_name":"OpenAI", "reason":"Sandbox integration test" }' -
If the response is
needs_approval, approve or decline it in the dashboard, then reconcile from webhooks orGET /v1/spend-requests/:id. -
For just-in-time card credentials, follow Purchase Intents API after funding the sandbox wallet.
#Crypto testing
Crypto payout testing uses devnet / testnet wallets and external chain faucets, not the Dino USD faucet. Start with Crypto devnet guide, then use Crypto Payouts API — Solana USDC for the live REST shape.
#Runnable examples
- Agent spend quickstart — cash balance + spend request
- Agent integration starter — checkout and tool-runner boundary
- Crypto devnet guide — external faucets and Solana setup