These three live at their own base URL,
https://partners-api.sandbox.securitize.io/webhooks/v1, apart from any one API’s, because they cover every webhook Securitize sends to your endpoint. The list carries the events of every API your account uses (ca.* from the Corporate Actions API, investor.kyc.updated from the SecId API), and eventTypes is how you keep only one of them. They take the same bearer token as the API you integrate, obtained with your client credentials (SecId API, Corporate Actions API). The examples use $EVENTS for the base URL.List the events
- Newest first. The first page is the most recent events;
iteratorleads to older ones. Pass it back asiteratoruntildoneistrue. eventIdis thesourceEventIdof the envelope, the key you deduplicate on. It is not thesvix-idheader of the delivery, which is the message id.payloadis the body your endpoint received, byte for byte the same object. Feed it to the same handler.sincekeeps events sent after that instant.eventTypeskeeps some types, repeated or comma-separated, of any family; a request naming only types Securitize does not publish answers400 EVENT_TYPES_NOT_ALLOWED, with the valid names inmessage.- Every API, unless you filter. Without
eventTypesthe list carries everything your endpoint receives. To read only corporate actions, pass the elevenca.*types; to read only KYC, passinvestor.kyc.updated; to read only suitability, passinvestor.suitability.updatedandinvestor.dlt_test.updated. - No
tokenIdfilter. Filter onpayload.stream.idon your side. - The list is newest first and nothing more: apply what you read with the same rules as the webhooks, by
payload.stream.idandpayload.sequencefor corporate actions, byoccurredAtper investor for KYC, and per investor and event type for suitability.
Fetch one event
404 WEBHOOK_EVENT_NOT_FOUND when the id is unknown, belongs to another account or is older than 90 days.
Resend failed deliveries
- Only deliveries that failed are resent, of every family your endpoint receives, each with its original body and
svix-id, so your deduplication onsourceEventIdapplies. A window in which everything was delivered resends nothing, and the202is still the answer. sinceis at most 90 days ago and not in the future;untilis optional and must followsince. Outside that:400 INVALID_RECOVER_WINDOW.- It is asynchronous: the resends arrive at your endpoint over the following minutes.
- It is rate limited: a
429means wait and call again. 404 WEBHOOK_ENDPOINT_NOT_FOUNDmeans no endpoint is registered for your account yet.
After an outage
- Resend:
POST /events/recoverwithsinceat the start of the outage. Your endpoint receives what failed, with the original ids. - Or read: page
GET /events?since=<start of the outage>and feed eachpayloadto your handler. Use this when the endpoint was up but your consumer was not, since those deliveries succeeded and are not resent. - Then check state for anything you act on: for corporate actions,
GET /tokens/{tokenId}/statusfor every token you list andGET /corporate-actions/{sourceCaId}for the ones in flight; for KYC,GET /investors/{externalInvestorId}of the SecId API. The state queries are the source of truth for the present; the events are the history.
sourceEventId and applying by version make the result the same.
Older than 90 days, or a full rebuild
The event history is 90 days. For anything older, and to build a consumer from nothing, read the state. For the Corporate Actions API:
For the SecId API,
GET /investors/{externalInvestorId} answers the current status of each investor. Then subscribe to webhooks, or start paging the event list from that moment.