Rooms
A room holds two stages, their timers, messages and labels. Use these endpoints to read a room, change its settings and create share links for its outputs.
The room object
Timers and messages aren't part of this object. They have their own endpoints.
- Name
_id- Type
- string
- Description
Unique id.
- Name
_model- Type
- string
- Description
The type of this object. Always
room.
- Name
_updated_at- Type
- timestamp
- Description
When it last changed.
- Name
name- Type
- string
- Description
The name.
- Name
date- Type
- string
- Description
The event date as
YYYY-MM-DD, or an empty string for none. Scheduled timers start on this day, and don't start without a date. You can't change it while a timer is running or paused.
- Name
blackout- Type
- boolean
- Description
Whether the Viewer is blacked out.
- Name
dim- Type
- integer
- Description
How dark the Viewer is, as a percentage. 100 is the same as blackout. From 0 to 100.
- Name
focus_message- Type
- boolean
- Description
Deprecated. Always false.
- Name
on_air- Type
- boolean
- Description
Whether the room is on air.
- Name
logo- Type
- string
- Description
The URL of the room's custom logo. An empty string means it uses its team's logo, or Kloksi's.
- Name
timezone- Type
- string
- Description
The room's timezone in IANA format, such as
Europe/Berlin.
- Name
language- Type
- string
- Description
The language the room shows: its own, or else its team's. One of
en,ru.
- Name
team_id- Type
- string or null
- Description
The team the room belongs to.
- Name
accepting_questions- Type
- boolean
- Description
Whether the Submit form accepts questions. Off by default.
- Name
questionnaire- Type
- object
- Description
How the Submit form looks: its logo and texts.
- Name
protected_outputs- Type
- array of strings
- Description
The outputs whose pages require their output password.
- Name
archived- Type
- boolean
- Description
Whether the room is archived. An archived room refuses every change.
- Name
cue_stage_id- Type
- string
- Description
The stage holding the room's cue. Transport endpoints act on it unless you name a timer.
- Name
stages- Type
- array of objects
- Description
Every stage in tab order. Each is an independent timer list that plays on its own; either may be empty.
Get a room
Returns the room's settings and its stages.
Path parameters
- Name
room_id- Type
- string
- Required
- Description
The room's id, from its address:
/o/ROOM_ID/….
Request
curl https://app.kloksi.com/api/v1/rooms/ROOM_ID \
-H "Authorization: Bearer YOUR_API_KEY"
Response 200
{
"ok": true,
"message": "Room loaded",
"data": {
"_id": "x7kp2mqa",
"_model": "room",
"_updated_at": "2026-11-05T09:30:00.000Z",
"name": "Annual Conference",
"date": "2026-11-05",
"blackout": false,
"dim": 0,
"focus_message": false,
"on_air": false,
"logo": "",
"timezone": "Europe/Berlin",
"language": "en",
"team_id": "6f2c1e9ab04d7c3e8a5b1d20",
"accepting_questions": false,
"questionnaire": {
"logo": {
"mode": "kloksi"
},
"title": "",
"subtitle": "",
"question_label": "",
"name_label": "",
"hide_name": false
},
"protected_outputs": [
"controller"
],
"archived": false,
"cue_stage_id": "stage-1",
"stages": [
{
"_id": "x7kp2mqa",
"name": "Annual Conference",
"active_timer_id": "V1StGXR8Z5jd",
"timers_count": 1,
"end_of_show": null,
"end_of_show_trigger": "MANUAL",
"end_of_show_loops": 2,
"end_of_show_new_day": false,
"show_run": null
}
]
}
}
Update a room
Changes only the fields you send.
Path parameters
- Name
room_id- Type
- string
- Required
- Description
The room's id, from its address:
/o/ROOM_ID/….
Body
- Name
stage_id- Type
- string
- Description
Which stage
end_of_show*apply to; Stage #1 when omitted. One ofstage-1,stage-2.
- Name
name- Type
- string
- Description
The name. At most 50 characters.
- Name
date- Type
- string
- Description
The event date as
YYYY-MM-DD, or an empty string for none. Scheduled timers start on this day, and don't start without a date. You can't change it while a timer is running or paused.
- Name
blackout- Type
- boolean
- Description
Whether the Viewer is blacked out.
- Name
dim- Type
- integer
- Description
How dark the Viewer is, as a percentage. 100 is the same as blackout. From 0 to 100.
- Name
on_air- Type
- boolean
- Description
Whether the room is on air.
- Name
logo- Type
- string
- Description
The URL of the room's custom logo. An empty string means it uses its team's logo, or Kloksi's.
- Name
timezone- Type
- string
- Description
The room's timezone in IANA format, such as
Europe/Berlin.
- Name
end_of_show- Type
- timestamp or null
- Description
A fixed end of show. Null means it's calculated from the timers.
- Name
end_of_show_trigger- Type
- string
- Description
What the last timer does at 0:00.
MANUALfollows its overtime setting,LINKEDstops at 0:00, andLOOPrestarts the show until it has playedend_of_show_loopstimes. One ofMANUAL,LINKED,LOOP.
- Name
end_of_show_loops- Type
- integer
- Description
How many times the show plays in total, when the trigger is
LOOP. From 2 to 10.
- Name
end_of_show_new_day- Type
- boolean
- Description
Starts a new day at the end of show (true) or removes it (false).
Request
curl -X PATCH https://app.kloksi.com/api/v1/rooms/ROOM_ID \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Annual Conference","timezone":"Europe/Berlin"}'
Response 200
{
"ok": true,
"message": "Room updated",
"data": {
"_id": "x7kp2mqa",
"_model": "room",
"_updated_at": "2026-11-05T09:30:00.000Z",
"name": "Annual Conference",
"date": "2026-11-05",
"blackout": false,
"dim": 0,
"focus_message": false,
"on_air": false,
"logo": "",
"timezone": "Europe/Berlin",
"language": "en",
"team_id": "6f2c1e9ab04d7c3e8a5b1d20",
"accepting_questions": false,
"questionnaire": {
"logo": {
"mode": "kloksi"
},
"title": "",
"subtitle": "",
"question_label": "",
"name_label": "",
"hide_name": false
},
"protected_outputs": [
"controller"
],
"archived": false,
"cue_stage_id": "stage-1",
"stages": [
{
"_id": "x7kp2mqa",
"name": "Annual Conference",
"active_timer_id": "V1StGXR8Z5jd",
"timers_count": 1,
"end_of_show": null,
"end_of_show_trigger": "MANUAL",
"end_of_show_loops": 2,
"end_of_show_new_day": false,
"show_run": null
}
]
}
}
Create a share link
Returns a token for a link to one output. Build the link as https://app.kloksi.com/o/ROOM_ID/VIEW?c=TOKEN. It opens that output only. Team rooms have no Controller links, so controller is refused with a 403.
Path parameters
- Name
room_id- Type
- string
- Required
- Description
The room's id, from its address:
/o/ROOM_ID/….
Body
- Name
view- Type
- string
- Required
- Description
The output the link opens. One of
controller,viewer,agenda,moderator.
Request
curl -X POST https://app.kloksi.com/api/v1/rooms/ROOM_ID/connections \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"view":"viewer"}'
Response 200
{
"ok": true,
"message": "Connection issued",
"data": {
"connection_id": "0b9c4f2e-7a31-4d6e-9f10-3c5a8e2d1b74"
}
}