Each workspace is in sandbox or production, switched at the top of Workspace settings. New workspaces start in sandbox. In sandbox the dashboard shows sandbox verifications, and the keys, webhook endpoints and publishable key it gives you are sandbox ones. Switch to production when you go live.
A sandbox key (kyc_sandbox_...) works like a secret key, but its sessions are simulated: nobody photographs a document, and you choose how each one ends. Use one while you build your integration and in automated tests. A key keeps its mode: a production key keeps working if the workspace goes back to sandbox.
| Live key | Sandbox key | |
|---|---|---|
| Sessions | Real: document and selfie on a phone | Simulated: you choose the outcome |
| Webhooks | To production endpoints | To sandbox endpoints only, with "sandbox": true |
| Verify buttons | pk_live_... | pk_sandbox_... |
| Sees the other mode's sessions | No | No |
| Fraud memory | Compared and remembered | Never |
| Dashboard | Shown in production | Shown in sandbox |
| Kept | Your retention period | Deleted after 7 days |
link Choosing the outcome
Create the session as usual. Then either open its start_url, which shows a page with one button per outcome, or end it from your code with Simulate a session:
| outcome | status | reasons | Webhook event |
|---|---|---|---|
clear | clear | none | session.completed |
consider | consider | DOC_CUT_OFF | session.review_required |
rejected | rejected | INJ_REENCODED | session.completed |
error | error | none | session.error |
A consider sandbox session can be reviewed in the dashboard, so you can test the review webhook too.
References
The same reference in the sandbox and live is two different applicants: testing with your real customer IDs never touches their live verifications.