Import & Export
Download a room's timers, messages and questions, or load timers into a stage. Import and export need a Pro or Premium plan.
Download an export
Downloads timers.csv (one stage's timers), messages.csv, questions.csv or room.json (the whole room, in the usual response wrapper).
Path parameters
- Name
room_id- Type
- string
- Required
- Description
The room's id, from its address:
/o/ROOM_ID/….
- Name
file- Type
- string
- Required
- Description
The file to download. One of
timers.csv,messages.csv,questions.csv,room.json.
Query parameters
- Name
stage_id- Type
- string
- Description
Which stage (
stage-1,stage-2); Stage #1 when omitted. One ofstage-1,stage-2.
Request
curl -o timers.csv https://app.kloksi.com/api/v1/rooms/ROOM_ID/export/timers.csv \
-H "Authorization: Bearer YOUR_API_KEY"
Response 200
#,Start,Duration,Title,Speaker,Notes,Labels
1,09:00,0:20:00,Opening keynote,Ada Lovelace,,Keynote
Import timers
Adds timers to a stage, or replaces its timers. append adds timers only, and refuses messages. replace stops that stage and removes its timers and the labels nothing else uses, plus operator messages if you send messages. Other stages, room settings and audience questions stay, unless you send settings.
Path parameters
- Name
room_id- Type
- string
- Required
- Description
The room's id, from its address:
/o/ROOM_ID/….
Body
- Name
mode- Type
- string
- Required
- Description
appendadds after the current timers.replacetakes their place. One ofappend,replace.
- Name
stage_id- Type
- string
- Description
Stage the timers go to; Stage #1 when omitted.
replacereplaces that stage's timers only. One ofstage-1,stage-2.
- Name
expected_updated_at- Type
- timestamp
- Description
The room's
_updated_atwhen you prepared the import. If the room has changed since, you get a 409.
- Name
labels- Type
- array of objects
- Required
- Description
Labels the imported timers use.
- Name
timers- Type
- array of objects
- Required
- Description
The timers to import. Your plan limits how many a stage can hold.
- Name
messages- Type
- array of objects
- Description
replaceonly: these become the room's operator messages. Refused withappend.
- Name
settings- Type
- object
- Description
Room-wide settings that every timer and output inherits.
Request
curl -X POST https://app.kloksi.com/api/v1/rooms/ROOM_ID/import \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"append","labels":[],"timers":[{"name":"Opening keynote","speaker":"Ada Lovelace","minutes":20,"labels":[]}]}'
Response 200
{
"ok": true,
"message": "Room imported",
"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
}
]
}
}