curl --request PUT \
--url https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/entity/{investorId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalInvestorId": "ent-test-0001",
"investorType": "entity",
"entityName": "Test_Northwind Holdings Limited",
"entityType": "llc",
"entityIdNumber": "39-8873890",
"email": "kyc.sandbox+ent0001@test.invalid",
"phone": {
"code": "1",
"number": "5550000001"
},
"address": {
"street": "Test Street West",
"city": "Wilmington",
"state": "DE",
"countryCode": "US",
"postalCode": "19801"
}
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
externalInvestorId: 'ent-test-0001',
investorType: 'entity',
entityName: 'Test_Northwind Holdings Limited',
entityType: 'llc',
entityIdNumber: '39-8873890',
email: 'kyc.sandbox+ent0001@test.invalid',
phone: {code: '1', number: '5550000001'},
address: {
street: 'Test Street West',
city: 'Wilmington',
state: 'DE',
countryCode: 'US',
postalCode: '19801'
}
})
};
fetch('https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/entity/{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/entity/{investorId}"
payload = {
"externalInvestorId": "ent-test-0001",
"investorType": "entity",
"entityName": "Test_Northwind Holdings Limited",
"entityType": "llc",
"entityIdNumber": "39-8873890",
"email": "kyc.sandbox+ent0001@test.invalid",
"phone": {
"code": "1",
"number": "5550000001"
},
"address": {
"street": "Test Street West",
"city": "Wilmington",
"state": "DE",
"countryCode": "US",
"postalCode": "19801"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"investorId": "6aca84e5dc49fe8369dd1da4",
"externalInvestorId": "ent-test-0001",
"email": "kyc.sandbox+ent0001@test.invalid",
"status": "none",
"riskLevel": "low",
"createdAt": "2026-10-10T18:33:09.697Z",
"details": {
"entityName": "Test_Northwind Holdings Limited",
"entityType": "llc",
"entityIdNumber": "39-8873890",
"phone": {
"code": "1",
"number": "5550000001"
},
"address": {
"street": "Test Street West",
"city": "Wilmington",
"state": "DE",
"countryCode": "US",
"postalCode": "19801"
}
}
}Correct an entity investor
Replaces the company’s record — a typo in the name, a moved address. Use it before you submit.
Full replacement, not a merge. Any optional field you omit is cleared (for example incorporationDate or address.houseNumber), so send the full record every time, entityIdNumber included. The response echoes what is now stored.
email and externalInvestorId must be the ones you sent at create: neither can change, and a different value answers 422, because a mismatch usually means the wrong investor is being addressed. Contact Securitize support if one must change.
Accepted until the entity is submitted. Once it is under review or decided, corrections answer 409 verification_in_review or 409 verification_already_settled; right after a submit, while its key parties are still being handed over, a correction can still be accepted.
An investorId that belongs to an individual answers 404 investor_not_found: an investor’s type is fixed at create.
curl --request PUT \
--url https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/entity/{investorId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalInvestorId": "ent-test-0001",
"investorType": "entity",
"entityName": "Test_Northwind Holdings Limited",
"entityType": "llc",
"entityIdNumber": "39-8873890",
"email": "kyc.sandbox+ent0001@test.invalid",
"phone": {
"code": "1",
"number": "5550000001"
},
"address": {
"street": "Test Street West",
"city": "Wilmington",
"state": "DE",
"countryCode": "US",
"postalCode": "19801"
}
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
externalInvestorId: 'ent-test-0001',
investorType: 'entity',
entityName: 'Test_Northwind Holdings Limited',
entityType: 'llc',
entityIdNumber: '39-8873890',
email: 'kyc.sandbox+ent0001@test.invalid',
phone: {code: '1', number: '5550000001'},
address: {
street: 'Test Street West',
city: 'Wilmington',
state: 'DE',
countryCode: 'US',
postalCode: '19801'
}
})
};
fetch('https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/entity/{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/entity/{investorId}"
payload = {
"externalInvestorId": "ent-test-0001",
"investorType": "entity",
"entityName": "Test_Northwind Holdings Limited",
"entityType": "llc",
"entityIdNumber": "39-8873890",
"email": "kyc.sandbox+ent0001@test.invalid",
"phone": {
"code": "1",
"number": "5550000001"
},
"address": {
"street": "Test Street West",
"city": "Wilmington",
"state": "DE",
"countryCode": "US",
"postalCode": "19801"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"investorId": "6aca84e5dc49fe8369dd1da4",
"externalInvestorId": "ent-test-0001",
"email": "kyc.sandbox+ent0001@test.invalid",
"status": "none",
"riskLevel": "low",
"createdAt": "2026-10-10T18:33:09.697Z",
"details": {
"entityName": "Test_Northwind Holdings Limited",
"entityType": "llc",
"entityIdNumber": "39-8873890",
"phone": {
"code": "1",
"number": "5550000001"
},
"address": {
"street": "Test Street West",
"city": "Wilmington",
"state": "DE",
"countryCode": "US",
"postalCode": "19801"
}
}
}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
Body
The company being onboarded. The same body creates it and, on PUT, replaces it in full: an optional field you omit on PUT is cleared.
Registration or tax identifier of the company as a legal person. With address.countryCode it identifies the company. Stored trimmed and upper-cased. Placeholder values (000000000, 123456789, TEST, N/A, one repeated character, fewer than 4 characters) are refused with 400 validation_error, with or without separators (spaces, dots, dashes, slashes).
1 - 128"39-8873890"
Response
Corrected. details is what is now stored; omitted optional fields are absent.
The entity investor as stored, returned by create (201) and correction.
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