Every error VerifyHuman returns to an integration, grouped by area, with what
to do about it.
Response shapes
Most endpoints use:
{"error":"Invalid API key","status":"ERROR","hint":"Generate a valid API key from your dashboard"}
Some add code (VerifyAge policy errors), error_type (Team API),
error_code (rate limiting) or retryable. Mobile endpoints use
{"success": false, "code": "...", "message": "...", "retryable": false}.
Verification steps that are not finished answer 200 with
"status": "ACTION_REQUIRED".
Retryable or not
HTTP
Retry?
Billed?
200ACTION_REQUIRED
After completing the required step
No
200UNAVAILABLE
Yes, later
No
400, 401, 403, 404, 409, 422
No — change the request or configuration
No
402
No — add credits first
No
426
No — use a flow that supports liveness
No
429
Yes, after Retry-After
No
5xx
Yes, with exponential backoff
No
Authentication and access
HTTP
Error
Meaning
400
Missing client key
/api/verify was called without clientKey
401
Missing API key
No key sent
401
Invalid API key / Invalid client key
Unknown or deactivated key
401
client_secret_required / Missing client secret
The endpoint needs Authorization: Bearer <client_secret>
401
Authentication required
GET /api/status/{id} or the receipt endpoint without a credential
403
ScopeNotAuthorized
The key's scopes exclude the product
403
Product not available on your plan
Your plan excludes the product
403
Domain not allowed
Browser request from a site not in the key's allowed domains
403
API key configuration error
The key is misconfigured; create a new one
Billing and rate limits
HTTP
Error
Meaning
402
Insufficient credits. Required: N, Available: M
Not enough credits; nothing charged
402
Insufficient-credits message with a verification_id
The charge could not be made after the check ran; the verification is recorded as an error and not billed
Minimum age outside 18–65; body includes supported_range
400
min_age_invalid
Minimum age is not a whole number
400
min_age_required
An explicit minimum age is required
403
policy_reference_invalid
policy_ref/hosted_token is not an active VerifyAge page of this key (other key, account, environment or product, or expired)
403
policy_reference_conflict
policy_ref and hosted_token name different pages
403
policy_reference_required
No server-owned policy and no client secret
409
page_policy_invalid
The page's stored minimum age is invalid; it fails closed until reconfigured
POST /api/v1/verify-age/validate answers 200 with valid and a reason:
valid, wrong_product, environment_mismatch, not_passed,
age_evidence_missing, age_requirement_not_met,
age_requirement_insufficient. An unknown or foreign verification is
404 verification_not_found. See VerifyAge.
Test keys are refused on native mobile verification endpoints
5xx
SYSTEM_ERROR
Temporary failure; retry
Verification reason codes
Failed or review results carry safe reason codes (in API responses as a reason
field, and in receipts as reason_codes). These are the codes that may be
shown to end users: