Sandbox
Sandbox mode is GA on production as of v0.99.6.1. You test with a sandbox key (pk_test_*) against the same base URLs as live — no separate environment or access request needed.
There are two ways to try the Integration API without touching real data.
Sandbox mode (recommended)
Every key is either live (pk_live_*) or sandbox (pk_test_*). A sandbox key runs the exact same API on the same base URL, but its writes create throwaway data that is never linked to a real published passport, and it has its own rate-limit quota.
- Mint a
pk_test_key in Settings → API Keys. - Send
X-Traceable-Mode: teston every request. If the header is missing or wrong, the request fails loud with400 MODE_HEADER_MISMATCH— it never silently writes to the wrong place. - The GDPR endpoints are live only; a sandbox key there returns
403 CROSS_MODE_DENIED.
See Authentication → Sandbox mode.
When you are ready for real passports, mint a pk_live_ key and drop the X-Traceable-Mode header. The mode is the key, not the base URL, so nothing else changes.
All sandbox testing runs against the production base URL with a pk_test_ key — there is no separate public pre-release environment to point your integration at.
What testing is good for
- Validating your field mapping against the Annex XIII gate
- Testing error handling (lock conflicts, signature errors,
SUBMIT_BLOCKED) - Confirming your HMAC signing implementation before going live
- CI/CD integration testing
Not a mock
Sandbox mode is not a stub. It runs the same API code as live, including real HMAC signature verification, idempotency enforcement, Annex XIII gate evaluation, and document magic-byte validation. If your integration passes in sandbox mode, it behaves the same way live (subject to rate limits and plan entitlements).