List economic events
The macro calendar, newest scheduled release first. Filter by scheduled-date range, eventClass, country and importance. actual, forecast and previous are the provider strings (e.g. "3.2%") returned VERBATIM - never parsed into a number, because the figure is often not a clean number and a parse presented as authoritative would fabricate a value the provider never gave. eventClass and importance are closed enums drawn from the ingest classifier, so a value outside the documented taxonomy is a 400 rather than a silent empty result.
The macro calendar, newest scheduled release first. Filter by scheduled-date range, eventClass, country and importance. actual, forecast and previous are the provider strings (e.g. "3.2%") returned VERBATIM - never parsed into a number, because the figure is often not a clean number and a parse presented as authoritative would fabricate a value the provider never gave. eventClass and importance are closed enums drawn from the ingest classifier, so a value outside the documented taxonomy is a 400 rather than a silent empty result.
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
Query Parameters
Earliest scheduled date, inclusive. Omit for no lower bound.
^\d{4}-\d{2}-\d{2}$Latest scheduled date, inclusive. Omit for no upper bound.
^\d{4}-\d{2}-\d{2}$Only events of this documented class, e.g. cpi. Omit for every class.
Value in
- "fomc"
- "cpi"
- "ppi"
- "pce"
- "nfp"
- "unemployment_rate"
- "jobless_claims"
- "gdp"
- "retail_sales"
Only events for this country, e.g. US. Omit for every country.
1 <= lengthOnly events at this importance. Omit for every importance.
Value in
- "high"
- "medium"
- "low"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/economic-events"{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "eventClass": "string", "title": "string", "country": "string", "scheduledAt": "string", "actual": "string", "forecast": "string", "previous": "string", "importance": "string", "source": "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 economic-event reactions GET
How each proxy instrument moved after ONE economic event: the SIGNED reactionPct (direction), the absMovePct (magnitude), and crucially the medianAbsMovePct baseline the move was judged against - so a consumer can see WHY isSignificant is what it is rather than taking the verdict on faith. A quiet reaction is returned with isSignificant false, never dropped. Returns 404 for an unknown event id.
List event-reaction coverage GET
Which instruments have enough measured reaction history to be worth acting on, as ONE aggregate rather than one call per instrument. Per instrument: reactionCount (the N), firstEventDate, lastEventDate and the observationWindowDays they span. Both are published because neither alone is the claim - six reactions inside one month is six measurements of a single market regime, not a history - so a caller can require a count AND a span via minReactions and minWindowDays. The filters are echoed in assumptions, so any returned set is reproducible. Only instruments with a current symbol row are returned; an instrument we cannot name is not a usable answer. Screening a universe with the per-instrument event-reactions endpoint costs one request per candidate, which is exactly what this endpoint exists to remove. eventClasses takes a comma-separated SET (`earnings,fomc,cpi`) because measurable history is a union: an ETF or a crypto never reports earnings but can have years of measured macro reactions, and asking one class at a time made that history invisible.