Skip navigation

Speak API

Rooms, participants, calls, and transcripts.

Speak

Rooms

Participants

List Participants
GET {{baseHost}}/v1/speak/rooms/:room_id/participants

Returns the participants of a Speak room.

Responses
{  "meta": {    "pagination": {      "page": 1,      "per_page": 10,      "total": 0    },    "order": {      "created_at": "desc",      "name": "asc"    }  },  "data": []}
Get Participant
GET {{baseHost}}/v1/speak/rooms/:room_id/participants/:participant_id

Retrieves a participant by ID.

Responses
{  "data": {    "id": "<UUID>",    "user_id": "<UUID>",    "room_id": "<UUID>",    "name": "Name Updated",    "role": "admin",    "created_at": "2025-10-22T02:41:14.945244Z",    "updated_at": "2025-10-22T02:46:57.84099Z"  }}
Create Participant
POST {{baseHost}}/v1/speak/rooms/:room_id/participants

Adds a participant to a Speak room, optionally with a specific role.

FieldTypeDescription
user_iduuidUser ID
namestringParticipant name
rolestringadmin, manager
Responses
{  "data": {    "id": "<UUID>",    "user_id": "<UUID>",    "room_id": "<UUID>",    "name": "New Admin",    "role": "admin",    "created_at": "2025-10-22T02:41:14.945244Z",    "updated_at": null  }}
Update Participant
PATCH {{baseHost}}/v1/speak/rooms/:room_id/participants/:participant_id

Updates a participant — typically to change their role or display name.

FieldTypeDescription
namestringParticipant name
Responses
{  "data": {    "id": "<UUID>",    "user_id": "<UUID>",    "room_id": "<UUID>",    "name": "Name Updated",    "role": "admin",    "created_at": "2025-10-22T02:41:14.945244Z",    "updated_at": "2025-10-22T02:46:57.84099Z"  }}
Delete Participant
DELETE {{baseHost}}/v1/speak/rooms/:room_id/participants/:participant_id

Removes a participant from the Speak room.

Responses
{  "data": {    "success": true  }}

Calls

List Calls
GET {{baseHost}}/v1/speak/rooms/:room_id/calls

Returns a paginated list of calls for a Speak room.

Responses
{  "meta": {    "pagination": {      "page": 1,      "per_page": 10,      "total": 0    },    "order": {      "created_at": "desc"    }  },  "data": []}
Get Call
GET {{baseHost}}/v1/speak/rooms/:room_id/calls/:call_id

Retrieves a single call by ID.

Responses
{  "data": {    "id": "<UUID>",    "room_id": "<UUID>",    "transcript_id": "<UUID>",    "created_at": "2025-10-22T02:32:32.840208Z",    "updated_at": "2025-10-22T03:33:22.877221Z"  }}
{  "error": {    "code": 400404,    "message": "not found"  }}
Transcript
Get Transcript
GET {{baseHost}}/v1/speak/rooms/:room_id/calls/:call_id/transcript

Returns metadata for the transcript of a call.

Responses
{  "data": {    "call_id": "<UUID>",    "room_id": "<UUID>",    "status": "done",    "created_at": "2025-10-22T02:32:32.840208Z",    "updated_at": "2025-10-22T03:33:22.877221Z"  }}
{  "error": {    "code": 400404,    "message": "not found"  }}
Download Transcript
GET {{baseHost}}/v1/speak/rooms/:room_id/calls/:call_id/transcript/content.txt

Downloads the transcript as a plain-text file. Returns Content-Type: text/plain with a Content-Disposition: attachment header. Each line has the format [MM:SS.T-MM:SS.T] Speaker: Text. Available only when transcript status is done.

Responses
[00:00.0-00:05.3] Alice: Hello everyone, let's get started.[00:05.3-00:12.1] Bob: Sounds good, I have a few updates to share.
{  "error": {    "code": 422100,    "message": "transcript not ready"  }}

