curl --request PUT \
--url https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/key-parties/entity/{keyPartyId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalKeyPartyId": "holdco-test-0003",
"entityName": "Acme Holdings Test plc",
"entityType": "other",
"address": {
"street": "New Street",
"city": "London",
"countryCode": "GB",
"postalCode": "EC1A 1BB"
}
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
externalKeyPartyId: 'holdco-test-0003',
entityName: 'Acme Holdings Test plc',
entityType: 'other',
address: {
street: 'New Street',
city: 'London',
countryCode: 'GB',
postalCode: 'EC1A 1BB'
}
})
};
fetch('https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/key-parties/entity/{keyPartyId}', 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/{keyPartyId}"
payload = {
"externalKeyPartyId": "holdco-test-0003",
"entityName": "Acme Holdings Test plc",
"entityType": "other",
"address": {
"street": "New Street",
"city": "London",
"countryCode": "GB",
"postalCode": "EC1A 1BB"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"keyPartyId": "6aca84eceb86373b87dca9e4",
"externalKeyPartyId": "holdco-test-0003",
"investorId": "6aca84e5dc49fe8369dd1da4",
"signerType": "entity",
"uboOwning": "none",
"details": {
"entityName": "Acme Holdings Test plc",
"entityType": "other",
"address": {
"street": "New Street",
"city": "London",
"countryCode": "GB",
"postalCode": "EC1A 1BB"
}
}
}Correct a company key party
Replaces a company key party. The correction is stored by Securitize and reaches verification with the entity’s next submit.
Full replacement, not a merge. Any optional field you omit is cleared (doingBusinessAs, email, taxId + taxCountry) and uboOwning falls back to none. Send the full record every time.
externalKeyPartyId must be the one this key party was created with — a different value answers 422.
Changing entityType changes which documents are expected: read the new checklist in GET /investors/{investorId}/key-parties.
A person key party addressed through this route answers 404 key_party_not_found; correct it with PUT /investors/{investorId}/key-parties/individual/{keyPartyId}.
curl --request PUT \
--url https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/key-parties/entity/{keyPartyId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalKeyPartyId": "holdco-test-0003",
"entityName": "Acme Holdings Test plc",
"entityType": "other",
"address": {
"street": "New Street",
"city": "London",
"countryCode": "GB",
"postalCode": "EC1A 1BB"
}
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
externalKeyPartyId: 'holdco-test-0003',
entityName: 'Acme Holdings Test plc',
entityType: 'other',
address: {
street: 'New Street',
city: 'London',
countryCode: 'GB',
postalCode: 'EC1A 1BB'
}
})
};
fetch('https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance/investors/{investorId}/key-parties/entity/{keyPartyId}', 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/{keyPartyId}"
payload = {
"externalKeyPartyId": "holdco-test-0003",
"entityName": "Acme Holdings Test plc",
"entityType": "other",
"address": {
"street": "New Street",
"city": "London",
"countryCode": "GB",
"postalCode": "EC1A 1BB"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"keyPartyId": "6aca84eceb86373b87dca9e4",
"externalKeyPartyId": "holdco-test-0003",
"investorId": "6aca84e5dc49fe8369dd1da4",
"signerType": "entity",
"uboOwning": "none",
"details": {
"entityName": "Acme Holdings Test plc",
"entityType": "other",
"address": {
"street": "New Street",
"city": "London",
"countryCode": "GB",
"postalCode": "EC1A 1BB"
}
}
}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
Corrected. Omitted optional fields are absent; uboOwning reads its default.
A company key party. It has no status and no person fields.