Meet API Docs Dashboard
On this page

Rooms API

A room is a named place people meet. Read Rooms first for how names, privacy and properties work.

Create a room#

POST /api/v1/rooms

Send an Idempotency-Key header to repeat this call safely. The same key with the same body returns the first answer for 24 hours.

Body (JSON)

FieldTypeDescription
namestringGenerated when left out. Pattern ^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$
privacystringOne of public, private. Default "public"
propertiesobject
properties.max_participantsinteger or nullMin 1, max 200
properties.start_audio_offbooleanDefault false
properties.start_video_offbooleanDefault false
properties.enable_chatbooleanDefault true
properties.enable_screensharebooleanDefault true
properties.enable_knockingbooleanWaiting room: the host admits people. Default false
properties.enable_captionsbooleanDefault true
properties.enable_translationbooleanDefault false
properties.languagesarray of stringTranslation languages; at least one when enable_translation is true. Up to 5 items
properties.expinteger or nullUnix seconds; the room stops opening
properties.nbfinteger or nullUnix seconds; the room opens at this time
properties.langstring or null
properties.stable_partialsboolean or nullSpeak stable, not yet final translation words earlier. null follows the project setting, then the server default
properties.shapestring or nullOne of call, meeting, stage
properties.metadataobjectYour JSON, at most 4 KB

Response

201 The room

FieldTypeDescription
object"room"
idstring
namestring
urlstring
privacystringOne of public, private
propertiesobject
properties.max_participantsinteger or nullMin 1, max 200
properties.start_audio_offbooleanDefault false
properties.start_video_offbooleanDefault false
properties.enable_chatbooleanDefault true
properties.enable_screensharebooleanDefault true
properties.enable_knockingbooleanWaiting room: the host admits people. Default false
properties.enable_captionsbooleanDefault true
properties.enable_translationbooleanDefault false
properties.languagesarray of stringTranslation languages; at least one when enable_translation is true. Up to 5 items
properties.expinteger or nullUnix seconds; the room stops opening
properties.nbfinteger or nullUnix seconds; the room opens at this time
properties.langstring or null
properties.stable_partialsboolean or nullSpeak stable, not yet final translation words earlier. null follows the project setting, then the server default
properties.shapestring or nullOne of call, meeting, stage
properties.metadataobjectYour JSON, at most 4 KB
created_atstring
livemodeboolean
json
{
  "object": "room",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "name": "order-1042",
  "url": "https://meet.respiresoft.com/r/order-1042",
  "privacy": "public",
  "properties": {
    "max_participants": 1,
    "start_audio_off": false,
    "start_video_off": false,
    "enable_chat": true,
    "enable_screenshare": true,
    "enable_knocking": false,
    "enable_captions": true,
    "enable_translation": false,
    "languages": [
      "languages"
    ],
    "exp": 1,
    "nbf": 1,
    "lang": "en",
    "stable_partials": false,
    "shape": "call"
  },
  "created_at": "2026-11-02T09:30:00Z",
  "livemode": false
}

Errors

StatusMeaning
400invalid_parameter, unknown_parameter or invalid_json; param names the field
401invalid_api_key or revoked_api_key
409room_exists, idempotency_key_reused, room_not_live
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/rooms" \
  -H "Authorization: Bearer $MEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"order-1042","privacy":"private","properties":{"max_participants":4,"enable_knocking":true}}'
javascript
import { Meet } from "@respiresoft/meet";

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

const room = await meet.rooms.create({ "name": "order-1042", "privacy": "private", "properties": { "max_participants": 4, "enable_knocking": true } }); console.log(room.url);

List rooms, newest first#

GET /api/v1/rooms

Parameters

NameInTypeDescription
limitqueryintegerDefault 10. Between 1 and 100
starting_afterquerystring (uuid)The id of the last room of the previous page

Response

200 A page of rooms

