{
"message": "Verification session document uploaded 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": "AWAITING_INPUT",
"steps": {
"documents": "SUBMITTED",
"selfie": null,
"proof_of_address": null
},
"rejection": null,
"expires_at": "2026-08-30T09:14:22.000Z",
"completed_at": null,
"created_at": "2026-08-29T09:14:22.000Z"
}
}{
"message": "Invalid or missing access token"
}{
"message": "The Merchant KYC feature is not enabled for this business.",
"status": 403
}{
"message": "Verification session not found."
}{
"message": "No uploaded file was found under that name; upload to the presigned URL before confirming."
}Upload 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. Merchant KYC must be enabled for your business. Required scope: compliance-kyc:create.
{
"message": "Verification session document uploaded 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": "AWAITING_INPUT",
"steps": {
"documents": "SUBMITTED",
"selfie": null,
"proof_of_address": null
},
"rejection": null,
"expires_at": "2026-08-30T09:14:22.000Z",
"completed_at": null,
"created_at": "2026-08-29T09:14:22.000Z"
}
}{
"message": "Invalid or missing access token"
}{
"message": "The Merchant KYC feature is not enabled for this business.",
"status": 403
}{
"message": "Verification session not found."
}{
"message": "No uploaded file was found under that name; upload to the presigned URL before confirming."
}Authorizations
Use your OAuth client credentials to obtain a short-lived Bearer token from POST /oauth/token.
Path Parameters
The verification session id returned by the create endpoint.
Body
The name Blaaiz stores the document under.
191The media type of the file.
image/jpeg, image/png, image/webp, application/pdf What the document is. UTILITY_BILL and BANK_STATEMENT satisfy the proof-of-address step. Every other type except SELFIE satisfies the documents step. Which types a session accepts depends on its requirement set. A session that includes SELFIE rejects a SELFIE upload, because Blaaiz captures the selfie.
PASSPORT, ID_CARD, DRIVERS, RESIDENCE_PERMIT, UTILITY_BILL, BANK_STATEMENT, SELFIE The country of the document, as an ISO 3166-1 alpha-3 code.
3The data.file_name value the upload-url endpoint returned. Send this or content_base64, never both.
150^[a-zA-Z0-9_ -]+\.(jpg|jpeg|png|webp|pdf)$The file, base64 encoded. The decoded file must be 700 KB or smaller. Send this or file_name, never both.
Was this page helpful?