curl --request POST \
--url https://sg.sandbox.api.reap.global/companies/{id}/related-persons/{personId}/documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--header 'Reap-Version: <reap-version>' \
--form uboDocumentType=PASSPORT \
--form 'files=<string>'const form = new FormData();
form.append('uboDocumentType', 'PASSPORT');
form.append('files', '<string>');
const options = {
method: 'POST',
headers: {'Reap-Version': '<reap-version>', Authorization: 'Bearer <token>'}
};
options.body = form;
fetch('https://sg.sandbox.api.reap.global/companies/{id}/related-persons/{personId}/documents', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sg.sandbox.api.reap.global/companies/{id}/related-persons/{personId}/documents"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"uboDocumentType\"\r\n\r\nPASSPORT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
headers = {
"Reap-Version": "<reap-version>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fullName": "<string>",
"email": "jsmith@example.com",
"status": "NOT_STARTED",
"isActive": true,
"createdAt": "<string>",
"updatedAt": "<string>",
"nextAction": {
"type": "DOCUMENT_UPLOAD",
"documents": [
{
"documentType": "CERTIFICATE_OF_INCORPORATION",
"status": "REQUIRED"
}
]
}
}{
"error": {
"code": "CORPORATE_MODE_REQUIRED",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "COMPANY_VERIFICATION_METHOD_NOT_ENABLED",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "COMPANY_NOT_FOUND",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "COMPANY_APPLICATION_NOT_EDITABLE",
"message": "<string>",
"detail": {}
}
}Upload related person documents
Uploads one declared beneficial-owner identity document for a Universal KYB application. uboDocumentType must match a type declared for this person. Send the front image first, then the back if the document has two sides.
curl --request POST \
--url https://sg.sandbox.api.reap.global/companies/{id}/related-persons/{personId}/documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--header 'Reap-Version: <reap-version>' \
--form uboDocumentType=PASSPORT \
--form 'files=<string>'const form = new FormData();
form.append('uboDocumentType', 'PASSPORT');
form.append('files', '<string>');
const options = {
method: 'POST',
headers: {'Reap-Version': '<reap-version>', Authorization: 'Bearer <token>'}
};
options.body = form;
fetch('https://sg.sandbox.api.reap.global/companies/{id}/related-persons/{personId}/documents', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sg.sandbox.api.reap.global/companies/{id}/related-persons/{personId}/documents"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"uboDocumentType\"\r\n\r\nPASSPORT\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
headers = {
"Reap-Version": "<reap-version>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fullName": "<string>",
"email": "jsmith@example.com",
"status": "NOT_STARTED",
"isActive": true,
"createdAt": "<string>",
"updatedAt": "<string>",
"nextAction": {
"type": "DOCUMENT_UPLOAD",
"documents": [
{
"documentType": "CERTIFICATE_OF_INCORPORATION",
"status": "REQUIRED"
}
]
}
}{
"error": {
"code": "CORPORATE_MODE_REQUIRED",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "COMPANY_VERIFICATION_METHOD_NOT_ENABLED",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "COMPANY_NOT_FOUND",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "COMPANY_APPLICATION_NOT_EDITABLE",
"message": "<string>",
"detail": {}
}
}Authorizations
API key as Bearer token
Headers
API version (YYYY-MM-DD)
2025-02-14 "2025-02-14"
Path Parameters
Company identifier
Related person identifier
Body
Multipart form uploading one beneficial-owner identity document type
Identity document type declared for this owner. Must match a type from the pack.
PASSPORT, ID_CARD, DRIVERS_LICENCE "PASSPORT"
Front, then back if needed. Send a single file or repeat files (max 2, 5MB total).
5242880Response
Related person after uploading an identity document
Unique related person identifier
Company this person belongs to
Full name of the person
Email address of the person
^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$Verification status
NOT_STARTED, IN_REVIEW, APPROVED, REJECTED "NOT_STARTED"
Whether the related person is still addressable. False when the person has been archived.
When the person was added (ISO 8601)
When the person was last updated (ISO 8601)
Action the client must take next, or null if none remains
- DocumentUpload
- Submit
Show child attributes
Show child attributes