Skip to content

API reference

Base URL: https://verify.zetaid.com/api/v1 — the verification portal of the ZetaID cloud. If we gave you another host (your own branded host, or another region), use that one; the paths are the same.

Authentication: your API key in the X-SDK-Key header. Requests from a web page (with an Origin header) are refused.

Format: JSON in and out, UTF-8. Times are RFC 3339 in UTC.

The OpenAPI description of these calls and the webhooks: /openapi.yaml.

POST /api/v1/verifications

Body fieldTypeRequired
return_urlstring (URL)noWhere the person goes when done. Nothing is added to it.
extra_dataobjectnoYour own reference; returned in webhooks and GET. No personal data.
flowstring[]noSteps for this verification only (default: the key’s flow).
module_overridesobjectnoPer-module settings, e.g. {"form_data": {"values": {…}, "locked": […]}}.

Body size: at most 64 KB.

201 Created

FieldType
verification_idstring (UUID)The verification’s id.
urlstring (URL)The link for the person.
flowstring[]The steps it will go through.
due_atstring (time)The link works until then.
expires_atstring (time)The captured images are deleted then.

Errors: 401 SDK_KEY_INVALID, 402 CREDITS_EXHAUSTED, 403 SERVER_SIDE_ONLY, 413 BODY_TOO_LARGE, 422 FLOW_INVALID, 422 RELYING_PARTY_INACTIVE, 502 BACKEND_UNREACHABLE, 503 SYSTEM_TEMPORARILY_UNAVAILABLE, 500 GENERATE_FAILED.

GET /api/v1/verifications/{verification_id}

200 OK

FieldType
verification_idstring
statusstringSee statuses.
terminalbooleanThe checks have finished.
reason_codestring | nullWhy it ended this way (e.g. DOCUMENT_EXPIRED, COMPLETION_TIMEOUT).
exportobject | nullThe result (The result); null before the checks ran and after personal-data retention.
extra_dataobject | nullWhat you sent at creation.
created_atstring (time)
updated_atstring (time)Last status change.

Errors: 401 SDK_KEY_INVALID, 403 SERVER_SIDE_ONLY, 404 VERIFICATION_NOT_FOUND (unknown, or another organization’s), 502 BACKEND_UNREACHABLE.

Every error has the same shape:

{ "error": { "code": "FLOW_INVALID", "message": "optional detail" } }

Branch on code; message is for logs. All codes: Errors.