List corporate actions
API version2026-09-29https://pyth.dourolabs.app/v3/intelligence/corporate_actionsAn API key or short-lived access token, in an Authorization: Bearer <token> header, and the API version above in a Pyth-Version header. Without it, requests get the newest version.
Returns the corporate actions of every covered asset, newest first by ex-date, or by effective date for events without one. Results are paginated: while continues is true, send the same request again with next as after to get the next page. The cursor keeps only the position, so send the filters, limit, expand and effective again.
v3/intelligence/corporate_actionscurl "https://pyth.dourolabs.app/v3/intelligence/corporate_actions?event_type=split&ex_date=2025-11-17" \
-H "Authorization: Bearer $PYTH_API_KEY" \
-H "Pyth-Version: 2026-09-29"{
"continues": false,
"data": [
{
"event_type": "split",
"id": "ca-01m14cxqvdegqvbcm09ctn2gjb",
"status": "applied",
"type": "corporate_action",
"applies_to": "asset-01m14btmjbeqwve6s57ggv2k3y",
"ex_date": "2025-11-17",
"meta": { "recorded_at": "2026-08-28T14:39:01.654Z" },
"pay_date": "2025-11-14",
"record_date": "2025-11-10",
"split_from": "1.0000000000",
"split_to": "10.0000000000"
}
],
"type": "list",
"meta": { "recorded_at": "2026-10-13T23:16:21.462Z" }
}Add these parameters to the URL query string.
afterstringOptionalThe previous response's next value, unchanged. Send the other parameters as before.
declaration_datestringOptionalComparisons on the declaration date, as for ex_date.
effectivestringOptionalReturns what was in effect at this instant, an RFC 3339 timestamp no later than now, using current knowledge. In a URL written by hand, write a + offset as %2B. Try it, and clients that encode query values such as Python's params, take + as is. Omit for the current state.
effective_datestringOptionalComparisons on the effective date, as for ex_date.
event_typestringOptionalOnly these event types, as one value or a comma-separated list: cash_dividend, split, reverse_split, stock_dividend, ticker_change, delisting, rights_issue, spinoff or merger. Case-insensitive.
ex_datestringOptionalOnly actions whose ex-date meets every comparison, comma-separated. YYYY-MM-DD alone matches that day. gte:, gt:, lte:, lt: and eq: set a bound, so gte:2026-10-01,lt:2026-11-01 is October 2026. Actions without an ex-date are left out.
expandstringOptionalRelations to include in full instead of as IDs, comma-separated: applies_to, paid_in, predecessor.
limitintegerDefault 50Page size, 1 to 100.
pay_datestringOptionalComparisons on the pay date, as for ex_date.
record_datestringOptionalComparisons on the record date, as for ex_date.
statusstringOptionalOnly actions in these states, as one value or a comma-separated list: announced, confirmed, applied or cancelled. Case-insensitive.
Response
200 · application/jsonReturns a JSON object with the following fields.
continuesbooleanWhether another page follows.
dataobject[]The corporate actions on this page. A field that does not apply to an event, or is not known yet, is left out.
event_typestringType of event. New values can be added. Treat an unrecognized value as unknown.
- split
- reverse_split
- cash_dividend
- stock_dividend
- spinoff
- merger
- ticker_change
- delisting
- rights_issue
- unknown
idstringPermanent ID, such as ca-01m14cxqtkenq8n0qvdc3rxx2m.
statusstringannounced, then confirmed, then applied, or else cancelled. New values can be added. Treat an unrecognized value as unknown.
- announced
- confirmed
- applied
- cancelled
- unknown
typestringAlways corporate_action.
applies_tostring | objectID of the asset the event belongs to. With expand=applies_to, the full asset, as Get an asset returns it.
ex_datestringThe first trading day the price reflects the event, YYYY-MM-DD. Never set together with effective_date.
metaobjectWhen the record, as served, last changed.
recorded_atstringWhen the record last changed. A read pinned to an earlier effective instant reports the change behind what it shows, never a later one.
effective_atstringThe effective instant a single read was pinned to, echoed back; absent on an unpinned read. A list echoes it on its own meta.
pay_datestringWhen the distribution is paid or delivered, YYYY-MM-DD.
Show 11 moreShow fewer
record_datestringHolder-of-record date, YYYY-MM-DD, which decides who is entitled to a distribution.
split_fromstringShare count before a split or reverse split, as a decimal string: split_from old shares become split_to new ones.
split_tostringShare count after a split or reverse split, as a decimal string. A 10-for-1 split has split_from "1.0000000000" and split_to "10.0000000000".
declaration_datestringThe day the issuer declared the dividend, YYYY-MM-DD, where published.
effective_datestringThe day a rename or delisting takes hold, YYYY-MM-DD. Never set together with ex_date.
gross_amountstringDividend per share before withholding tax, as a decimal string, in the paid_in currency.
net_amountstringDividend per share after deductions, as published, in the paid_in currency. Rarely present.
new_tickerstringThe ticker after a ticker_change.
paid_instring | objectID of the currency asset the dividend is declared in, which its amounts use. With expand=paid_in, the full asset, as Get an asset returns it.
predecessorstring | objectID of the predecessor asset, for events that have one. With expand=predecessor, the full asset, as Get an asset returns it.
previous_tickerstringThe ticker before a ticker_change.
typestringAlways list.
metaobjectWhen the served data was recorded, and the effective instant when one was requested.
recorded_atstringWhen the served data was recorded.
effective_atstringThe effective instant the read was pinned to, where one was given.
nextstringSend it unchanged as after, with the request's other parameters, for the next page. Present while continues is true.
Status codes returned when a request fails.
- 400
- A parameter is malformed, effective is in the future, a query parameter is unknown (parameter_invalid), the Pyth-Version value is not served (version_unsupported), or the Authorization header is empty or not a bearer credential (credential_malformed).
- 401
- The credential is missing or not recognized (credential_missing, credential_unknown).
- 403
- The API key's plan does not include corporate actions (package_required), or the access token is expired or not valid (credential_rejected).
- 429
- Rate limit exceeded.
- 503
- The service is temporarily unavailable.