Meet API Docs Dashboard
On this page

Sessions and Transcripts API

A session is one sitting in a room. Sessions are kept after the call ends, so you can read who was there, the transcript and the chat.

Transcripts are paginated when format=json (the default). With format=txt, vtt or srt the body is the whole transcript as plain text. Chat attachments are not exposed, only has_attachment.

Past and current sessions, newest first#

GET /api/v1/sessions

Parameters

NameInTypeDescription
roomquerystringOnly this room's sessions
statusquerystringOne of active, ended
limitqueryintegerDefault 10. Between 1 and 100
starting_afterquerystring (uuid)The id of the last session of the previous page

Response

200 A page of sessions

FieldTypeDescription
object"list"
dataarray of Session
data[].object"session"
data[].idstring
data[].roomstring
data[].room_idstring
data[].statusstringOne of active, ended
data[].started_atstring
data[].ended_atstring or null
data[].end_reasonstring or null
data[].duration_secondsinteger
data[].participant_countinteger
data[].livemodeboolean
data[].participantsarray of object
data[].participants[].idstring
data[].participants[].namestring
data[].participants[].rolestring
data[].participants[].languagestring or null
data[].participants[].admittedboolean
data[].participants[].joined_atstring
data[].participants[].left_atstring or null
data[].participants[].duration_secondsinteger
has_moreboolean
json
{
  "object": "list",
  "data": [
    {
      "object": "session",
      "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
      "room": "order-1042",
      "room_id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
      "status": "active",
      "started_at": "2026-11-02T09:31:12Z",
      "ended_at": "2026-11-02T09:30:00Z",
      "end_reason": "end_reason",
      "duration_seconds": 1860,
      "participant_count": 1,
      "livemode": false,
      "participants": [
        {
          "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
          "name": "order-1042",
          "role": "role",
          "language": "en",
          "admitted": false,
          "joined_at": "2026-11-02T09:31:12Z",
          "left_at": "2026-11-02T09:30:00Z",
          "duration_seconds": 1860
        }
      ]
    }
  ],
  "has_more": false
}

Errors

StatusMeaning
400invalid_parameter, unknown_parameter or invalid_json; param names the field
401invalid_api_key or revoked_api_key
429rate_limited; wait Retry-After seconds

Every error has the shape {"error": {"code", "message", "param"?}}. See Errors.

Examples

bash
curl "https://meet.respiresoft.com/api/v1/sessions?room=order-1042&status=ended" \
  -H "Authorization: Bearer $MEET_API_KEY"
javascript
import { Meet } from "@respiresoft/meet";

const meet = new Meet({ apiKey: process.env.MEET_API_KEY });

for await (const s of meet.sessions.list({ room: "order-1042", status: "ended" })) { console.log(s.id, s.duration_seconds); }

One session with its participants#

GET /api/v1/sessions/{session_id}

Parameters

NameInTypeDescription
session_id requiredpathstring (uuid)

Response

200 The session

FieldTypeDescription
object"session"
idstring
roomstring
room_idstring
statusstringOne of active, ended
started_atstring
ended_atstring or null
end_reasonstring or null
duration_secondsinteger
participant_countinteger
livemodeboolean
participantsarray of object
participants[].idstring
participants[].namestring
participants[].rolestring
participants[].languagestring or null
participants[].admittedboolean
participants[].joined_atstring
participants[].left_atstring or null
participants[].duration_secondsinteger
json
{
  "object": "session",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "room": "order-1042",
  "room_id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "status": "active",
  "started_at": "2026-11-02T09:31:12Z",
  "ended_at": "2026-11-02T09:30:00Z",
  "end_reason": "end_reason",
  "duration_seconds": 1860,
  "participant_count": 1,
  "livemode": false,
  "participants": [
    {
      "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
      "name": "order-1042",
      "role": "role",
      "language": "en",
      "admitted": false,
      "joined_at": "2026-11-02T09:31:12Z",
      "left_at": "2026-11-02T09:30:00Z",
      "duration_seconds": 1860
    }
  ]
}

Errors

