GuidesGet started
Test mode
A test key (sa_test_…) runs the same API against test data. Test envelopes are signed and sealed exactly like live ones, but nobody is emailed or texted and nothing is billed.
What’s different with a test key
| Live key | Test key | |
|---|---|---|
| Envelopes | livemode: true | livemode: false |
| Emails and texts to recipients | Sent | Never sent — sign through a signing URL |
| Billing | Counts toward your plan | Never billed or counted; no plan needed to send |
| Signing, sealing, audit trail | The same: test envelopes are signed, sealed and hash-chained like live ones | |
| Webhook endpoints | Get live events | Get test events only |
| Templates and the account | Shared: they have no mode | |
| KeepAnything (files, folders, sharing) | Available | 403 test_mode_not_supported |
| Rate limit | 300 a minute (60 for heavy calls) | 30 a minute |
Test and live never meet
A test key sees and changes only test envelopes and test webhook endpoints; a live key only live ones. Lists leave the other mode out, and any id from the other mode answers 404 not_found — its documents, signing URLs, deliveries and audit trail included. Webhook endpoints take the mode of the key that created them.
Idempotency keys are per mode too: reusing a live call’s Idempotency-Key with a test key gets 409 idempotency_key_reused.
Signing a test envelope
Send the envelope as usual, then create a signing URL for whoever’s turn it is and open it in a browser. Each URL is valid for 5 minutes; make a new one when you need it.
curl -X POST https://api.skanything.io/v1/envelopes/env_4f9c2d7e1b8a4c6f9e2d3b7a1c5e8f02/recipients/rcp_1a7c3e9b5d2f4a8c6e0b9d1f3a5c7e2b/signing_url \ -H "Authorization: Bearer $SA_API_KEY"
Test keys and scopes
Test keys take the envelope, template and webhook scopes, or Full access. They can’t be given files:read, files:write or sharing:write: KeepAnything has no test mode, so build and try file integrations with a live key on a test folder.