The Rooms resource is the core of the Video API — this reference covers every endpoint for listing, creating, fetching, updating, and deleting rooms, along with the full set of request and response fields.
The Room object
Every Rooms endpoint returns a room in the same shape. The table below covers every field you'll see in a response.
| Field | Type | Description |
|---|---|---|
name |
string | Name of the room, shown to participants on the join page. |
token |
string | The room's identifier, used in the URL path of the room endpoints (e.g. /api/rooms/{token}). |
status |
string (enum) | One of active, started, ended, closed. See Room lifecycle for what each status means and how a room moves between them. |
access_token |
string | Token that grants host access to the room. Treat it as sensitive. |
guest_token |
string | Token that grants guest access to the room. |
host_join_url |
string (uri) | URL for the host to join the call. |
guest_join_url |
string (uri) | URL for the guest to join the call. Both join URLs accept a name query parameter to pre-fill the participant's display name, e.g. ?name=John+Smith. |
host_display_name |
string, nullable | Pre-filled host display name, if one was set. |
guest_display_name |
string, nullable | Pre-filled guest display name, if one was set. |
enable_chat |
boolean | Whether in-call chat is enabled. |
enable_screenshare |
boolean | Whether screen sharing is enabled. |
enable_invites |
boolean | Whether inviting extra participants into the room is enabled. |
enable_audio_indicator |
boolean | Whether the audio level indicator (waveform) is shown inside the call. |
current_participants |
array of strings | Tokens of the participants currently in the call. |
expected_guest_count |
number | Number of guest participants expected for this room (the default guest plus any additional guests). |
scheduled_at |
string (date-time) | Informational scheduled start time. See Room lifecycle. |
meeting_duration |
number | Expected duration of the meeting, in minutes. |
return_url |
string (uri) | URL guests are redirected to after leaving the room. |
host_return_url |
string (uri) | URL the host is redirected to after leaving the room. Falls back to return_url if not set. |
permanent |
boolean | Whether the room is exempt from automatic cleanup. See Additional participants & permanent rooms. |
additional_access_tokens |
array | Extra guest access tokens, only present when the additional-participants feature is enabled. See Additional participants & permanent rooms. |
created_at |
string (date-time) | When the room was created. |
updated_at |
string (date-time) | When the room was last updated. |
started_at |
string (date-time) | Set once the room's status becomes started. |
ended_at |
string (date-time) | Set once the room's status becomes ended. |
closed_at |
string (date-time) | Set once the room's status becomes closed. |
List rooms
GET /api/rooms
Fetch a paginated list of rooms. Both Instance and Organization API tokens can call this endpoint: an Instance API Token returns every room in your tenant, while an Organization API Token returns only rooms belonging to the organization or to its doctors. See Authentication & API tokens.
| Query parameter | Type | Description |
|---|---|---|
page |
integer | Page number to fetch. Defaults to 1. |
curl "https://acme.meetone.io/api/rooms?page=1" \
-H "Authorization: Bearer $MEETONE_API_TOKEN"
{
"rooms": [
{
"name": "Follow-up consultation",
"token": "f167d6f76f14991c",
"status": "active",
"access_token": "65a56167f28f6dec",
"guest_token": "2367668999959557",
"scheduled_at": "2024-08-23T15:19:36.378+02:00",
"meeting_duration": 45,
"return_url": "http://example.com/rooms/login",
"host_join_url": "http://www.example.com/r/7bbb22b73d4e4732",
"guest_join_url": "http://www.example.com/r/3d4e4722b7327bbb",
"enable_chat": true,
"enable_screenshare": true,
"enable_invites": true,
"enable_audio_indicator": true,
"permanent": false,
"created_at": "2024-08-23T15:19:36.378+02:00",
"updated_at": "2024-08-23T15:19:36.378+02:00"
}
]
}
The response also includes Current-Page, Page-Limit, Total-Pages, Total-Count, and Link headers, and requesting a page beyond the last one returns 200 OK with an empty rooms array rather than an error. See Errors & pagination for the full details.
Create a room
POST /api/rooms
Creates a room. Both token types are accepted, and the token decides who owns the result: an Organization API Token creates the room inside its own organization, so the same token can list, read, update, close, and delete it afterwards, while an Instance API Token creates a room that belongs to no organization. See Authentication & API tokens.
A room only needs name, meeting_duration, and scheduled_at to be created; every other field is optional.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Name of the room, shown to participants on the join page. |
meeting_duration |
number | Yes | Expected duration of the meeting, in minutes. |
scheduled_at |
string (date-time) | Yes | ISO 8601 timestamp. Purely informational — see Room lifecycle. |
return_url |
string (uri) | No | URL guests are redirected to when leaving the room. Uses a tenant-wide default if omitted. |
host_return_url |
string (uri) | No | URL the host is redirected to when leaving the room. Falls back to return_url if omitted. |
host_display_name |
string | No | Pre-fills the host's display name. If omitted, the host enters a name on the join page. |
guest_display_name |
string | No | Pre-fills the guest's display name. If omitted, the guest enters a name on the join page. |
enable_chat |
boolean | No | Enables in-call chat. Defaults to true. |
enable_screenshare |
boolean | No | Enables screen sharing. Defaults to true. |
enable_invites |
boolean | No | Enables inviting extra participants. Defaults to true. |
enable_audio_indicator |
boolean | No | Enables the audio level indicator (waveform) shown inside the call. The indicator on the join screen is always shown, regardless of this setting. Defaults to true. |
additional_guest_count |
number | No | Number of extra anonymous guest tokens to create. Requires a feature toggle — see Additional participants & permanent rooms. |
permanent |
boolean | No | Marks the room as permanent. Requires a feature toggle — see Additional participants & permanent rooms. Defaults to false. |
curl -X POST "https://acme.meetone.io/api/rooms" \
-H "Authorization: Bearer $MEETONE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Follow-up consultation",
"meeting_duration": 45,
"scheduled_at": "2024-08-23T15:19:36.378+02:00",
"host_display_name": "Dr. Smith",
"guest_display_name": "John Doe"
}'
A successful request returns 201 Created with the created room:
{
"name": "Follow-up consultation",
"token": "f167d6f76f14991c",
"status": "active",
"access_token": "65a56167f28f6dec",
"guest_token": "2367668999959557",
"scheduled_at": "2024-08-23T15:19:36.378+02:00",
"meeting_duration": 45,
"return_url": "http://example.com/rooms/login",
"host_join_url": "http://www.example.com/r/7bbb22b73d4e4732",
"guest_join_url": "http://www.example.com/r/3d4e4722b7327bbb",
"host_display_name": "Dr. Smith",
"guest_display_name": "John Doe",
"enable_chat": true,
"enable_screenshare": true,
"enable_invites": true,
"enable_audio_indicator": true,
"permanent": false,
"created_at": "2024-08-23T15:19:36.378+02:00",
"updated_at": "2024-08-23T15:19:36.378+02:00"
}
400 Bad Request is returned with an array of validation errors if a required field is missing or invalid, and 422 Unprocessable Content is returned if permanent: true is submitted without the required feature enabled. See Errors & pagination.
Get a room
GET /api/rooms/{token}
Fetches a single room by its token.
curl "https://acme.meetone.io/api/rooms/f167d6f76f14991c" \
-H "Authorization: Bearer $MEETONE_API_TOKEN"
{
"name": "Follow-up consultation",
"token": "f167d6f76f14991c",
"status": "started",
"access_token": "65a56167f28f6dec",
"guest_token": "2367668999959557",
"started_at": "2024-08-23T15:22:10.000+02:00",
"created_at": "2024-08-23T15:19:36.378+02:00",
"updated_at": "2024-08-23T15:22:10.000+02:00",
"return_url": "http://example.com/rooms/login",
"host_display_name": "Dr. Smith",
"guest_display_name": "John Doe",
"enable_chat": true,
"enable_screenshare": true,
"enable_invites": true,
"enable_audio_indicator": true,
"permanent": false,
"scheduled_at": "2024-08-23T15:19:36.378+02:00",
"meeting_duration": 45,
"current_participants": ["2367668999959557"],
"expected_guest_count": 1,
"host_join_url": "http://www.example.com/r/7bbb22b73d4e4732",
"guest_join_url": "http://www.example.com/r/3d4e4722b7327bbb"
}
Returns 404 Not Found if no room matches the given token — including a room that exists but belongs to another organization, when you are using an Organization API Token.
Update a room
PUT /api/rooms/{token}
Updates a room. The request body uses the same fields — including the same required fields, name, meeting_duration, and scheduled_at — as creating a room: send the current values for anything you don't want to change, alongside the fields you do.
curl -X PUT "https://acme.meetone.io/api/rooms/f167d6f76f14991c" \
-H "Authorization: Bearer $MEETONE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Follow-up consultation (rescheduled)",
"meeting_duration": 45,
"scheduled_at": "2024-08-24T09:00:00.000+02:00"
}'
A successful request returns 200 OK with the updated room, in the same shape as the create response. Returns 404 Not Found if no room matches the given token or the room is outside an Organization API Token's scope.
Delete a room
DELETE /api/rooms/{token}
Permanently deletes a room.
curl -X DELETE "https://acme.meetone.io/api/rooms/f167d6f76f14991c" \
-H "Authorization: Bearer $MEETONE_API_TOKEN"
A successful request returns 204 No Content.
If you just want to prevent further access without deleting the room's data, close it instead of deleting it — see Room lifecycle.
Related
Questions? Contact us at support@meetone.io.