GET /v1/meetings/:id/live
Returns the lines of a recording’s live transcription while it’s still going. For an RPG session, use GET /v1/sessions/:id/live; it works the same way. Find the id of what’s recording with GET /v1/live.
Each line is one sentence, timed on its own, and shows up a few seconds after the speaker pauses. Someone talking without a break (or with an open mic) is sent in pieces of up to 4 minutes, so their sentences can arrive in a batch. Names are corrected against your vocabulary and campaign roster as each line is saved. The finished transcript, from GET /v1/meetings/:id once the recording ends, is corrected again with the roster as it is then, so it can differ slightly from the live lines.
Same token, paid-plan requirement and rate limit (100 requests a minute per server) as the rest of the public API. Polling every 3 to 5 seconds is plenty.
Request
GET /v1/meetings/<id>/live?after=<cursor>
Authorization: Bearer <token>
| Query param | Required | Description |
|---|---|---|
after | No | The cursor from your previous call. Leave it out on the first call to get every line so far. |
No request body.
Response
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "meeting",
"discord_channel_id": "123456789012345678",
"started_at": "2026-10-15T09:00:04Z",
"status": "live",
"cursor": 1792055565123,
"lines": [
{
"id": "111111111111111111-1792055550120-0",
"speaker": { "discord_id": "111111111111111111", "name": "Alex" },
"text": "Let's ship it on Thursday.",
"started_at": "2026-10-15T09:12:30.120Z",
"ended_at": "2026-10-15T09:12:33.900Z"
}
]
}
- Pass
cursorback asafteron your next call to get only the new lines. - Lines can arrive out of speaking order (a long piece finishes after shorter ones that started later), so sort by
started_atif order matters. - When
statusturns toended, stop polling. The finished transcript and notes are available fromGET /v1/meetings/:idorGET /v1/sessionsa minute or two later, and in thetranscript.readywebhook.
People who haven’t given consent on a server with consent opt-in are never transcribed, live or afterwards.
Errors
| Status | When |
|---|---|
404 Not Found | The recording doesn’t exist, or belongs to a different Discord server than your token. |
503 Service Unavailable | The live transcript couldn’t be reached for a moment ("error": "live_unavailable"). Try again on your next poll. |
The live transcript also shows on the dashboard: open Transcripts while something is recording.