curl --request POST \
--url https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));require 'uri'
require 'net/http'
url = URI("https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"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,
"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": "Upload the documents before submitting this session for review."
}Submit a verification session for review
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//verification-link to issue a new one. Merchant KYC must be enabled for your business. Required scope: compliance-kyc:create.
curl --request POST \
--url https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));require 'uri'
require 'net/http'
url = URI("https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/submit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"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,
"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": "Upload the documents before submitting this session for review."
}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.
Was this page helpful?