Frequently asked questions
The implementation details buyers actually ask about.
The answers below mirror the current calendar documentation rather than using generic marketing language.
Which currencies are supported?
All major currencies (USD, EUR, GBP, JPY, AUD, NZD, CAD, CHF) plus CNY, INR, BRL, and others. You can filter by one or multiple currencies using comma-separated values.
How far ahead does the calendar look?
Up to 30 days ahead in a single request — either with next_hours (max 720 hours) or an explicit from/to range (max 30 days). The schedule typically carries several weeks of upcoming events, and forecast or previous values are present on roughly three quarters of them; the rest fill in as the release approaches. Requesting a range wider than 30 days returns a RANGE_TOO_LARGE error. A wide window usually holds more than one page — limit caps at 500 results, so follow pagination.has_more and use offset to read the far end of the window.
Can I fetch events that just released?
Yes — prev_hours opens a rolling look-back window of 1–96 hours over recently released events, and a pure look-back query comes back newest-first so the latest release sits on page one. Combine it with the forward window to straddle the current moment, as long as the combined span stays inside the 30-day range ceiling.
When are actual values populated?
Released values appear at announcement time on Starter and above. Until an event releases — and on every tier below Starter — the actual field is null, while forecast and previous are available to everyone. Some events never carry a numeric actual at all: speeches, press conferences and rate statements have nothing to publish.
What is the difference between source=primary and source=secondary?
Both streams carry scheduling information. Primary rows are the only rows that can receive released actuals and they are the rows that carry a series_id. Secondary rows keep actual and series_id null. Most applications can use the default combined view; the source filter exists for advanced polling logic, and anything other than those two exact lowercase tokens is rejected with 400 INVALID_SOURCE.
Can I filter the calendar by event name?
Yes. Use q for a case-insensitive title search, with a maximum query length of 100 characters. Currency filtering accepts comma-separated codes, and country is an alias for currencies.
Is the calendar a historical archive?
No. The endpoint is designed for upcoming schedules and recent release monitoring, and prev_hours is capped at 96 hours. If you need long-term event-history warehousing, persist the rows your own application consumes or talk to us about a custom requirement.
Is this available on all plans?
The calendar is a paid endpoint. Free and trial keys receive 403 PLAN_UPGRADE_REQUIRED and cannot call it. Pay-As-You-Go, Starter, Pro and Enterprise can. A second, separate gate controls the released actual value: only Starter and above receive it, so a PAYG caller consumes credits per call and still sees actual as null — if you need released values, Starter is the plan to be on rather than PAYG credits.