# Get a transcript

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

`GET /v1/events/{event_id}/transcript`

One page of an event's transcript words, oldest first, for sources whose rights allow it.

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

### Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | The event id (`ev_…`). |

### Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `since` | integer | no | Return words with `seq` above this; pass the previous page's `last_seq`. Default `0`. |
| `source_id` | string | no | One source. |
| `limit` | integer | no | Words per page. 1 to 20,000. Default `2000`. |

## Request

**curl**

```bash
curl "https://api.langbot.ai/v1/events/ev_kxexamplemention_26nov01/transcript?since=0"
```

**Python**

```python
from langbot import LangbotClient

async with LangbotClient() as lb:
    t = await lb.transcript("ev_kxexamplemention_26nov01", since=0)
    print(t.text, t.last_seq)
```

**TypeScript**

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

const lb = new LangbotClient();
const t = await lb.transcript("ev_kxexamplemention_26nov01", { since: 0 });
console.log(t.text, t.last_seq);
```

## Response

`200 OK`

```json
{
  "event_id": "ev_kxexamplemention_26nov01",
  "since": 0,
  "last_seq": 7,
  "count": 3,
  "delay_ms": 60000,
  "held": false,
  "rights": "public_domain",
  "redacted_sources": [],
  "text": "tariffs are working",
  "words": [
    { "word": "tariffs", "t_start": 1793566807000, "t_end": 1793566807200, "speaker": "SPK_1", "seq": 7, "source_id": "src_example_public" },
    { "word": "are", "t_start": 1793566807250, "t_end": 1793566807450, "speaker": "SPK_1", "seq": 7, "source_id": "src_example_public" },
    { "word": "working", "t_start": 1793566807500, "t_end": 1793566807700, "speaker": "SPK_1", "seq": 7, "source_id": "src_example_public" }
  ]
}
```

Words come only from `public_domain` and `licensed` sources; others are listed in `redacted_sources` and `last_seq` still advances past them. `held: true` means your plan's delay is holding the next words back: poll again.

## Errors

| Status | `code` | When |
|---|---|---|
| 404 | `not_found` | No event with that id. |
| 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).
