Reference

Error codes

Every error code the API can return, collected from the API source code.

View as Markdown

See errors for the response shape and how to handle each type. The list includes codes from the hosted flow and dashboard APIs; the public API returns a subset. Messages are for developers and may change; branch on type and code.

TypeHTTP statusCodes
invalid_request40064
authentication4015
permission40315
not_found40412
conflict40917
idempotency4092
rate_limit4293
provider_unavailable5032
internal5002

invalid_request (400)

CodeMessage
address_incompleteComplete the address fields
capability_not_allowed{capability} is only available in KYB workflows
capability_unsupported{capability} is not supported for {country}
challenge_expiredStart the selfie step again
challenge_requiredchallenge_id is required
challenge_usedStart the selfie step again
code_expiredThe code has expired. Request a new one.
consent_firstThe consent step must be first
consent_incompleteAll purposes must be accepted
consent_outdatedThe consent notice changed — reload and read it again
consent_requiredWorkflows must start with a consent step
corrupt_imageThe image could not be read
country_mismatchWorkflow {id} verifies {country}
country_requiredcountry is required for generic check {key}
documents_missingMissing: {missing}
documents_required{key}: list at least one document
duplicate_documentDocument {type} is listed twice
duplicate_step_keyDuplicate step key {key}
empty_fileThe file is empty
face_match_reference_missingface_match_against references {ref}, which is not in the workflow
file_requiredfile is required
file_too_largeFiles must be 10 MB or smaller
https_requiredWebhook URLs must use https
invalid_challengeRequest a new code
invalid_doc_typeChoose a supported document
invalid_idempotency_keyIdempotency-Key is too long
invalid_originInvalid origin {origin}
invalid_purposeUnknown upload purpose
invalid_retentionretention_days must be between 30 and 3650
invalid_roleRole must be one of {allowed}
Unknown role
invalid_value{label}: {reason}
invalid_workflowWorkflow definition is invalid
malware_detectedThe file was rejected by the virus scanner
method_requiredChoose one of: {methods}
multipart_requiredSend multipart/form-data with a "file" field
name_requiredEach person needs a name
name is required
no_changesNothing to correct
no_test_dataThis step has no test data; complete it on screen
not_a_consent_stepNot a consent step
not_an_otp_stepNot an OTP step
persons_requiredAdd at least one person
private_urlWebhook URLs must be publicly reachable
reason_requiredChoose why the check is rejected
redirect_not_allowedredirect_url origin {origin} is not allowlisted
related_workflow_requiredrelated_persons steps need related_workflow_id
selfie_requiredA selfie is required
session_required{check_key} needs a hosted session (evidence or liveness)
step_not_configuredStep has no check
steps_incompleteComplete these steps first: {incomplete}
steps_requiredChoose the steps to redo
too_many_personsAt most 25 related persons
too_many_projectsAn organization can have up to {max_projects} projects — ask us at [email protected] for more
unknown_checkUnknown check {check} ({country})
unknown_documentNot requested: {unknown}
unknown_evidenceUpload the file again
unknown_field{key} is not a field of this document
unknown_method{capability} has no method {method} in {country}
No method {method}
unknown_providerProvider {unknown} is not registered (add its definition and credentials first)
unsupported_check{key} is not available for {country}
unsupported_countryNo country pack for {country}
No country pack for {country}…
unsupported_file_typeUpload a JPEG, PNG, WebP, PDF, ZIP or XML file
use_dedicated_endpointUse the consent/OTP endpoints for this step
workflow_type_immutabletype and country cannot change between versions
wrong_codeThat code is not correct

authentication (401)

CodeMessage
invalid_api_keyInvalid or revoked API key
missing_api_keyProvide a secret API key: Authorization: Bearer sk_…
missing_session_tokenProvide a session token
not_signed_inSign in required
token_expiredSession token expired or invalid

permission (403)

CodeMessage
access_requests_closedOKYC is not taking access requests right now
email_not_verifiedVerify your email address before creating live keys — check your inbox for the link
insufficient_roleOnly an owner can change or remove an owner
Only an owner can invite another owner
Only an owner can make someone an owner
Only owners and admins can remove members
Requires one of: {allowed}
invalid_signatureLink expired or invalid
invitation_email_mismatchThis invitation is for a different email address
ip_not_allowedThis API key cannot be used from this IP address
live_key_requires_adminOnly admins can create live keys
no_tenantSelect or create a project first
not_a_memberYou are not a member of the organization that owns this project
not_correctableOnly data read from uploaded documents can be corrected; government-verified results are locked
not_manualOnly manually verified checks can be confirmed; registry results are locked
override_requires_adminOnly admins can override a final decision
sandbox_onlyOnly available for test sessions
test_mode_onlySwitch to Test mode to create sessions from the dashboard
Switch to Test mode to try a draft
two_factor_requiredTurn on two-factor authentication to continue — it is required for owners and admins

not_found (404)

CodeMessage
api_key_not_foundapi key not found
check_not_foundcheck not found
evidence_not_foundevidence not found
invitation_not_foundNo pending invitation with that id
This invitation does not exist
member_not_foundNo such member on this team
project_not_foundproject not found
screening_hit_not_foundscreening hit not found
session_not_foundsession not found
step_not_foundstep not found
webhook_endpoint_not_foundwebhook endpoint not found
workflow_not_foundworkflow not found
workflow_version_not_foundworkflow version not found

conflict (409)

CodeMessage
already_a_memberThis person is already on the team
consent_requiredConsent must be given first
decision_finalThis session is {status}; data can only be corrected before a final decision
This session is {status}; manual checks can only be reviewed before a final decision
integration_not_configuredThis workflow cannot run live yet — {blockers}. Remove the step or configure the integration.
invitation_expiredThis invitation has expired — ask for a new one
invitation_usedThis invitation has already been used or was revoked
last_ownerA team needs at least one owner — make someone else an owner first
manual_checks_pendingConfirm or reject the manually verified checks first: {pending}
not_decidableSession is {status}; decisions are possible in review (or as an override of a final decision)
not_waitingOnly KYB sessions waiting for related persons can be advanced
session_closedSession is {status}
This verification is {status}
session_expiredThis verification link has expired
session_processingChecks are still running; try again in a moment
session_submittedThis verification was already submitted
step_completedThis step is already complete
step_processingThis step is being verified
too_many_attemptsNo attempts left for this step

idempotency (409)

CodeMessage
idempotency_in_progressA request with this Idempotency-Key is in progress
idempotency_key_reusedThis Idempotency-Key was used with a different request

rate_limit (429)

CodeMessage
otp_rate_limitedToo many codes requested. Try again in a few minutes.
too_many_attemptsToo many wrong attempts. Request a new code.
too_many_requestsToo many requests. Try again in an hour.

provider_unavailable (503)

CodeMessage
no_providerNo provider is configured for {check_key}
scanner_unavailableFile scanner unavailable: {message}

internal (500)

CodeMessage
internal_errorAn internal error occurred
tenant_create_failedCould not create the organization

On this page