Skip to Content
IntegrationsAPIGET /v1/sessions

GET /v1/sessions

Same behavior as GET /v1/meetings, but for ended RPG sessions on the server linked to your API key. Each row uses recording_type: "session".

Request

GET /v1/sessions?page=1
Authorization: Bearer <token>
QueryRequiredDescription
pageNo1-based page (default 1). Must be a positive integer.
sinceNoISO8601 cutoff (e.g. 2026-05-25T00:00:00Z). Defaults to 30 days ago. Max lookback 1 year.
limitNoOverride the default page size. Default 50, capped at 50.
campaign_idNoScope the list to one campaign. Resolve the id from GET /v1/campaigns by matching the user-facing campaign name.

Successful response

Status: 200 OK
Content-Type: application/json

{
  "sessions": [
    {
      "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"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 50,
    "next": false,
    "prev": false
  }
}

The sessions array uses the same fields per item as meetings in the meetings endpoint, plus two session-only fields: campaign_id (integer) and campaign_name (string). Meetings have no campaign, so those two keys never appear on a meetings payload.

Last updated on