FieldTypeDescription
object"list"
dataarray of Room
data[].object"room"
data[].idstring
data[].namestring
data[].urlstring
data[].privacystringOne of public, private
data[].propertiesobject
data[].properties.max_participantsinteger or nullMin 1, max 200
data[].properties.start_audio_offbooleanDefault false
data[].properties.start_video_offbooleanDefault false
data[].properties.enable_chatbooleanDefault true
data[].properties.enable_screensharebooleanDefault true
data[].properties.enable_knockingbooleanWaiting room: the host admits people. Default false
data[].properties.enable_captionsbooleanDefault true
data[].properties.enable_translationbooleanDefault false
data[].properties.languagesarray of stringTranslation languages; at least one when enable_translation is true. Up to 5 items
data[].properties.expinteger or nullUnix seconds; the room stops opening
data[].properties.nbfinteger or nullUnix seconds; the room opens at this time
data[].properties.langstring or null
data[].properties.stable_partialsboolean or nullSpeak stable, not yet final translation words earlier. null follows the project setting, then the server default
data[].properties.shapestring or nullOne of call, meeting, stage
data[].properties.metadataobjectYour JSON, at most 4 KB
data[].created_atstring
data[].livemodeboolean
has_moreboolean
json
{
  "object": "list",
  "data": [
    {
      "object": "room",
      "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
      "name": "order-1042",
      "url": "https://meet.respiresoft.com/r/order-1042",
      "privacy": "public",
      "properties": {
        "max_participants": 1,
        "start_audio_off": false,
        "start_video_off": false,
        "enable_chat": true,
        "enable_screenshare": true,
        "enable_knocking": false,
        "enable_captions": true,
        "enable_translation": false,
        "languages": [
          "languages"
        ],
        "exp": 1,
        "nbf": 1,
        "lang": "en",
        "stable_partials": false,
        "shape": "call"
      },
      "created_at": "2026-11-02T09:30:00Z",
      "livemode": false
    }
  ],
  "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/rooms?limit=20" \
  -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 room of meet.rooms.list({ limit: 20 })) { console.log(room.name, room.privacy); }

Get a room#

GET /api/v1/rooms/{name}

Parameters

NameInTypeDescription
name requiredpathstring

Response

200 The room

FieldTypeDescription
object"room"
idstring
namestring
urlstring
privacystringOne of public, private
propertiesobject
properties.max_participantsinteger or nullMin 1, max 200
properties.start_audio_offbooleanDefault false
properties.start_video_offbooleanDefault false
properties.enable_chatbooleanDefault true
properties.enable_screensharebooleanDefault true
properties.enable_knockingbooleanWaiting room: the host admits people. Default false
properties.enable_captionsbooleanDefault true
properties.enable_translationbooleanDefault false
properties.languagesarray of stringTranslation languages; at least one when enable_translation is true. Up to 5 items
properties.expinteger or nullUnix seconds; the room stops opening
properties.nbfinteger or nullUnix seconds; the room opens at this time
properties.langstring or null
properties.stable_partialsboolean or nullSpeak stable, not yet final translation words earlier. null follows the project setting, then the server default
properties.shapestring or nullOne of call, meeting, stage
properties.metadataobjectYour JSON, at most 4 KB
created_atstring
livemodeboolean
json
{
  "object": "room",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "name": "order-1042",
  "url": "https://meet.respiresoft.com/r/order-1042",
  "privacy": "public",
  "properties": {
    "max_participants": 1,
    "start_audio_off": false,
    "start_video_off": false,
    "enable_chat": true,
    "enable_screenshare": true,
    "enable_knocking": false,
    "enable_captions": true,
    "enable_translation": false,
    "languages": [
      "languages"
    ],
    "exp": 1,
    "nbf": 1,
    "lang": "en",
    "stable_partials": false,
    "shape": "call"
  },
  "created_at": "2026-11-02T09:30:00Z",
  "livemode": false
}

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/rooms/order-1042" \
  -H "Authorization: Bearer $MEET_API_KEY"
javascript
import { Meet } from "@respiresoft/meet";

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

