curl --request POST \
--url https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/verification-link \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/verification-link"
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}/verification-link', 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}/verification-link")
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}/verification-link",
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 link issued successfully.",
"data": {
"verification_link": "https://verify.blaaiz.com/c/8Kq2rV5wZs1tYb7NfPjX0aLmC4hD6gEuR9oT3nQiWxs",
"link_expires_at": "2026-08-29T09:44: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": "This session is completed by your server. Upload the documents the set asks for, then submit the session."
}Issue 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. 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. 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}/verification-link \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-prod.blaaiz.com/api/external/compliance/kyc/sessions/{sessionId}/verification-link"
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}/verification-link', 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}/verification-link")
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}/verification-link",
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 link issued successfully.",
"data": {
"verification_link": "https://verify.blaaiz.com/c/8Kq2rV5wZs1tYb7NfPjX0aLmC4hD6gEuR9oT3nQiWxs",
"link_expires_at": "2026-08-29T09:44: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": "This session is completed by your server. Upload the documents the set asks for, then submit the session."
}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?