List catalyst events
The discrete, company-confirmed news events for an instrument - the catalyst-class facts, newest first. A strict subset of /news filtered to isCompanyConfirmed=true, so nothing here is a rumour or third-party-only report. Filter by date range and eventClass; cap with limit.
The discrete, company-confirmed news events for an instrument - the catalyst-class facts, newest first. A strict subset of /news filtered to isCompanyConfirmed=true, so nothing here is a rumour or third-party-only report. Filter by date range and eventClass; cap with limit.
Authorization
ApiKeyAuth events:readPresent your API key as a bearer token: Authorization: Bearer pk_live_....
Two environments are issued per account. A pk_test_ sandbox key returns the SAME real historical data as a live key and does NOT consume your LIVE allowance, so learning the API is free. It has its own separate windows and can be rate limited on them. A pk_live_ key reads against your allowance.
Keys carry explicit scopes (instruments:read, prices:read, actions:read, fx:read, earnings:read, options:read, news:read, sentiment:read, events:read, analytics:read, correlations:read, technicals:read, macro:read) and are enforced fail-closed, so a leaked key is bounded to what it was issued for. Revocation is immediate.
In: header
Scope: events:read
Path Parameters
Instrument identifier (UUID).
uuidQuery Parameters
Earliest published date, inclusive. Omit for no lower bound.
^\d{4}-\d{2}-\d{2}$Latest published date, inclusive. Omit for no upper bound.
^\d{4}-\d{2}-\d{2}$Only confirmed events of this catalyst class. Omit for every class.
1 <= lengthMaximum rows to return, newest first. Defaults to 100, capped at 500 so a single call cannot become an unbounded scan.
0 < value <= 500100Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/instruments/497f6eca-6276-4993-bfeb-53cbbbba6f08/events"{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "instrumentId": "48367a03-b541-4ea7-88a6-ae604df75c64", "eventClass": "string", "headline": "string", "source": "string", "url": "string", "publishedAt": "string", "isCompanyConfirmed": true, "createdAt": "string" } ], "meta": { "asOf": "string", "source": "string", "stale": true }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}{ "error": { "code": "invalid_request", "message": "string", "docsUrl": "http://example.com", "details": { "property1": [ "string" ], "property2": [ "string" ] } }}List event reactions GET
How an instrument has historically moved on each class of event: the signed reactionPct (direction) and absMovePct (magnitude) per event date, optionally narrowed to one eventClass. Each row declares isCorporateAdjusted and, when true, the actionSetVersion the statistic was computed against - a reaction must PROVE it used an adjusted series rather than the response silently assuming it.
Get an intraday bar series GET
Sub-daily bars at 1min, 5min, 15min, 30min or 1hour resolution. These bars are RAW and are NOT corporate-action adjusted - there is no adjusted parameter, because adjustment is a daily-series concern and applying a split ratio to sub-daily bars inside a live session produces numbers no exchange ever printed. Use the daily price endpoint with adjusted=true for an adjusted series. Served for equity, etf, index and crypto instruments; every other asset class is refused with 400 rather than answered from a chain that cannot serve sub-daily data. A provider that cannot serve the requested resolution is skipped by failover, never substituted with a coarser series, so the returned interval always equals the requested one.