const room = await meet.rooms.get("order-1042"); console.log(room.properties);

Change privacy or properties (only the properties you send change)#

PATCH /api/v1/rooms/{name}

Parameters

NameInTypeDescription
name requiredpathstring

Body (JSON)

FieldTypeDescription
privacystringOne of public, private
propertiesobject
properties.max_participantsinteger or nullMin 1, max 200
properties.start_audio_offbooleanDefault false
properties.start_video_offbooleanDefault false
properties.enable_chatbooleanDefault true
properties.enable_screensharebooleanDefault true
properties.enable_knockingbooleanWaiting room: the host admits people. Default false
properties.enable_captionsbooleanDefault true
properties.enable_translationbooleanDefault false
properties.languagesarray of stringTranslation languages; at least one when enable_translation is true. Up to 5 items
properties.expinteger or nullUnix seconds; the room stops opening
properties.nbfinteger or nullUnix seconds; the room opens at this time
properties.langstring or null
properties.stable_partialsboolean or nullSpeak stable, not yet final translation words earlier. null follows the project setting, then the server default
properties.shapestring or nullOne of call, meeting, stage
properties.metadataobjectYour JSON, at most 4 KB

Response

200 The room

FieldTypeDescription
object"room"
idstring
namestring
urlstring
privacystringOne of public, private
propertiesobject
properties.max_participantsinteger or nullMin 1, max 200
properties.start_audio_offbooleanDefault false
properties.start_video_offbooleanDefault false
properties.enable_chatbooleanDefault true
properties.enable_screensharebooleanDefault true
properties.enable_knockingbooleanWaiting room: the host admits people. Default false
properties.enable_captionsbooleanDefault true
properties.enable_translationbooleanDefault false
properties.languagesarray of stringTranslation languages; at least one when enable_translation is true. Up to 5 items
properties.expinteger or nullUnix seconds; the room stops opening
properties.nbfinteger or nullUnix seconds; the room opens at this time
properties.langstring or null
properties.stable_partialsboolean or nullSpeak stable, not yet final translation words earlier. null follows the project setting, then the server default
properties.shapestring or nullOne of call, meeting, stage
properties.metadataobjectYour JSON, at most 4 KB
created_atstring
livemodeboolean
json
{
  "object": "room",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "name": "order-1042",
  "url": "https://meet.respiresoft.com/r/order-1042",
  "privacy": "public",
  "properties": {
    "max_participants": 1,
    "start_audio_off": false,
    "start_video_off": false,
    "enable_chat": true,
    "enable_screenshare": true,
    "enable_knocking": false,
    "enable_captions": true,
    "enable_translation": false,
    "languages": [
      "languages"
    ],
    "exp": 1,
    "nbf": 1,
    "lang": "en",
    "stable_partials": false,
    "shape": "call"
  },
  "created_at": "2026-11-02T09:30:00Z",
  "livemode": 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 -X PATCH "https://meet.respiresoft.com/api/v1/rooms/order-1042" \
  -H "Authorization: Bearer $MEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"properties":{"max_participants":6}}'
javascript
import { Meet } from "@respiresoft/meet";

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

const room = await meet.rooms.update("order-1042", { "properties": { "max_participants": 6 } }); console.log(room.properties.max_participants);

Delete a room (ends a running meeting, frees the name)#

DELETE /api/v1/rooms/{name}

Parameters

NameInTypeDescription
name requiredpathstring

Response

200 Deleted

FieldTypeDescription
object"room"
idstring
namestring
deletedboolean
livemodeboolean
json
{
  "object": "room",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "name": "order-1042",
  "deleted": true,
  "livemode": false
}

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 -X DELETE "https://meet.respiresoft.com/api/v1/rooms/order-1042" \
  -H "Authorization: Bearer $MEET_API_KEY"
javascript
import { Meet } from "@respiresoft/meet";

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

const gone = await meet.rooms.delete("order-1042"); console.log(gone.deleted);