Apply authenticated room-level controls to a conference room
POST https://z.u1v.ru/api/v1/calls/conferences/room/action
Apply a room-scoped schedule, recording, or end-room action to an
authenticated live conference room for the active Zulip account.
This endpoint only operates on the caller-owned live conference record
already exposed through
POST /calls/recovery, and it fails closed
when the authenticated room contract does not grant the requested
capability.
Usage examples
The -u line implements HTTP Basic authentication.
See the Authorization header documentation for how
to get those credentials for Zulip users and bots.
curl -sSX POST https://z.u1v.ru/api/v1/calls/conferences/room/action \
-u EMAIL_ADDRESS:API_KEY \
--data-urlencode owner_user_id=42 \
--data-urlencode room_id=room-1 \
--data-urlencode action=schedule \
--data-urlencode scheduled_start_at=2026-04-10T08:30:00Z
Parameters
owner_user_id string required
Example: "42"
Stringified Zulip user ID that owns the authenticated live
conference record.
room_id string required
Example: "room-1"
Authenticated conference room identifier.
action string required
Example: "schedule"
Room-level control action to apply.
Must be one of: "schedule", "clear_schedule", "start_recording", "stop_recording", "enable_join_muted", "disable_join_muted", "enable_messages", "disable_messages", "end_room".
scheduled_start_at string | null optional
Example: "2026-04-10T08:30:00Z"
ISO 8601 timestamp used for the schedule room action.
Response
Return values
Example response(s)
Changes: As of Zulip 7.0 (feature level 167), if any
parameters sent in the request are not supported by this
endpoint, a successful JSON response will include an
ignored_parameters_unsupported array.
A typical successful JSON response may look like:
{
"conference_presence": {
"appCallId": "conference-app-call-1",
"avatarUrl": null,
"conversation": {
"kind": "topic",
"streamId": 9,
"title": "General > Launch plan",
"topic": "Launch plan"
},
"displayName": "General > Launch plan",
"isResumable": true,
"mediaType": "audio",
"metadata": {
"conversation_kind": "topic",
"conversation_stream_id": "9",
"conversation_topic": "Launch plan"
},
"participantCount": 2,
"participants": [
{
"avatarUrl": null,
"displayName": "King Hamlet",
"hasVideo": true,
"isActiveSpeaker": false,
"isMuted": false,
"isScreenSharing": false,
"isSelf": true,
"isSpeaking": false,
"metadata": {},
"userId": 10
},
{
"avatarUrl": null,
"displayName": "Othello, the Moor of Venice",
"hasVideo": true,
"isActiveSpeaker": true,
"isMuted": false,
"isScreenSharing": true,
"isSelf": false,
"isSpeaking": true,
"metadata": {},
"userId": 12
}
],
"roomContract": {
"adminUserIds": [
10,
12
],
"audioTopology": "confbridge_mixed",
"canChangeJoinMuted": true,
"canChangeMessagesEnabled": true,
"canManage": true,
"canRecord": true,
"canSchedule": true,
"joinMuted": true,
"messagesEnabled": false,
"participantGainSemantic": "participant_global_speaker_gain",
"recordingState": "active",
"scheduledStartAt": "2026-04-10T08:30:00Z"
},
"roomId": "room-1"
},
"msg": "",
"result": "success",
"room_closed": false
}