curl --request POST \
--url https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send \
--header 'Content-Type: application/json' \
--cookie ds-prod-session= \
--data '{
"notify": true
}'import requests
url = "https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send"
payload = { "notify": True }
headers = {
"cookie": "ds-prod-session=",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {cookie: 'ds-prod-session=', 'Content-Type': 'application/json'},
body: JSON.stringify({notify: true})
};
fetch('https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'notify' => true
]),
CURLOPT_COOKIE => "ds-prod-session=",
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send"
payload := strings.NewReader("{\n \"notify\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("cookie", "ds-prod-session=")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send")
.header("cookie", "ds-prod-session=")
.header("Content-Type", "application/json")
.body("{\n \"notify\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["cookie"] = 'ds-prod-session='
request["Content-Type"] = 'application/json'
request.body = "{\n \"notify\": true\n}"
response = http.request(request)
puts response.read_body{
"code": "case_not_found",
"message": "Case not found"
}{
"code": "request_empty",
"message": "The information request has no items to send"
}{
"case_id": "019f179b-0fa7-72c8-818e-819652540477",
"case_status": "in_remediation",
"created_at": "2023-11-07T05:31:56Z",
"id": "019f179b-0fa7-72c8-818e-819652540477",
"items": [
{
"audience": "merchant",
"canceled_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "019f1383-8f38-7d31-b921-39310a19b444",
"field_key": "registration_number",
"id": "019f179b-0fa7-72c8-818e-819652540477",
"last_value": null,
"message": "The number does not match the registry, please re-enter it.",
"new_value": null,
"request_id": "019f179b-0fa7-72c8-818e-819652540477",
"resolved_at": "2023-11-07T05:31:56Z",
"section_key": "registration",
"status": "open",
"target_kind": "field"
}
],
"received_at": "2023-11-07T05:31:56Z",
"sent_at": "2023-11-07T05:31:56Z",
"status": "draft",
"widget_url": "https://kyb.dataspike.io/KYB0123456789abcdef"
}Send the information request to the applicant
The only moment anything reaches the applicant. In one transaction the backend snapshots each requested target’s current state (the “was” of the dashboard’s was-to-now: a field’s value, or the id + name of every file a requested document group holds), reopens exactly those targets, moves the case to in_remediation and unlocks it so the widget accepts writes again. Nothing else becomes editable: no other field, no other document group, and no owner.
The body is {"notify": true} and carries no recipient — the backend resolves the address from the representative email in the form, so an API client cannot redirect the widget link somewhere else. The applicant email is a later slice; the response’s widget_url is the link to pass on in the meantime (empty when no widget base URL is configured for the environment).
curl --request POST \
--url https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send \
--header 'Content-Type: application/json' \
--cookie ds-prod-session= \
--data '{
"notify": true
}'import requests
url = "https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send"
payload = { "notify": True }
headers = {
"cookie": "ds-prod-session=",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {cookie: 'ds-prod-session=', 'Content-Type': 'application/json'},
body: JSON.stringify({notify: true})
};
fetch('https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'notify' => true
]),
CURLOPT_COOKIE => "ds-prod-session=",
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send"
payload := strings.NewReader("{\n \"notify\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("cookie", "ds-prod-session=")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send")
.header("cookie", "ds-prod-session=")
.header("Content-Type", "application/json")
.body("{\n \"notify\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/send")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["cookie"] = 'ds-prod-session='
request["Content-Type"] = 'application/json'
request.body = "{\n \"notify\": true\n}"
response = http.request(request)
puts response.read_body{
"code": "case_not_found",
"message": "Case not found"
}{
"code": "request_empty",
"message": "The information request has no items to send"
}{
"case_id": "019f179b-0fa7-72c8-818e-819652540477",
"case_status": "in_remediation",
"created_at": "2023-11-07T05:31:56Z",
"id": "019f179b-0fa7-72c8-818e-819652540477",
"items": [
{
"audience": "merchant",
"canceled_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "019f1383-8f38-7d31-b921-39310a19b444",
"field_key": "registration_number",
"id": "019f179b-0fa7-72c8-818e-819652540477",
"last_value": null,
"message": "The number does not match the registry, please re-enter it.",
"new_value": null,
"request_id": "019f179b-0fa7-72c8-818e-819652540477",
"resolved_at": "2023-11-07T05:31:56Z",
"section_key": "registration",
"status": "open",
"target_kind": "field"
}
],
"received_at": "2023-11-07T05:31:56Z",
"sent_at": "2023-11-07T05:31:56Z",
"status": "draft",
"widget_url": "https://kyb.dataspike.io/KYB0123456789abcdef"
}Authorizations
Session cookie for web dashboard authentication.
Path Parameters
Organization id.
KYB case id (the id from the list).
Body
Request body for kyb.SendInfoRequestRequest
SendInfoRequestRequest schema
true
Response
OK