Sekyro AIDocs

Create a verification session

POST
/api/v2/sessions

Organizations in the supplied mode may send partner-supplied identity data — the person's biographic record and photo — in input.suppliedIdentity (with input.nni). It is stored as identity data supplied by the organization, never treated as a registry lookup; Sekyro AI makes no registry call for it and never accepts a registry key.

Scope: sessions:create.

Send an X-Idempotency-Key header so a retry never creates a second session.

Authorization

apiKey
headerAuthorizationBearer <token>

Secret key of your app (sk_test_… or sk_live_…). Server-side only: never ship it to a browser or a mobile app. X-Api-Key: <key> is accepted too.

Request Body

application/json
  1. body
ttlMinutes?integer

Link lifetime. Must fall within the app profile's range, otherwise 400 ttl_out_of_policy. Defaults to the profile's defaultTtlMinutes.

locale?string

Pins the hosted-flow language. Leave it out to follow the person's device.

Value in"ar""fr""en"
input?

Step inputs: the identity anchors nni, or fullName + birthDate, and phone. They also seed the prefill.

subject?

Your reference for the person (externalRef), or reuse (exactly one of subjectId, externalRef, nni) for a returning-user session.

Response Body

input_field_misplaced — a session-input field (nni, phone, fullName, birthDate) was sent at the top level; send it under input (e.g. input.nni). Other invalid bodies answer validation_error.

application/json
  1. response
status*"error"
Value in"error"
error*
Example Request
curl -X POST 'https://api-staging.sekyro.ai/api/v2/sessions' \  -H 'Content-Type: application/json' \  -d '{  "locale": "fr"}'
Example Response
{  "status": "error",  "error": {    "code": "input_field_misplaced",    "message": "`nni` must be sent as `input.nni` — session input fields belong under `input`",    "request_id": "01907f4e-3b1a-7c2d-9e8f-0a1b2c3d4e5f"  }}