Skip to content

Get a room

GET
/rooms/{room}/info
curl --request GET \
--url https://collab.work.optidata.cloud/api/rooms/a3050cd3-5921-4153-b90a-owt42-e94de63c7b15/info \
--header 'Authorization: Bearer <token>'

The room with its settings and its participations: everyone who has been in the room, with their role and whether they are connected now.

Anyone who addresses the room by its link (hash or custom_hash) may read it. The e-mail a guest gave when joining (guest_user.email) is shown only on your own participation, or when you are the room’s owner, one of its moderators or a company super-administrator.

room
required
string

The room’s hash (from its link) or its permanent-link identifier custom_hash.

The room.

Media typeapplication/json
object
id
required

Internal id. Address the room by hash or custom_hash, never by this id.

integer
room_settings_id
integer | null
cuid

Your company’s id.

string
name
required
string | null
description
string | null
icon_url
string | null
hash
required

The room’s identifier and link.

string
custom_hash

The permanent-link identifier, when the room has one.

string | null
owner_uuid

The user who created the room.

string | null format: uuid
conference_type

on_site for rooms holding an uploaded in-person meeting; null or virtual for video meetings.

string | null
Allowed values: virtual on_site
is_recording_in_progress
boolean
is_ai_notes_enabled

Whether AI meeting notes are on for this room.

boolean
is_ai_notes_locked

Whether participants are prevented from turning AI notes off.

boolean
is_hidden
boolean
chat_uuid
string | null
usage_url
required

The room’s link, to share with participants.

string format: uri
created_at
string format: date-time
updated_at
string format: date-time
deleted_at
string | null format: date-time
settings
object
id
integer
room_id
integer
max_users

Maximum number of people in the room at once.

integer | null
is_guests_allowed

Whether people without an Optiwork account may join.

boolean
join_mode

Who may enter the room and whether they must ask first:

  • automatic — anyone with the link enters straight away; guests without an account appear as “Guest”.
  • no_request — anyone with the link enters without asking; guests type their name first.
  • unauthenticated_must_request — signed-in Optiwork users enter; guests type their name and ask to join.
  • authenticated_only_no_request — only signed-in Optiwork users, without asking; guests are turned away.
  • authenticated_only_must_request — only signed-in Optiwork users, and they ask to join; guests are turned away.
  • any_must_request — everyone asks to join; guests type their name first.
string
Allowed values: automatic no_request unauthenticated_must_request authenticated_only_no_request authenticated_only_must_request any_must_request
created_at
string format: date-time
updated_at
string format: date-time
participations

Present on getRoom and listRooms.

Array<object>

One person’s presence in a room.

object
id
integer
room_id
integer
user_id

null for guests without an Optiwork account.

integer | null
role

admin for the room owner, moderator for co-hosts, guest for everyone else.

string | null
Allowed values: admin moderator guest
is_send_audio_allowed
boolean
is_send_video_allowed
boolean
is_send_chat_allowed
boolean
is_guest
boolean
guest_user

Details a guest gave when joining.

object
name
string | null
email

Where the guest gets the meeting summary. Shown only on your own participation, or to the room’s owner, its moderators and company super-administrators.

string | null format: email
should_receive_call_summary
boolean
join_request_status

State of the person’s request to join, in rooms where joining must be requested.

string | null
origin_hash
string | null
is_ai_notes_enabled
boolean
last_active_at
string | null format: date-time
created_at
string format: date-time
updated_at
string format: date-time
deleted_at
string | null format: date-time
user
object
id
integer
uuid
string format: uuid
cuid
string
username
string
email
string format: email
name
string
company_name
string | null
status
string
avatar_url
string | null
settings

The user’s display preferences (language, theme, time zone).

object | null
created_at
string format: date-time
updated_at
string format: date-time
deleted_at
string | null format: date-time
last_recording
One of:
object
id
required
integer
room_id
required
integer
user_id

The person who made the recording.

integer | null
name
string | null
status
required
  • creating, started — being recorded.
  • stopped_locally, pending, processing — recorded; being saved and processed.
  • stopped — done; the transcript follows when ready.
  • failed — interrupted; see startRecordingRecovery.
string
Allowed values: creating started pending processing stopped_locally stopped failed
type
required

manual when a participant pressed record; automatic for the audio recorded to produce AI meeting notes; audio_only_sibling for the audio track kept next to a manual recording.

string
Allowed values: manual automatic audio_only_sibling
duration_ms
integer | null
chunks_count
integer | null
is_drive_saved

Whether a copy was saved to Optiwork Drive.

boolean
sibling_recording_id
integer | null
is_processing
boolean
is_in_progress
boolean
public_link_url

The public link, when the recording has one.

string | null
link

Address of the recording page in Optiwork.

string
meta

Technical details of the recording. Its content may change; do not rely on it.

object | null
created_at
string format: date-time
updated_at
string format: date-time
stopped_at
string | null format: date-time
room
object recursive
user
object
id
integer
uuid
string format: uuid
cuid
string
username
string
email
string format: email
name
string
company_name
string | null
status
string
avatar_url
string | null
settings

