curl --request POST \
--url https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/verification/submit \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/verification/submit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/verification/submit"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"status": "submitted",
"investor": {
"subjectId": "6ace745fab21fd6924a19beb",
"result": "submitted"
},
"keyParties": []
}Submit an investor for verification
Hands the investor to verification — an entity together with all of its key parties. No request body. This is the only way a verification starts, for individuals and entities alike: nothing else triggers it, not the create, the key parties or any document. Calling it is you asserting that what you sent is complete.
- Individual — call it once the identity document is accepted (
verification.status: awaiting_submissionon the upload). Without one, nothing is submitted and the call answers422withdetails.investor.reason.code: documents-incomplete. - Entity — call it once every person key party has its identity document and every company key party’s checklist is
complete. All or nothing: if any key party is short, nothing is submitted and the call answers422 business_rule_violationwithdetails.keyPartiesnaming who. An entity with no key parties, or whose key parties are all companies, also answers422: declare the people behind it.
200 does not mean everything was submitted. Read status:
submitted— everything was handed over. PollGET /investors/{investorId}for the verdict.incomplete— part of the submission did not go through; a subject thatfailedreadsreason.codeprovider-rate-limitedorsubmission-failed. Wait a few seconds and call again: only what is outstanding is sent.
Each subject reports result: submitted (handed over on this call; for a company key party, recorded for compliance review), skipped (already handed over, not re-sent), failed, or not_attempted (never reached). A repeat call is safe: an investor already handed over answers 200 with skipped. For an entity, a company key party is re-recorded on each call, which is how a correction made between two submits reaches review.
When the investor’s status becomes verified — as soon as it is submitted, or after Securitize’s screening and compliance review — depends on your agreement with Securitize. An entity with corporate shareholders may stay processing until compliance has reviewed them. After this call, corrections and identity documents answer 409; if Securitize needs anything more about the investor, it tells you.
curl --request POST \
--url https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/verification/submit \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/verification/submit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/verification/submit"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"status": "submitted",
"investor": {
"subjectId": "6ace745fab21fd6924a19beb",
"result": "submitted"
},
"keyParties": []
}Authorizations
OAuth 2.0 client credentials. Exchange the client id and secret Securitize issued you for a bearer token at the token URL (the host root, not under the base URL), with grant_type=client_credentials; the token lasts 2 hours and goes in the Authorization: Bearer header of every request. No scope is needed. The token identifies your partner account, so you never send a partner id, and every record you create is scoped to you.
Path Parameters
Response
The run happened. Read status and each subject's result.
Outcome of a submit. Read status; 200 alone does not mean everything was submitted.