Skip to Content
IntegrationsAPIGET /v1/sessions/:id

GET /v1/sessions/:id

Returns a single ended RPG session by its public UUID. Same payload as a row in GET /v1/sessions: full notes, transcript, participants, audio URL, plus the session’s campaign_id and campaign_name.

Use this when you already have a session’s meeting_id (from a transcript.ready webhook with recording_type: "session", a previous list call, or an MCP tool result) and want that one session.

Request

GET /v1/sessions/<meeting_id>
Authorization: Bearer <token>
Path paramRequiredDescription
meeting_idYesThe session’s public UUID (the meeting_id in list responses and webhook payloads).

No query string. No request body.

Example

GET /v1/sessions/6ba7b810-9dad-11d1-80b4-00c04fd430c8
Authorization: Bearer <token>

Successful response

Status: 200 OK Content-Type: application/json

{
  "session": {
    "meeting_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
    "guild_discord_id": "987654321098765432",
    "recording_type": "session",
    "discord_channel_name": "campaign-rp",
    "participant_names": ["DM", "Rook"],
    "notes": "## Session notes\n\n…",
    "transcript": "DM [0:02]: …",
    "audio_url": "https://rails.discmeet.com/recordings/6ba7b810-9dad-11d1-80b4-00c04fd430c8/audio.mp3",
    "occurred_at": "2026-04-06T14:30:00Z",
    "campaign_id": 42,
    "campaign_name": "The Mystic Triad"
  }
}

The top-level key is session (singular), wrapping one object with exactly the fields of a GET /v1/sessions row. See overview § Response object fields for what each field means.

Not found

Status: 404 Not Found

Returned when any of these is true:

  • The meeting_id doesn’t exist, or belongs to a voice meeting rather than an RPG session (use GET /v1/meetings/:id for those).
  • The session’s campaign belongs to a different Discord server than your API token authorises.
  • The session hasn’t ended yet, or has no usable transcript.
{ "error": "not_found", "message": "Resource not found." }

If a meeting_id appears in a GET /v1/sessions response, it is always fetchable here, and the converse holds.


  • GET /v1/sessions: list sessions, filtered by since, limit, page or campaign_id.
  • GET /v1/campaigns/:id: the campaign a session belongs to, with its characters and world.
  • Webhooks: get a session’s meeting_id (and the full payload) when its transcript is ready.
Last updated on