Send the session for review. The session moves to IN_REVIEW, stops accepting documents, and no longer expires. The request takes no body. Blaaiz refuses the submit when any step of the requirement set is still PENDING, when the session already left AWAITING_INPUT, and when the session is HOSTED. A step that is null never blocks the submit. The person completes a HOSTED session on the verification link. A HOSTED session answers the submit with the message: This session is completed by the end customer on the verification link. Send the customer the verification_link, or call POST /sessions/{id}/verification-link to issue a new one. Signa must be enabled for your business. Required scope: compliance-kyc:create.

POSTapi-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit

Authorization

oauth2ClientCredentials compliance-kyc:create
AuthorizationBearer <token>

Use your OAuth client credentials to obtain a short-lived Bearer token from POST /oauth/token.

In: header

Scope: compliance-kyc:create

Path Parameters

sessionId*string

The verification session id returned by the create endpoint.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

application/json

Submit a verification session for review
curl --request POST \  --url 'https://example.com/api/external/compliance/kyc/sessions/9f2c7b41-6d3e-4c8a-9a20-1e6f0b5d7c33/submit'
{  "message": "Verification session submitted successfully.",  "data": {    "id": "9f2c7b41-6d3e-4c8a-9a20-1e6f0b5d7c33",    "business_id": "9d4c4ec5-572d-49de-a362-f01ed09f2b1b",    "customer_reference": "user_10482",    "requirements": [      "DOCUMENTS"    ],    "fulfilment_mode": "HEADLESS",    "status": "IN_REVIEW",    "steps": {      "documents": "SUBMITTED",      "selfie": null,      "proof_of_address": null    },    "rejection": null,    "redirect_url": null,    "expires_at": "2026-08-30T09:14:22.000Z",    "completed_at": null,    "created_at": "2026-08-29T09:14:22.000Z"  }}

POSTUpload a verification document

Add one document to a session. Send the bytes one of two ways, never both: file_name names a file you already staged through the upload-url endpoint, and content_base64 carries the bytes inline. Use file_name for every real document, because a request body larger than about 8 KB is rejected at the network edge. An inline document must be 700 KB or smaller after decoding, and a staged file must be 5 MB or smaller. The session must be AWAITING_INPUT, and it must be HEADLESS. A HOSTED session refuses the call with a 422, because the end customer supplies the documents on the verification link. The response is the session, with steps.documents set to SUBMITTED. Signa must be enabled for your business. Required scope: `compliance-kyc:create`.

POSTIssue a verification link

Issue a new verification link for a HOSTED session. The create response already carries the first link, so call this endpoint only to replace a link that expired or leaked. Read link_expires_at for the new deadline. The previous link may stop working as soon as Blaaiz issues a new one. A new link also stops the current web SDK access token of the session. The link is a live credential for one session: send it over a private channel and keep it out of your logs. The request takes no body. Blaaiz refuses the call when the session is terminal, and when the session is HEADLESS. Every HOSTED session can take a verification link, including a session with no selfie step. Signa must be enabled for your business. Required scope: `compliance-kyc:create`.