List Rooms

GET {{baseHost}}/v1/speak/rooms

Returns all Speak rooms in the workspace.

Responses
{  "meta": {    "pagination": {      "page": 1,      "per_page": 10,      "total": 0    },    "order": {      "created_at": "desc",      "name": "asc"    }  },  "data": []}

Get Room

GET {{baseHost}}/v1/speak/rooms/:room_id

Retrieves a single Speak room by ID.

Responses
{  "data": {    "id": "<UUID>",    "workspace_id": "<UUID>",    "owner_id": "<UUID>",    "type": "scheduled_meeting",    "transcript_enabled": false,    "participants": [      {        "id": "<UUID>",        "user_id": "<UUID>",        "room_id": "<UUID>",        "name": "Name Updated",        "role": "admin",        "created_at": "2025-10-22T02:41:14.945244Z",        "updated_at": "2025-10-22T02:46:57.84099Z"      }    ],    "code": "zqu-kqyh-ymz",    "name": "Room Update",    "link": "https://speak.kinescope.io/zqu-kqyh-ymz",    "status": "cancelled",    "created_at": "2025-10-22T02:32:32.840208Z",    "updated_at": "2025-10-22T03:33:22.877221Z"  }}
{  "error": {    "code": 400404,    "message": "not found"  }}

Create Room

POST {{baseHost}}/v1/speak/rooms

Creates a new Speak room. You can pre-create participants or add them later.

FieldTypeDescription
namestringRoom name
owner_iduuidUser ID
typestringRoom type - instant_meeting, permanent_meeting, scheduled_meeting
transcript_enabledbooleanEnable automatic transcription for calls. Optional, defaults to false
Responses
{  "data": {    "id": "<UUID>",    "workspace_id": "<UUID>",    "owner_id": "<UUID>",    "type": "scheduled_meeting",    "transcript_enabled": false,    "participants": [],    "code": "zqu-kqyh-ymz",    "name": "New Room",    "link": "https://speak.kinescope.io/zqu-kqyh-ymz",    "status": "scheduled",    "created_at": "2025-10-22T02:32:32.840208Z",    "updated_at": null  }}

Update Room

PATCH {{baseHost}}/v1/speak/rooms/:room_id

Updates properties of a Speak room.

FieldTypeDescription
namestringRoom name
Responses
{  "data": {    "id": "<UUID>",    "workspace_id": "<UUID>",    "owner_id": "<UUID>",    "type": "scheduled_meeting",    "transcript_enabled": false,    "participants": [],    "code": "zqu-kqyh-ymz",    "name": "Room Update",    "link": "https://speak.kinescope.io/zqu-kqyh-ymz",    "status": "scheduled",    "created_at": "2025-10-22T02:32:32.840208Z",    "updated_at": "2025-10-22T02:34:28.336038Z"  }}

Update Transcript Settings

PATCH {{baseHost}}/v1/speak/rooms/:room_id/transcript

Enables or disables automatic transcription for a room. Cannot be changed while the room has active calls.

FieldTypeDescription
transcript_enabledbooleantrue to enable, false to disable transcription
Responses
{  "data": {    "id": "<UUID>",    "workspace_id": "<UUID>",    "owner_id": "<UUID>",    "type": "scheduled_meeting",    "transcript_enabled": true,    "participants": [],    "code": "zqu-kqyh-ymz",    "name": "Room Update",    "link": "https://speak.kinescope.io/zqu-kqyh-ymz",    "status": "scheduled",    "created_at": "2025-10-22T02:32:32.840208Z",    "updated_at": "2025-10-22T02:34:28.336038Z"  }}
{  "error": {    "code": 409293,    "message": "cannot update transcript settings while room has active calls"  }}

Delete Room

DELETE {{baseHost}}/v1/speak/rooms/:room_id

Permanently deletes the Speak room. All participants lose access.

Responses
{  "data": {    "success": true  }}