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 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-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.