Test Mode
How to test your integration safely today — and what sandbox keys do (and don't) do yet.
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-endUse 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.