API reference · Live events
Get the economic calendar
GET/v1/calendar/economic
Scheduled market-moving US releases with their exact times (BLS, BEA, FOMC, Treasury auctions), and the release each was linked to once it was out.
On this page
Auth. None. Without a token the call is served as Free (the Free delay and request budget, shared per IP); send Authorization: Bearer lb_… for your plan's.
Limits. Counts against your plan's API requests (60, 600 or 3,000 a minute on Free, Builder and Standard). Served at your plan's delay (+60 s Free, +10 s Builder, +2 s Standard).
Parameters
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
since | integer | no | Start of the window, ms epoch (default a day ago). |
until | integer | no | End of the window, ms epoch (default since plus days). |
days | integer | no | Window length in days when until is not given. 1 to 400. Default 14. |
kind | string | no | Comma-separated kinds: cpi, jobs, ppi, jolts, eci, gdp, pce, trade, fomc_statement, fomc_press_conference, treasury_auction, and the others listed below. |
agency | string | no | Comma-separated: bls, bea, fed, treasury. |
importance | string | no | Comma-separated: high, medium, low. |
status | string | no | Comma-separated: scheduled, released, removed (default scheduled,released). |
limit | integer | no | Page size. 1 to 1000. Default 200. |
Request
curl "https://api.langbot.ai/v1/calendar/economic?kind=cpi,fomc_statement&days=40"from langbot import LangbotClient
async with LangbotClient() as lb:
for e in await lb.economic_calendar(kinds=["cpi", "fomc_statement"], days=40):
print(e.scheduled_at, e.title, e.release.latency_ms if e.release else None)import { LangbotClient } from "@langbotai/sdk";
const lb = new LangbotClient();
const rows = await lb.economicCalendar({ kinds: ["cpi", "fomc_statement"], days: 40 });
for (const e of rows) console.log(e.scheduled_at, e.title, e.release?.latency_ms);Response
200 OK
{
"ts": 1794317460000,
"since": 1794231060000,
"until": 1797687060000,
"delay_ms": 0,
"count": 2,
"entries": [
{
"id": "ecal_bls_cpi_20261110",
"kind": "cpi",
"agency": "bls",
"title": "Consumer Price Index",
"scheduled_at": 1794317400000,
"time_known": true,
"importance": "high",
"status": "released",
"source_ids": ["src_wire_bls"],
"meta": {"origin": "https://www.bls.gov/schedule/news_release/bls.ics", "release": "cpi"},
"release": {
"event_id": "evt_0GAV4KCC091F01FK2DE4AP9Y46",
"source_id": "src_wire_bls",
"title": "CPI for all items increases 0.3% in October",
"url": "https://www.bls.gov/news.release/archives/cpi_11102026.htm",
"released_at": 1794317402100,
"first_seen_at": 1794317402100,
"latency_ms": 2100,
"publish_latency_ms": 2100
}
},
{
"id": "ecal_fomc_statement_20261209",
"kind": "fomc_statement",
"agency": "fed",
"title": "FOMC statement (December 8-9, 2026, with projections)",
"scheduled_at": 1796842800000,
"time_known": true,
"importance": "high",
"status": "scheduled",
"source_ids": ["src_wire_fed_press"],
"meta": {"origin": "https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm", "sep": true, "time_basis": "standard"},
"release": null
}
]
}Times are ms epoch; the agencies schedule in US Eastern time. Schedules come from the agencies themselves: the BLS release calendar, BEA's release schedule, the Federal Reserve's FOMC calendar (statements at 2:00 pm and press conferences at 2:30 pm Eastern, the Fed's standing practice, so meta.time_basis is standard) and TreasuryDirect's announced auctions. Other kinds: real_earnings, import_prices, productivity, ecec, state_jobs, bls_other, bea_other.
Once a release is out, release names the official item that carried it (List official releases): latency_ms is when Langbot first saw it minus the scheduled time, publish_latency_ms the item's own publish time minus the scheduled time. The link follows your plan's delay: until the item is visible to you the row reads scheduled. A press conference has no text item and stays scheduled. removed rows are releases the agency took off its schedule.
Errors
| Status | code | When |
|---|---|---|
| 422 | validation_error | An unknown kind, agency, importance or status, or a window that ends before it starts or spans more than 400 days. |
| 401 | token_invalid | A token was sent and not recognised. Send a valid one, or none to call anonymously. |
| 429 | rate_limited | Over your request budget; wait Retry-After seconds. |
Every error body is {"detail": …, "code": "…"}; branch on code. All codes: Errors.