API reference · Live events
Get a transcript
GET/v1/events/{event_id}/transcript
One page of an event's transcript words, oldest first, for sources whose rights allow it.
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
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 "https://api.langbot.ai/v1/events/ev_kxexamplemention_26nov01/transcript?since=0"from langbot import LangbotClient
async with LangbotClient() as lb:
t = await lb.transcript("ev_kxexamplemention_26nov01", since=0)
print(t.text, t.last_seq)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
{
"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.