curl --request POST \
--url https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/key-parties/entity \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalKeyPartyId": "holdco-test-0003",
"entityName": "Acme Holdings Test Ltd",
"entityType": "corporation",
"uboOwning": "25+",
"doingBusinessAs": "Acme Trading",
"email": "kyc.sandbox+holdco0003@test.invalid",
"taxId": "46-3810572",
"taxCountry": "US",
"address": {
"street": "Market Street",
"city": "San Francisco",
"state": "CA",
"countryCode": "US",
"postalCode": "94105"
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
externalKeyPartyId: 'holdco-test-0003',
entityName: 'Acme Holdings Test Ltd',
entityType: 'corporation',
uboOwning: '25+',
doingBusinessAs: 'Acme Trading',
email: 'kyc.sandbox+holdco0003@test.invalid',
taxId: '46-3810572',
taxCountry: 'US',
address: {
street: 'Market Street',
city: 'San Francisco',
state: 'CA',
countryCode: 'US',
postalCode: '94105'
}
})
};
fetch('https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/key-parties/entity', 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}/key-parties/entity"
payload = {
"externalKeyPartyId": "holdco-test-0003",
"entityName": "Acme Holdings Test Ltd",
"entityType": "corporation",
"uboOwning": "25+",
"doingBusinessAs": "Acme Trading",
"email": "kyc.sandbox+holdco0003@test.invalid",
"taxId": "46-3810572",
"taxCountry": "US",
"address": {
"street": "Market Street",
"city": "San Francisco",
"state": "CA",
"countryCode": "US",
"postalCode": "94105"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"keyPartyId": "6aca84eceb86373b87dca9e4",
"externalKeyPartyId": "holdco-test-0003",
"investorId": "6aca84e5dc49fe8369dd1da4",
"signerType": "entity",
"uboOwning": "25+",
"details": {
"entityName": "Acme Holdings Test Ltd",
"entityType": "corporation",
"doingBusinessAs": "Acme Trading",
"email": "kyc.sandbox+holdco0003@test.invalid",
"taxId": "46-3810572",
"taxCountry": "US",
"address": {
"street": "Market Street",
"city": "San Francisco",
"state": "CA",
"countryCode": "US",
"postalCode": "94105"
}
}
}Add a company key party
Declares a key party that is itself a company — a corporate shareholder or owner of the entity. Optional; call it once per corporate shareholder. Returns keyPartyId, so store it.
People are screened; companies are recorded. The company key party is stored with the entity and its country feeds the entity’s risk level. Its documents stay with Securitize. When you submit the entity, it is handed over with its details as a shareholder linked to the entity, and Securitize compliance reviews it by hand.
A company is screened through the natural persons behind it, so also declare those people with POST /investors/{investorId}/key-parties/individual. An entity whose key parties are all companies cannot be submitted.
entityType decides which documents this key party must have on file before the entity can be submitted. Next: upload them with POST /investors/{investorId}/key-parties/{keyPartyId}/documents and follow verification.missing until it reads complete.
Person-only fields (isBeneficialOwner, isLegalSigner, phone, names, dateOfBirth) are not part of a company key party: sent anyway, they are dropped, not refused.
Repeatable with the same body. Sending the same create again answers 201 with the same keyPartyId. A different body for an externalKeyPartyId already used on this entity answers 409 external_key_party_id_conflict with the existing keyPartyId in details: correct it with PUT instead.
curl --request POST \
--url https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/key-parties/entity \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalKeyPartyId": "holdco-test-0003",
"entityName": "Acme Holdings Test Ltd",
"entityType": "corporation",
"uboOwning": "25+",
"doingBusinessAs": "Acme Trading",
"email": "kyc.sandbox+holdco0003@test.invalid",
"taxId": "46-3810572",
"taxCountry": "US",
"address": {
"street": "Market Street",
"city": "San Francisco",
"state": "CA",
"countryCode": "US",
"postalCode": "94105"
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
externalKeyPartyId: 'holdco-test-0003',
entityName: 'Acme Holdings Test Ltd',
entityType: 'corporation',
uboOwning: '25+',
doingBusinessAs: 'Acme Trading',
email: 'kyc.sandbox+holdco0003@test.invalid',
taxId: '46-3810572',
taxCountry: 'US',
address: {
street: 'Market Street',
city: 'San Francisco',
state: 'CA',
countryCode: 'US',
postalCode: '94105'
}
})
};
fetch('https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/key-parties/entity', 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}/key-parties/entity"
payload = {
"externalKeyPartyId": "holdco-test-0003",
"entityName": "Acme Holdings Test Ltd",
"entityType": "corporation",
"uboOwning": "25+",
"doingBusinessAs": "Acme Trading",
"email": "kyc.sandbox+holdco0003@test.invalid",
"taxId": "46-3810572",
"taxCountry": "US",
"address": {
"street": "Market Street",
"city": "San Francisco",
"state": "CA",
"countryCode": "US",
"postalCode": "94105"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"keyPartyId": "6aca84eceb86373b87dca9e4",
"externalKeyPartyId": "holdco-test-0003",
"investorId": "6aca84e5dc49fe8369dd1da4",
"signerType": "entity",
"uboOwning": "25+",
"details": {
"entityName": "Acme Holdings Test Ltd",
"entityType": "corporation",
"doingBusinessAs": "Acme Trading",
"email": "kyc.sandbox+holdco0003@test.invalid",
"taxId": "46-3810572",
"taxCountry": "US",
"address": {
"street": "Market Street",
"city": "San Francisco",
"state": "CA",
"countryCode": "US",
"postalCode": "94105"
}
}
}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
A company key party (corporate shareholder). The same body creates it and, on PUT, replaces it in full: an optional field you omit on PUT is cleared.
The legal form of a company key party. It decides which documents that key party must have on file before the entity can be submitted.
revocable-trust, irrevocable-trust, limited-partnership/general-partnership, non-profit-foundation, for-profit-foundation, fund, llc, corporation, other Response
Recorded. Handed over with the entity at submit.
A company key party. It has no status and no person fields.