StatusMeaning
401invalid_api_key or revoked_api_key
404room_not_found, session_not_found or participant_not_found
429rate_limited; wait Retry-After seconds

Every error has the shape {"error": {"code", "message", "param"?}}. See Errors.

Examples

bash
curl "https://meet.respiresoft.com/api/v1/sessions/6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10" \
  -H "Authorization: Bearer $MEET_API_KEY"
javascript
import { Meet } from "@respiresoft/meet";

const meet = new Meet({ apiKey: process.env.MEET_API_KEY });

const session = await meet.sessions.get("6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10"); console.log(session.participants.length);

The caption lines of a session#

GET /api/v1/sessions/{session_id}/transcript

Parameters

NameInTypeDescription
session_id requiredpathstring (uuid)
formatquerystringOne of json, txt, vtt, srt. Default json
langquerystringShow this translation where a line has one
limitqueryintegerjson only. Default 1000. Between 1 and 5000
starting_afterquerystring (uuid)json only: the id of the last line of the previous page

Response

200 JSON, or text/plain, text/vtt or application/x-subrip with times counted from the start of the session

FieldTypeDescription
object"transcript"
session_idstring
langstring or null
dataarray of object
data[].idstring
data[].speakerstring or null
data[].languagestring or null
data[].textstring
data[].translationsobject
data[].start_msintegerFrom the start of the session
data[].end_msinteger
data[].atstring
has_moreboolean
json
{
  "object": "transcript",
  "session_id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "lang": "en",
  "data": [
    {
      "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
      "speaker": "Ann",
      "language": "en",
      "text": "Hello everyone",
      "start_ms": 4200,
      "end_ms": 4200,
      "at": "2026-11-02T09:33:05Z"
    }
  ],
  "has_more": false
}

Errors

StatusMeaning
400invalid_parameter, unknown_parameter or invalid_json; param names the field
401invalid_api_key or revoked_api_key
404room_not_found, session_not_found or participant_not_found
429rate_limited; wait Retry-After seconds

Every error has the shape {"error": {"code", "message", "param"?}}. See Errors.

Examples

bash
curl "https://meet.respiresoft.com/api/v1/sessions/6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10/transcript?format=vtt&lang=es" \
  -H "Authorization: Bearer $MEET_API_KEY"
javascript
import { Meet } from "@respiresoft/meet";

const meet = new Meet({ apiKey: process.env.MEET_API_KEY });

const vtt = await meet.sessions.transcript("6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10", { format: "vtt", lang: "es" }); console.log(vtt);

The chat messages of a session, oldest first#

GET /api/v1/sessions/{session_id}/chat

Parameters

NameInTypeDescription
session_id requiredpathstring (uuid)
limitqueryintegerDefault 100. Between 1 and 100
starting_afterquerystring (uuid)

Response

200 A page of messages

FieldTypeDescription
object"list"
session_idstring
dataarray of object
data[].idstring
data[].authorstring or null
data[].participant_idstring or null
data[].textstring
data[].has_attachmentboolean
data[].reply_tostring or null
data[].created_atstring
has_moreboolean
json
{
  "object": "list",
  "session_id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "data": [
    {
      "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
      "author": "Ann",
      "participant_id": "participant_id",
      "text": "Hello everyone",
      "has_attachment": false,
      "reply_to": "reply_to",
      "created_at": "2026-11-02T09:30:00Z"
    }
  ],
  "has_more": false
}

Errors

StatusMeaning
400invalid_parameter, unknown_parameter or invalid_json; param names the field
401invalid_api_key or revoked_api_key
404room_not_found, session_not_found or participant_not_found
429rate_limited; wait Retry-After seconds

Every error has the shape {"error": {"code", "message", "param"?}}. See Errors.

Examples

bash
curl "https://meet.respiresoft.com/api/v1/sessions/6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10/chat" \
  -H "Authorization: Bearer $MEET_API_KEY"
javascript
import { Meet } from "@respiresoft/meet";

const meet = new Meet({ apiKey: process.env.MEET_API_KEY });

for await (const m of meet.sessions.chat("6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10")) { console.log(m.author, m.text); }