Skip to content

Quickstart

  1. Create an API key. In the operator console, open API keys → New API key. Give it a name (for example Shop – production) and the URL where your server receives webhooks. The console shows the API key (vk_live_…) and the webhook signing secret (whsec_…) exactly once: store both in your server’s secret store.

  2. Choose what the key checks. In the same dialog, or later with Edit key, pick the steps of the flow, for example document then liveness. See Configure a key.

  3. Create a verification from your server.

    Terminal window
    curl -X POST https://verify.zetaid.com/api/v1/verifications \
    -H "X-SDK-Key: $ZETAID_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"return_url": "https://shop.example/checkout/verified?order=A-17",
    "extra_data": {"order_id": "A-17"}}'
    {
    "verification_id": "3f6c2a9e-7d41-4b8a-9c2e-5a1f0d7b3e64",
    "url": "https://verify.zetaid.com/?verification_id=3f6c2a9e-7d41-4b8a-9c2e-5a1f0d7b3e64",
    "flow": ["document", "liveness"],
    "due_at": "2026-11-02T10:15:00Z",
    "expires_at": "2027-01-30T10:15:00Z"
    }
  4. Send the person to url. Redirect their browser to it. When they are done, the page sends them back to your return_url.

  5. Receive the result. ZetaID posts a verification.completed webhook to your key’s URL. Check its signature, then act on status:

    {
    "event": "verification.completed",
    "verification_id": "3f6c2a9e-7d41-4b8a-9c2e-5a1f0d7b3e64",
    "status": "verified",
    "reason_code": null,
    "export": { "personal_info": { "first_name": "ERIKA", "last_name": "MUSTERMANN", "date_of_birth": "1983-08-12" } },
    "extra_data": { "order_id": "A-17" },
    "completed_at": "2026-11-01T10:19:42Z"
    }

    You can also read the same fields at any time with GET /api/v1/verifications/{verification_id}.

Next: integrate a website end to end, with signature checks, the return page and expired links.