# List official releases

Source: https://langbot.ai/docs/api/live-events/list-official-releases

`GET /v1/releases`

Official US federal publications on Langbot's clock, newest first, from the Fed, BLS, BEA, Treasury, the White House and the Federal Register.

**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 |
|---|---|---|---|
| `agency` | string | no | Comma-separated: `fed`, `bls`, `bea`, `treasury`, `whitehouse`, `fedreg`. |
| `source_id` | string | no | Comma-separated official source ids (`src_wire_bls`, `src_wire_treasury_auctions`, …). |
| `q` | string | no | Words the title must contain. |
| `since` | integer | no | Publish time from, ms epoch (default 7 days back). |
| `until` | integer | no | Publish time before, ms epoch. |
| `linked` | boolean | no | `true` for releases a calendar row links (scheduled releases), `false` for the rest. |
| `text` | boolean | no | `true` to include each release's full text. Default `false`. |
| `cursor` | string | no | `next_cursor` from the previous page. |
| `limit` | integer | no | Page size. 1 to 200. Default `50`. |

## Request

**curl**

```bash
curl "https://api.langbot.ai/v1/releases?agency=bls,treasury&linked=true&limit=1"
```

**Python**

```python
from langbot import LangbotClient

async with LangbotClient() as lb:
    for r in await lb.official_releases(agencies=["bls", "treasury"], linked=True):
        print(r.t_detected, r.title, r.calendar.release.latency_ms if r.calendar else None)
```

**TypeScript**

```ts
import { LangbotClient } from "@langbotai/sdk";

const lb = new LangbotClient();
const releases = await lb.officialReleases({ agencies: ["bls", "treasury"], linked: true });
for (const r of releases) console.log(r.t_detected, r.title);
```

## Response

`200 OK`

```json
{
  "ts": 1794317460000,
  "since": 1793712660000,
  "until": null,
  "delay_ms": 0,
  "rights": "public_domain",
  "next_cursor": "cmVsOjE3OTQzMTc0MDIxMDA6ZXZ0XzBHQVY0S0NDMDkxRjAxRksyREU0QVA5WTQ2",
  "releases": [
    {
      "id": "evt_0GAV4KCC091F01FK2DE4AP9Y46",
      "source_id": "src_wire_bls",
      "agency_key": "bls",
      "title": "CPI for all items increases 0.3% in October",
      "url": "https://www.bls.gov/news.release/archives/cpi_11102026.htm",
      "published_at": "2026-11-10T07:50:31.2-05:00",
      "author": null,
      "agency": "U.S. Bureau of Labor Statistics",
      "summary": "In October, the Consumer Price Index for All Urban Consumers rose 0.3 percent, seasonally adjusted…",
      "t_published": 1794317402100,
      "t_detected": 1794317402100,
      "t_emitted": 1794317402141,
      "seq": 41,
      "hash": "5b0c8d3e0f4a…",
      "chain_seq": 42,
      "extra": {"release": "cpi", "release_name": "Consumer Price Index"},
      "calendar": {
        "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": {"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}
      }
    }
  ]
}
```

Each release is a feed event on the same clock as the transcripts and the market data: `t_published` is the item's own publish time, `t_detected` when Langbot first saw it, `t_emitted` when the feed sent it; `id` is the event id, so [Get a receipt](https://langbot.ai/docs/api/receipts/get-receipt) verifies it. BLS stamps its feed entries when the release is staged, before it is public, so a BLS release's `t_published` is when Langbot first saw it and the BLS stamp stays in `published_at`. `extra` carries what the source adds: the release series and headline numbers (BEA `current` / `previous`), the auction's `cusip` and `results` (high rate or yield, bid-to-cover, bidder shares). US federal works are public domain, so `text=true` returns the full text. On the live stream the same items arrive as `text_posted` events when you ask for them (`types=text_posted`, or the source's `ev_wire_…` event).

## Errors

| Status | `code` | When |
|---|---|---|
| 422 | `validation_error` | An unknown agency, or a `source_id` that is not an official source. |
| 400 | `bad_request` | A `cursor` that is not one this endpoint returned. |
| 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](https://langbot.ai/docs/api#errors).
