{
"schemaVersion": "1.0",
"sourceEventId": "kyc_5b1e0c9a7d3f42e8b6a1c4d2e9f07a3b",
"eventType": "investor.kyc.updated",
"occurredAt": "2026-10-20T15:29:34.698Z",
"data": {
"investorId": "6ace745fab21fd6924a19beb",
"externalInvestorId": "your-investor-0001",
"status": "processing"
}
}An investors status changed
Sent every time the status of one of your investors changes, with the new status. Delivery is at least once and can be out of order: deduplicate on sourceEventId, keep the latest occurredAt per investor, and confirm with GET /investors/{investorId} before acting on a status. The KYC webhooks guide on the developer portal explains how to verify and acknowledge each delivery.
{
"schemaVersion": "1.0",
"sourceEventId": "kyc_5b1e0c9a7d3f42e8b6a1c4d2e9f07a3b",
"eventType": "investor.kyc.updated",
"occurredAt": "2026-10-20T15:29:34.698Z",
"data": {
"investorId": "6ace745fab21fd6924a19beb",
"externalInvestorId": "your-investor-0001",
"status": "processing"
}
}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.
Body
The body of a KYC webhook.
Response
Any 2xx within 10 seconds acknowledges the delivery. Anything else, or no answer, is retried with backoff for up to 72 hours.