Test Mode

How to test your integration safely today — and what sandbox keys do (and don't) do yet.

sk_test_···
sk_live_···
Same base URL — only the key prefix changes
Important: sandbox keys currently run against the live API. A fully simulated test mode is in development. Until it ships, transactions created with an sk_test_ key are real: they create real payment addresses from your wallet, count toward your monthly plan limit, and any funds a customer sends move on-chain for real.

Your sandbox key is in Dashboard → API Integration. It starts with sk_test_ and exists so your development environment never holds your production credential — you can rotate it at any time without touching live integrations.

How to Test Safely Today

Create transactions for a small amount and pay them from a wallet you control — funds land in your own wallet, so a completed test only costs the network fee
To test the API contract without paying, create a transaction, inspect the response, then let it expire or cancel it — no funds move
Webhooks fire on real state changes (payment.completed, payment.expired, …) — an expired small test exercises your handler end-to-end
Use a low-fee coin (LTC, DOGE, DASH) for paid tests to keep network costs near zero

Create a Transaction with Your Sandbox Key

POST  /transactions/create
curl -X POST https://api.griffnode.com/v1/transactions/create \
  -H "Authorization: Bearer sk_test_YOUR_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "crypto": "LTC",
    "amount": 1.00,
    "currency_fiat": "USD"
  }'

The request and response format is identical for both key types. Visit the payment_url in the response to see exactly what your customer sees.

Sandbox vs Live — Current Behavior

Feature SANDBOX sk_test_ LIVE sk_live_
Request/response format Identical Identical
Transactions are real (on-chain) Yes (for now) Yes
Counts toward monthly limit Yes (for now) Yes
Webhooks fire Yes Yes
Safe to keep in dev/CI environments Yes — rotate freely No — production only
Simulated test mode is coming. When it ships, sk_test_ transactions will auto-confirm without on-chain payments and stop counting toward plan limits — this page will be updated. Until then, treat every transaction as live.
Switch keys before going live. Replace sk_test_ with sk_live_ in your environment variables. Never use sandbox keys in production code.