curl --request POST \
--url https://sg.sandbox.api.reap.global/companies/{id}/applications/documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--header 'Reap-Version: <reap-version>' \
--form documentType=CERTIFICATE_OF_INCORPORATION \
--form 'files=<string>'const form = new FormData();
form.append('documentType', 'CERTIFICATE_OF_INCORPORATION');
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}/applications/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}/applications/documents"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nCERTIFICATE_OF_INCORPORATION\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){
"documentType": "CERTIFICATE_OF_INCORPORATION",
"files": [
{
"fileId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fileName": "<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 application documents
Uploads one company supporting document type for a Universal KYB application. Set documentType to a pending company document from nextAction and attach its file(s) as files. Upload one type per request. Beneficial-owner identity documents use POST /companies/:id/related-persons/:personId/documents.
curl --request POST \
--url https://sg.sandbox.api.reap.global/companies/{id}/applications/documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--header 'Reap-Version: <reap-version>' \
--form documentType=CERTIFICATE_OF_INCORPORATION \
--form 'files=<string>'const form = new FormData();
form.append('documentType', 'CERTIFICATE_OF_INCORPORATION');
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}/applications/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}/applications/documents"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\nCERTIFICATE_OF_INCORPORATION\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){
"documentType": "CERTIFICATE_OF_INCORPORATION",
"files": [
{
"fileId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fileName": "<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
Unique company identifier
Body
Multipart form uploading one company supporting document type
Which supporting document this upload is for (one type per request; from the pending documents in nextAction)
CERTIFICATE_OF_INCORPORATION, COMPANY_PROFILE, SHAREHOLDING_CHART, REGISTER_OF_DIRECTORS, BUSINESS_REGISTRY, SOURCE_OF_FUNDS, SOURCE_OF_WEALTH "CERTIFICATE_OF_INCORPORATION"
The document file(s) for this type. Send a single file, or repeat the files field (max 5, 5MB total).
5242880Response
Application state after uploading a company document
Document type that was uploaded
CERTIFICATE_OF_INCORPORATION, COMPANY_PROFILE, SHAREHOLDING_CHART, REGISTER_OF_DIRECTORS, BUSINESS_REGISTRY, SOURCE_OF_FUNDS, SOURCE_OF_WEALTH "CERTIFICATE_OF_INCORPORATION"
Files stored for this upload
Show child attributes
Show child attributes
Action the client must take next, or null if none remains
- DocumentUpload
- Submit
Show child attributes
Show child attributes