curl --request GET \
--url https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}', 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}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"investorId": "6aca84e5dc49fe8369dd1da4",
"externalInvestorId": "ent-test-0001",
"email": "kyc.sandbox+ent0001@test.invalid",
"status": "verified",
"riskLevel": "low",
"createdAt": "2026-10-10T18:33:09.697Z"
}Get an investor
Reads one investor by the investorId Securitize returned at create. To find an investor by your own externalInvestorId, filter the list: GET /investors?externalInvestorId=…. Use this call to poll for the verdict after you submit, and to read back what Securitize holds.
Without include the response is the minimal projection: investorId, externalInvestorId, email, status, riskLevel, createdAt. Repeat include to add details and/or documents: ?include=details&include=documents. Unrequested expansions are omitted, not null. An entity’s key parties are read with GET /investors/{investorId}/key-parties.
Polling. status moves from none to processing and then to a verdict (verified, manual-review, rejected, …), or straight to verified: when a status becomes verified — at submit, 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. Sandbox settles within seconds; production takes longer. In sandbox, the investor.kyc.updated webhook also announces each status change; keep polling as the safety net. Treat any status value you do not recognise as “not verified”.
For an investor you have limited access to (it answered 200 on create), the response is { investorId, externalInvestorId, status } and include answers 409 investor_not_owned.
investorType is not on this response: an entity’s details has entityName, an individual’s has firstName. A two-sided document appears as two documents entries, one per side. Rejected documents are never stored, so anything listed was accepted. An investor of another partner answers 404.
curl --request GET \
--url https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}', 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}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"investorId": "6aca84e5dc49fe8369dd1da4",
"externalInvestorId": "ent-test-0001",
"email": "kyc.sandbox+ent0001@test.invalid",
"status": "verified",
"riskLevel": "low",
"createdAt": "2026-10-10T18:33:09.697Z"
}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
Query Parameters
Response
The investor. email, riskLevel and createdAt are absent for an investor you have limited access to.
One investor. investorId, externalInvestorId and status are always present. email, riskLevel and createdAt are present unless you have limited access to the investor. details and documents are present only when requested with include.
The investor's verification state.
none— created, nothing under review. An investor stays here until you submit it.processing— under review.verified— verified.manual-review— a Securitize operator is reviewing it. Not a rejection.updates-required— Securitize needs updated information; contact Securitize support.expired— the verification lapsed; contact Securitize support.rejected— final.
When status becomes verified — at submit, or after Securitize's screening and compliance review — depends on your agreement with Securitize. Treat any value you do not recognise as "not verified" rather than failing.
none, processing, verified, manual-review, updates-required, expired, rejected