# Get the calendar

Source: https://langbot.ai/docs/api/live-events/get-calendar

`GET /v1/calendar`

Live and upcoming events for the next days, with their sources, markets, speaker keys and rights.

**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).

## Parameters

### Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `days` | integer | no | How many days ahead. 1 to 90. Default `7`. |
| `limit` | integer | no | Page size. 1 to 1000. Default `200`. |

## Request

**curl**

```bash
curl "https://api.langbot.ai/v1/calendar?days=2&limit=1"
```

**Python**

```python
from langbot import LangbotClient

async with LangbotClient() as lb:
    for e in await lb.calendar(days=2):
        print(e.id, e.starts_at, e.title)
```

**TypeScript**

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

const lb = new LangbotClient();
const events = await lb.calendar({ days: 2 });
console.log(events);
```

## Response

`200 OK`

```json
{
  "ts": 1793685876387,
  "days": 2,
  "count": 1,
  "events": [
    {
      "id": "ev_kxwhpressbriefing",
      "title": "Who will attend a White House Press Briefing in 2026?",
      "kind": "other",
      "starts_at": 1767898800000,
      "ends_at": 1798779540000,
      "status": "scheduled",
      "meta": {
        "venue": "kalshi",
        "window": true,
        "company": null,
        "category": "Politics",
        "sub_title": "Before 2027",
        "date_known": true,
        "time_known": false,
        "speaker_key": "whpressbriefing",
        "timing_note": "window market",
        "event_ticker": "KXWHPRESSBRIEFING",
        "market_count": 10,
        "series_title": "Who will attend a White House Press Briefing?",
        "series_ticker": "KXWHPRESSBRIEFING",
        "settlement_sources": ["The New York Times", "the Associated Press"]
      },
      "speaker_keys": [],
      "rights": "public_domain",
      "sources": [
        {
          "id": "src_kxwhpressbriefing_whitehouse_youtube_live",
          "event_id": "ev_kxwhpressbriefing",
          "kind": "hls",
          "expected_latency_ms": 20000,
          "status": "planned",
          "rights": "public_domain",
          "retention_days": 30
        }
      ],
      "markets": [
        {
          "ticker": "KXWHPRESSBRIEFING-TGAB",
          "venue": "kalshi",
          "event_id": "ev_kxwhpressbriefing",
          "title": "Will Tulsi Gabbard attend any White House press briefing which takes place in the James S. Brady Press Briefing Room?",
          "rules_text": "If Tulsi Gabbard attends any White House press briefing which takes place in the James S. Brady Press Briefing Room after Issuance and before 2027, then the…",
          "phrases": ["tulsi gabbard"],
          "status": "open",
          "close_ts": 1798779540000
        },
        {
          "ticker": "KXWHPRESSBRIEFING-BJOH",
          "venue": "kalshi",
          "event_id": "ev_kxwhpressbriefing",
          "title": "Will Benny Johnson attend any White House press briefing which takes place in the James S. Brady Press Briefing Room?",
          "rules_text": "If Benny Johnson attends any White House press briefing which takes place in the James S. Brady Press Briefing Room after Issuance and before 2027, then the…",
          "phrases": ["benny johnson"],
          "status": "open",
          "close_ts": 1798779540000
        }
      ],
      "phrases": ["ben shapiro", "benny johnson"]
    }
  ]
}
```

A real response from the API; long lists are cut to their first items.

## Errors

| Status | `code` | When |
|---|---|---|
| 401 | `token_invalid` | A token was sent and not recognised. Send a valid one, or none to call anonymously. |
| 422 | `validation_error` | A parameter failed validation; `detail[].loc` names it. |
| 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).
