Skip to main content

Sandbox and live

What sandbox does differently, and what it deliberately does not.

Expert Hire developer workflow for Sandbox and live
Build against the same evidence trail the product uses.

Which environment you are in is decided by the key you send, not the URL you call. A ehp_sk_test_ key is sandbox; ehp_sk_live_ is live.

Every response tells you which you got, in the X-EH-Environment header and in livemode on the object. Every webhook carries livemode too.

What is identical

Sandbox runs the same code, the same models and the same response shapes as live. A sandbox that behaves differently is a sandbox that lies to you, so scoring uses the same model and reports have the same fields. What you validate in sandbox is what you get in production.

What is different

SandboxLive
CreditsSeparate monthly quotaYour purchased pool
Candidate emailsNever sentSent
Cloud recordingOffOn
Interview lengthCapped at 5 minutesFull round length
Data retentionPurged after 30 daysRetained

Recording is off because it is the largest cost per interview and an integration test never needs the video back. If you are testing report rendering, use the transcript.

Sandbox is metered

Sandbox is free but not unlimited. Every sandbox interview still runs a real voice agent and real scoring, so each organisation gets a monthly allowance that resets on the first of the month.

Check what is left:

curl https://prep-api.experthire.cloud/v1/usage \
  -H "Authorization: Bearer ehp_sk_test_..."
{
  "object": "usage",
  "environment": "sandbox",
  "livemode": false,
  "credits": {
    "interview": { "remaining": 21, "granted": 25, "used_this_period": 4 }
  },
  "modules": { "interviews": true, "coding": true, "placements": false }
}

Past the allowance you get 402 with code sandbox_quota_exceeded. It never falls through to your live credits, so testing cannot spend what you paid for. Ask us if you need a larger sandbox allowance.

Modules

modules reports which features your organisation has. Read it at boot and hide what is off, rather than discovering a 403 when a user clicks. Anything disabled is reported false rather than omitted, so the surface describes itself.

modules and credits describe your organisation, not the API surface. A true means you hold the product; it does not prove a route exists. Check the API reference before writing the call. Note also that the module key and the credit key differ for Psychometric Test: the gate is modules.psychometric, the pool is credits.psychometric.