Trigger a test scenario
curl --request POST \
--url https://partners-api.sandbox.securitize.io/corporate-actions/v1/sandbox/events \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"scenario": "CASH_DIVIDEND_LIFECYCLE",
"tokenId": "7f3b2c10-5d4e-4a6b-9c8d-1e2f3a4b5c6d"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
scenario: 'CASH_DIVIDEND_LIFECYCLE',
tokenId: '7f3b2c10-5d4e-4a6b-9c8d-1e2f3a4b5c6d'
})
};
fetch('https://partners-api.sandbox.securitize.io/corporate-actions/v1/sandbox/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://partners-api.sandbox.securitize.io/corporate-actions/v1/sandbox/events"
payload = {
"scenario": "CASH_DIVIDEND_LIFECYCLE",
"tokenId": "7f3b2c10-5d4e-4a6b-9c8d-1e2f3a4b5c6d"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"runId": "sbx_01K7Q4B1E3G5H7K9M1N3Q5S7V9",
"scenario": "CA_SUPERSEDED",
"tokenId": "7f3b2c10-5d4e-4a6b-9c8d-1e2f3a4b5c6d",
"steps": [
{
"step": 1,
"eventTypes": [
"ca.action.created"
],
"executedAt": "2026-10-20T13:50:18.465Z"
},
{
"step": 2,
"eventTypes": [
"ca.action.created",
"ca.action.cancelled"
],
"executedAt": "2026-10-20T13:50:18.868Z"
}
]
}{
"error": "Bad Request",
"message": [
"each value in status must be one of the following values: OPEN, CLOSED, UNAVAILABLE"
],
"statusCode": 400
}{
"error": "UNAUTHORIZED",
"message": "Missing or unknown partner identity",
"statusCode": 401
}{
"error": "TOKEN_NOT_FOUND",
"message": "No token with id '7f3b2c10-5d4e-4a6b-9c8d-1e2f3a4b5c6d'",
"statusCode": 404
}Sandbox
Trigger a test scenario
Sandbox only; the route does not exist in production. Runs a scripted sequence of synthetic events on the asset of tokenId, every step at once and in order, so the whole sequence reaches your webhook endpoint and the event list within seconds. The events are published on every token stream of that asset you hold; order them by sequence, not by arrival. The corporate actions it creates are marked as sandbox tests and are never executed.
| Scenario | Events, in order |
|---|---|
CASH_DIVIDEND_CREATED | ca.action.created (PRELIMINARY) |
CASH_DIVIDEND_LIFECYCLE | ca.action.created → ca.action.updated (confirmed) → ca.action.status_changed (ENTITLEMENTS_FIXED) → ca.action.status_changed (SETTLING) → ca.action.completed |
STOCK_SPLIT_LIFECYCLE | ca.action.created → ca.action.updated (confirmed) → ca.action.status_changed (SETTLING) → ca.action.completed |
CA_CORRECTED | ca.action.created → ca.action.corrected |
CA_POSTPONED | ca.action.created → ca.action.postponed (dates cleared) → ca.action.updated (new dates) |
CA_CANCELLED | ca.action.created → ca.action.cancelled |
CA_SUPERSEDED | ca.action.created → ca.action.created (replacement, supersedesCaId) + ca.action.cancelled (the old one, supersededByCaId) |
RESTRICTION_LIFECYCLE | ca.restriction.added → ca.restriction.updated → ca.restriction.removed (an ASSET-scoped TRADING_SUSPENSION) |
UNKNOWN_CA_TYPE | ca.action.created with a caType this documentation does not list |
POST
/
sandbox
/
events
Trigger a test scenario
curl --request POST \
--url https://partners-api.sandbox.securitize.io/corporate-actions/v1/sandbox/events \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"scenario": "CASH_DIVIDEND_LIFECYCLE",
"tokenId": "7f3b2c10-5d4e-4a6b-9c8d-1e2f3a4b5c6d"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
scenario: 'CASH_DIVIDEND_LIFECYCLE',
tokenId: '7f3b2c10-5d4e-4a6b-9c8d-1e2f3a4b5c6d'
})
};
fetch('https://partners-api.sandbox.securitize.io/corporate-actions/v1/sandbox/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://partners-api.sandbox.securitize.io/corporate-actions/v1/sandbox/events"
payload = {
"scenario": "CASH_DIVIDEND_LIFECYCLE",
"tokenId": "7f3b2c10-5d4e-4a6b-9c8d-1e2f3a4b5c6d"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"runId": "sbx_01K7Q4B1E3G5H7K9M1N3Q5S7V9",
"scenario": "CA_SUPERSEDED",
"tokenId": "7f3b2c10-5d4e-4a6b-9c8d-1e2f3a4b5c6d",
"steps": [
{
"step": 1,
"eventTypes": [
"ca.action.created"
],
"executedAt": "2026-10-20T13:50:18.465Z"
},
{
"step": 2,
"eventTypes": [
"ca.action.created",
"ca.action.cancelled"
],
"executedAt": "2026-10-20T13:50:18.868Z"
}
]
}{
"error": "Bad Request",
"message": [
"each value in status must be one of the following values: OPEN, CLOSED, UNAVAILABLE"
],
"statusCode": 400
}{
"error": "UNAUTHORIZED",
"message": "Missing or unknown partner identity",
"statusCode": 401
}{
"error": "TOKEN_NOT_FOUND",
"message": "No token with id '7f3b2c10-5d4e-4a6b-9c8d-1e2f3a4b5c6d'",
"statusCode": 404
}Authorizations
Body
application/json