The user’s display preferences (language, theme, time zone).

object | null
created_at
string format: date-time
updated_at
string format: date-time
deleted_at
string | null format: date-time
participations

Who was in the meeting while it was recorded.

Array<object>

One person’s presence in a room.

object
id
integer
room_id
integer
user_id

null for guests without an Optiwork account.

integer | null
role

admin for the room owner, moderator for co-hosts, guest for everyone else.

string | null
Allowed values: admin moderator guest
is_send_audio_allowed
boolean
is_send_video_allowed
boolean
is_send_chat_allowed
boolean
is_guest
boolean
guest_user

Details a guest gave when joining.

object
name
string | null
email

Where the guest gets the meeting summary. Shown only on your own participation, or to the room’s owner, its moderators and company super-administrators.

string | null format: email
should_receive_call_summary
boolean
join_request_status

State of the person’s request to join, in rooms where joining must be requested.

string | null
origin_hash
string | null
is_ai_notes_enabled
boolean
last_active_at
string | null format: date-time
created_at
string format: date-time
updated_at
string format: date-time
deleted_at
string | null format: date-time
user
object
id
integer
uuid
string format: uuid
cuid
string
username
string
email
string format: email
name
string
company_name
string | null
status
string
avatar_url
string | null
settings

The user’s display preferences (language, theme, time zone).

object | null
created_at
string format: date-time
updated_at
string format: date-time
deleted_at
string | null format: date-time
permissions

People and groups the recording is shared with.

Array<object>
object
key
additional properties
any
link_permission

The public-link setting, when the recording has a public link.

object | null
transcription
One of:
object
id
integer
recording_id
integer
status
string
Allowed values: queued processing completed error
summary

AI summary of the meeting.

string | null
key_points

AI key points, as a JSON-encoded string: an array of { "title", "items": [string] } sections.

string | null
content

The full transcript as produced by the speech-to-text engine (utterances, words, speakers, timings). Its exact shape depends on the engine and may change.

object | null
transcript_id
string | null
transcript_error
string | null
meta
object | null
created_at
string format: date-time
updated_at
string format: date-time
Examples
Exampleroom
{
"id": 11982,
"room_settings_id": 11976,
"cuid": "7f3c2a10-5b8e-4d21-9c6a-0e4f1b2d3c4a",
"name": "Weekly sync",
"description": null,
"icon_url": "https://collab.work.optidata.cloud/images/pages/bs-icon-camera-video.svg",
"created_at": "2026-09-21T19:04:38.000000Z",
"updated_at": "2026-09-21T19:04:38.000000Z",
"deleted_at": null,
"hash": "a2cd1797-7e20-44c6-9f14-owt42-ff9dfc4ef1cd",
"is_recording_in_progress": false,
"chat_uuid": null,
"owner_uuid": "2d9e8f70-1a3b-4c5d-8e9f-a0b1c2d3e4f5",
"custom_hash": "owt42-acme-weekly-sync",
"is_hidden": false,
"conference_type": null,
"is_ai_notes_enabled": false,
"is_ai_notes_locked": false,
"usage_url": "https://collab.work.optidata.cloud/rooms/a2cd1797-7e20-44c6-9f14-owt42-ff9dfc4ef1cd",
"settings": {
"id": 11976,
"room_id": 11982,
"max_users": 30,
"is_guests_allowed": true,
"join_mode": "automatic",
"created_at": "2026-09-21T19:04:38.000000Z",
"updated_at": "2026-09-21T19:04:38.000000Z"
},
"participations": [
{
"id": 5500,
"room_id": 11982,
"user_id": 59,
"role": "admin",
"is_send_audio_allowed": true,
"is_send_video_allowed": true,
"is_send_chat_allowed": true,
"created_at": "2026-09-29T19:02:07.000000Z",
"updated_at": "2026-09-29T19:02:08.000000Z",
"deleted_at": null,
"origin_hash": null,
"guest_user": {
"name": null,
"should_receive_call_summary": true
},
"join_request_status": null,
"last_active_at": "2026-09-29T19:02:08.000000Z",
"is_ai_notes_enabled": true,
"is_guest": false
}
]
}

No authentication key was sent, or it is malformed.

Media typeapplication/json

Authentication failures use an error key rather than message.

object
error
required
string
Examples
Examplemissing

No bearer token sent

{
"error": "JWT passport exception: Missing bearer token in request"
}

The room was not addressed by its link (hash or custom_hash), and the caller is not its owner, one of its participants or a company super-administrator.

Media typeapplication/json

A refused or not-found request.

object
message
required
string
Examples
Exampledenied
{
"message": "You do not have permission to view this room."
}

No room has this hash or permanent link.

Media typeapplication/json

A refused or not-found request.

object
message
required
string
Examples
ExamplenotFound
{
"message": ""
}

The authentication key is expired or not recognised. Get a fresh one and retry.

Media typeapplication/json

Authentication failures use an error key rather than message.

object
error
required
string
Examples
Exampleexpired
{
"error": "JWT passport expired: Passport expired"
}