Skip to Content
IntegrationsAPIGET /v1/meetings/:id/live

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 paramRequiredDescription
afterNoThe 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 cursor back as after on 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_at if order matters.
  • When status turns to ended, stop polling. The finished transcript and notes are available from GET /v1/meetings/:id or GET /v1/sessions a minute or two later, and in the transcript.ready webhook.

People who haven’t given consent on a server with consent opt-in are never transcribed, live or afterwards.

Errors

StatusWhen
404 Not FoundThe recording doesn’t exist, or belongs to a different Discord server than your token.
503 Service UnavailableThe 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.

Last updated on