Meet API Docs Dashboard
On this page

Live Control API

These calls act on a room while people are in it. A control call answers {"object": "room_command", "status": "acked", "result": {...}} once the call engine has done it. Meet waits up to 5 seconds for the engine.

Specific errors: 409 room_not_live when nobody is in the room (nothing waits for a later session), 404 participant_not_found, 503 engine_unavailable and 504 command_timeout. A room of another project or the other mode is 404 room_not_found.

In presence, id is the call engine's participant id and user_id is the user_id from the meeting token. If the engine does not answer within 2 seconds the answer falls back to the database ("source": "database") and audio, video, screen and user_id are null.

Who is in the room now#

GET /api/v1/rooms/{name}/presence

Parameters

NameInTypeDescription
name requiredpathstring

Response

200 The live people. source is engine, or database when the engine did not answer (then audio, video and screen are null).

FieldTypeDescription
object"presence"
roomstring
countinteger
sourcestringOne of engine, database
participantsarray of Participant
participants[].idstring
participants[].user_idstring or nullFrom the meeting token; live presence only
participants[].namestring
participants[].rolestring
participants[].admittedboolean
participants[].in_callboolean
participants[].joined_atstring
participants[].audioboolean or null
participants[].videoboolean or null
participants[].screenboolean or null
json
{
  "object": "presence",
  "room": "order-1042",
  "count": 3,
  "source": "engine",
  "participants": [
    {
      "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
      "user_id": "u-77",
      "name": "order-1042",
      "role": "role",
      "admitted": false,
      "in_call": false,
      "joined_at": "2026-11-02T09:31:12Z",
      "audio": false,
      "video": false,
      "screen": 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/presence" \
  -H "Authorization: Bearer $MEET_API_KEY"
javascript
import { Meet } from "@respiresoft/meet";

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

const now = await meet.rooms.presence("order-1042"); console.log(now.count, now.participants.map((p) => p.name));

End the meeting for everyone#

POST /api/v1/rooms/{name}/end

Parameters

NameInTypeDescription
name requiredpathstring

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

Response

200 The engine's answer

FieldTypeDescription
object"room_command"
idstring
commandstring
roomstring
statusstringOne of acked
resultobject
livemodeboolean
json
{
  "object": "room_command",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "command": "end",
  "room": "order-1042",
  "status": "acked",
  "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
409room_exists, idempotency_key_reused, room_not_live
429rate_limited; wait Retry-After seconds
503engine_unavailable; the call engine did not pick up the command in 5 seconds, try again

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

Examples

bash
curl "https://meet.respiresoft.com/api/v1/rooms/order-1042/end" \
  -H "Authorization: Bearer $MEET_API_KEY"
javascript
import { Meet } from "@respiresoft/meet";

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

await meet.rooms.end("order-1042");

Remove one person (peer id or user id)#

POST /api/v1/rooms/{name}/participants/{pid}/eject

Parameters

NameInTypeDescription
name requiredpathstring
pid requiredpathstringThe engine's participant (peer) id from presence or a session, or the user id given in the meeting token

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

Response

200 The engine's answer

FieldTypeDescription
object"room_command"
idstring
commandstring
roomstring
statusstringOne of acked
resultobject
livemodeboolean
json
{
  "object": "room_command",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "command": "end",
  "room": "order-1042",
  "status": "acked",
  "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
409room_exists, idempotency_key_reused, room_not_live
429rate_limited; wait Retry-After seconds
503engine_unavailable; the call engine did not pick up the command in 5 seconds, try again

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

Examples

bash
curl "https://meet.respiresoft.com/api/v1/rooms/order-1042/participants/u-77/eject" \
  -H "Authorization: Bearer $MEET_API_KEY"
javascript
import { Meet } from "@respiresoft/meet";

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

await meet.rooms.eject("order-1042", "u-77");

Turn off audio, video or screen for one person#

POST /api/v1/rooms/{name}/participants/{pid}/mute

Parameters

NameInTypeDescription
name requiredpathstring
pid requiredpathstringThe engine's participant (peer) id from presence or a session, or the user id given in the meeting token

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)

Set at least one to true: what to turn off. Cameras and screens can only be turned off.

FieldTypeDescription
audioboolean
videoboolean
screenboolean

Response

200 The engine's answer

FieldTypeDescription
object"room_command"
idstring
commandstring
roomstring
statusstringOne of acked
resultobject
livemodeboolean
json
{
  "object": "room_command",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "command": "end",
  "room": "order-1042",
  "status": "acked",
  "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
409room_exists, idempotency_key_reused, room_not_live
429rate_limited; wait Retry-After seconds
503engine_unavailable; the call engine did not pick up the command in 5 seconds, try again

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

Examples

bash
curl "https://meet.respiresoft.com/api/v1/rooms/order-1042/participants/u-77/mute" \
  -H "Authorization: Bearer $MEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"audio":true}'
javascript
import { Meet } from "@respiresoft/meet";

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

await meet.rooms.mute("order-1042", "u-77", {"audio":true});

Turn off audio, video or screen for everyone except hosts#

POST /api/v1/rooms/{name}/mute-all

Parameters

NameInTypeDescription
name requiredpathstring

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)

Set at least one to true: what to turn off. Cameras and screens can only be turned off.

FieldTypeDescription
audioboolean
videoboolean
screenboolean

Response

200 The engine's answer

FieldTypeDescription
object"room_command"
idstring
commandstring
roomstring
statusstringOne of acked
resultobject
livemodeboolean
json
{
  "object": "room_command",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "command": "end",
  "room": "order-1042",
  "status": "acked",
  "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
409room_exists, idempotency_key_reused, room_not_live
429rate_limited; wait Retry-After seconds
503engine_unavailable; the call engine did not pick up the command in 5 seconds, try again

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

Examples

bash
curl "https://meet.respiresoft.com/api/v1/rooms/order-1042/mute-all" \
  -H "Authorization: Bearer $MEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"audio":true}'
javascript
import { Meet } from "@respiresoft/meet";

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

await meet.rooms.muteAll("order-1042", {"audio":true});

Send a system message into the room chat#

POST /api/v1/rooms/{name}/message

Parameters

NameInTypeDescription
name requiredpathstring

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
text requiredstringUp to 1000 characters
fromstringDefault "System". Up to 80 characters

Response

200 The engine's answer

FieldTypeDescription
object"room_command"
idstring
commandstring
roomstring
statusstringOne of acked
resultobject
livemodeboolean
json
{
  "object": "room_command",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "command": "end",
  "room": "order-1042",
  "status": "acked",
  "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
409room_exists, idempotency_key_reused, room_not_live
429rate_limited; wait Retry-After seconds
503engine_unavailable; the call engine did not pick up the command in 5 seconds, try again

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

Examples

bash
curl "https://meet.respiresoft.com/api/v1/rooms/order-1042/message" \
  -H "Authorization: Bearer $MEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"We start in one minute.","from":"Host desk"}'
javascript
import { Meet } from "@respiresoft/meet";

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

await meet.rooms.message("order-1042", "We start in one minute.", "Host desk");

Change lock or knocking while the room runs#

POST /api/v1/rooms/{name}/update

Parameters

NameInTypeDescription
name requiredpathstring

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
lockboolean
knockingboolean

Response

200 The engine's answer

FieldTypeDescription
object"room_command"
idstring
commandstring
roomstring
statusstringOne of acked
resultobject
livemodeboolean
json
{
  "object": "room_command",
  "id": "6f1c2b7e-3a54-4d0e-9c1b-2f7a8e5d4c10",
  "command": "end",
  "room": "order-1042",
  "status": "acked",
  "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
409room_exists, idempotency_key_reused, room_not_live
429rate_limited; wait Retry-After seconds
503engine_unavailable; the call engine did not pick up the command in 5 seconds, try again

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

Examples

bash
curl "https://meet.respiresoft.com/api/v1/rooms/order-1042/update" \
  -H "Authorization: Bearer $MEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lock":true}'
javascript
import { Meet } from "@respiresoft/meet";

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

await meet.rooms.updateLive("order-1042", {"lock":true});