Skip to main content
Sandbox mode lets you build and test your integration against the deepidv API using realistic dummy data — no tokens consumed, no real sessions created.

How It Works

Sandbox mode is controlled by a special Sandbox API Key. When you make requests with a sandbox key, the API returns realistic test data instead of hitting real services. This lets you:
  • Validate your integration logic end-to-end
  • Test how your app handles different session statuses (verified, rejected, pending, etc.)
  • Inspect the full response shape for every endpoint
  • Develop locally without consuming tokens or affecting production data
Sandbox keys behave identically to live keys for authentication — the only difference is what the API returns.

Generating a Sandbox Key

Sandbox API keys are not created automatically. You need to generate one from the Admin Console:
1

Open API Keys

Navigate to Settings → API Keys in the Admin Console.
2

Generate a Sandbox Key

Find the Sandbox API Key card and click Generate. Your sandbox key will appear — copy it somewhere safe.
3

Use it like a regular key

Pass the sandbox key in the x-api-key header, exactly like a live key. The API handles the rest.
Sandbox keys follow the same security rules as live keys — keep them server-side and never expose them in frontend code.

What You Can Do

GET requests — realistic test data

All GET endpoints under /v1/sessions, /v1/financial, and /v1/workflows return realistic dummy data. You control which scenario you get by using well-known test IDs.

POST, PATCH, PUT, DELETE — blocked

Write operations are not available in sandbox mode. Any non-GET request to a sandboxed route returns:
{
  "error": "This is a sandbox API key. Use a live API key to create or modify resources."
}
This is intentional — sandbox mode is for reading and validating response shapes, not creating real records.

Other routes

Endpoints outside of sessions, financial, and workflows (e.g., /health) pass through normally.

Well-Known Test IDs

Use these IDs as the :id parameter in GET requests to control which scenario you receive.

Sessions — GET /v1/sessions/:id

Test IDStatusProgressAnalysis Data
test_verifiedVERIFIEDCOMPLETEDFull — includes all analysis fields (ID analysis, face match, PEP/sanctions, adverse media, title search, document risk, custom form, secondary/tertiary ID)
test_rejectedREJECTEDCOMPLETEDBasic — ID analysis and face match with failing scores
test_submittedSUBMITTEDCOMPLETEDBasic — ID analysis and face match (awaiting review)
test_pendingPENDINGPENDINGNone
test_voidedVOIDEDCOMPLETEDNone
Any other IDRandomMatchingVaries
Use test_verified to see every possible field in the response — it’s the “everything” scenario with all workflow steps, uploads, and analysis data populated.

Financial — GET /v1/financial/:id

Test IDStatusStatement Data
test_completedCOMPLETEDFull bank statement with accounts, transactions, holder info
test_pendingPENDINGNo statement data
Any other IDRandomVaries

Workflows — GET /v1/workflows/:id

Test IDSteps
test_workflowFull workflow with all 11 steps (ID verification, face liveness, age estimation, PEP/sanctions, adverse media, bank statement upload, document upload, title search, custom prompt, custom form, AI bank statement analysis)
Any other IDBasic workflow with 2 steps (ID verification, face liveness)

List Endpoints

List endpoints return multiple records without needing a test ID:
EndpointReturns
GET /v1/sessions5 sessions (one per status), lightweight analysis data
GET /v1/financial2 bank statements (one completed, one pending), no statement body
GET /v1/workflows2 workflows (summary only — id, name, created_at)
All list responses return next_token: null (no pagination in sandbox).

Example

Here’s a quick example testing the full session response:
curl -X GET https://api.deepidv.com/v1/sessions/test_verified \
  -H "x-api-key: YOUR_SANDBOX_API_KEY"

Sandbox vs. Live

Sandbox KeyLive Key
GET requestsReturns test dataReturns real data
POST/PATCH/PUT/DELETEReturns 403 errorCreates/modifies real resources
Token consumptionNoneTokens deducted per operation
Data persistenceNo data is storedSessions and records are persisted
AuthenticationSame x-api-key headerSame x-api-key header