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 once paid, 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.