Fetch built-in call recovery and conference room state
POST https://z.u1v.ru/api/v1/calls/recovery
Fetch authenticated active-call recovery and conference-presence
hints for the active Zulip account and device.
This endpoint reuses the current runtime recovery shape so later call
UI and group-call phases can restore in-progress calls without relying
on local-only state.
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/recovery \
-u EMAIL_ADDRESS:API_KEY \
--data-urlencode user_id=42 \
--data-urlencode device_instance_id=device-1
Parameters
user_id string required
Example: "42"
Authenticated Zulip user ID for the active account.
device_instance_id string required
Example: "device-1"
Active device instance identifier requesting recovery.
Response
Return values
-
pendingAppCallIds: (string)[]
Server-authoritative pendingAppCallIds list.
* pendingRoomIds: (string)[]
Server-authoritative pendingRoomIds list.
* activeCalls: (object)[]
Server-authoritative activeCalls list.
* appCallId: string
Server-authoritative `appCallId` value.
-
correlationId: string
Server-authoritative correlationId value.
* routeClass: string
Server-authoritative routeClass value.
* mediaType: string
Server-authoritative mediaType value.
* roomId: string | null
Server-authoritative roomId value.
* remoteIdentityUri: string | null
Server-authoritative remoteIdentityUri value.
* displayName: string | null
Server-authoritative displayName value.
* avatarUrl: string | null
Server-authoritative avatarUrl value.
* metadata: object
Server-authoritative metadata details.
* Server-authoritative mapping value.
* conferenceSubscriptions: (object)[]
Server-authoritative conferenceSubscriptions list.
* roomId: string
Server-authoritative `roomId` value.
-
webSocketUrl: string | null
Server-authoritative webSocketUrl value.
* webSocketHeaders: object
Server-authoritative webSocketHeaders details.
* Server-authoritative mapping value.
* subscribeFrame: string | null
Server-authoritative subscribeFrame value.
* heartbeatSeconds: integer | null
Server-authoritative heartbeatSeconds value.
* leaseExpiresAt: string | null
Server-authoritative leaseExpiresAt value.
* renewToken: string | null
Server-authoritative renewToken value.
* metadata: object
Server-authoritative metadata details.
* Server-authoritative mapping value.
* conferencePresence: (object)[]
Server-authoritative conferencePresence list.
* roomId: string
Server-authoritative `roomId` value.
-
appCallId: string
Server-authoritative appCallId value.
* mediaType: string
Server-authoritative mediaType value.
* displayName: string
Server-authoritative displayName value.
* avatarUrl: string | null
Server-authoritative avatarUrl value.
* conversation: object | null
Server-authoritative conversation details.
* kind: string
Server-authoritative `kind` value.
-
dmUserIds: (integer)[]
Server-authoritative dmUserIds list.
* streamId: integer | null
Server-authoritative streamId value.
* topic: string | null
Server-authoritative topic value.
* title: string
Server-authoritative title value.
* isResumable: boolean
Whether the server-authoritative isResumable condition is true.
* joinedOnCurrentDevice: boolean | null
Whether the server-authoritative joinedOnCurrentDevice condition is true.
* participantCount: integer | null
Server-authoritative participantCount value.
* participants: (object)[]
Server-authoritative participants list.
* userId: integer
Server-authoritative `userId` value.
-
displayName: string
Server-authoritative displayName value.
* avatarUrl: string | null
Server-authoritative avatarUrl value.
* isSelf: boolean
Whether the server-authoritative isSelf condition is true.
* isActiveSpeaker: boolean
Whether the server-authoritative isActiveSpeaker condition is true.
* isSpeaking: boolean
Whether the server-authoritative isSpeaking condition is true.
* hasVideo: boolean
Whether the server-authoritative hasVideo condition is true.
* isScreenSharing: boolean
Whether the server-authoritative isScreenSharing condition is true.
* isMuted: boolean
Whether the server-authoritative isMuted condition is true.
* metadata: object
Server-authoritative metadata details.
* Server-authoritative mapping value.
* isHandRaised: boolean
Whether the server-authoritative isHandRaised condition is true.
* isAllowedToSpeak: boolean
Whether the server-authoritative isAllowedToSpeak condition is true.
* reactionKey: string
Server-authoritative reactionKey value.
* roomContract: object | null
Server-authoritative roomContract details.
* shareUrl: string | null
Server-authoritative `shareUrl` value.
-
scheduledStartAt: string | null
Server-authoritative scheduledStartAt value.
* recordingState: string
Server-authoritative recordingState value.
* audioTopology: string
Server-authoritative audioTopology value.
* participantGainSemantic: string
Server-authoritative participantGainSemantic value.
* joinMuted: boolean | null
Whether the server-authoritative joinMuted condition is true.
* messagesEnabled: boolean | null
Whether the server-authoritative messagesEnabled condition is true.
* canInvite: boolean
Whether the server-authoritative canInvite condition is true.
* canShare: boolean
Whether the server-authoritative canShare condition is true.
* canSchedule: boolean
Whether the server-authoritative canSchedule condition is true.
* canRecord: boolean
Whether the server-authoritative canRecord condition is true.
* canManage: boolean
Whether the server-authoritative canManage condition is true.
* canChangeJoinMuted: boolean
Whether the server-authoritative canChangeJoinMuted condition is true.
* canChangeMessagesEnabled: boolean
Whether the server-authoritative canChangeMessagesEnabled condition is true.
* adminUserIds: (integer)[]
Server-authoritative adminUserIds list.
* metadata: object
Server-authoritative metadata details.
* Server-authoritative mapping value.
* forceReregister: boolean
Whether the server-authoritative forceReregister condition is true.
* metadata: object
Server-authoritative metadata details.
* Server-authoritative mapping value.
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:
{
"activeCalls": [
{
"appCallId": "app-call-2",
"correlationId": "corr-call-2",
"displayName": "Ophelia",
"mediaType": "audio",
"metadata": {},
"roomId": "room-1",
"routeClass": "conference"
}
],
"conferencePresence": [
{
"appCallId": "app-call-2",
"conversation": {
"kind": "topic",
"streamId": 9,
"title": "General > Launch plan",
"topic": "Launch plan"
},
"displayName": "General > Launch plan",
"isResumable": true,
"joinedOnCurrentDevice": true,
"mediaType": "audio",
"metadata": {
"conversation_kind": "topic",
"conversation_stream_id": "9",
"conversation_topic": "Launch plan"
},
"participantCount": 3,
"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,
"canInvite": true,
"canManage": true,
"canRecord": false,
"canSchedule": true,
"canShare": true,
"joinMuted": true,
"messagesEnabled": false,
"participantGainSemantic": "participant_global_speaker_gain",
"recordingState": "available",
"scheduledStartAt": "2026-04-10T08:30:00Z",
"shareUrl": "https://chat.example/calls/room-1"
},
"roomId": "room-1"
}
],
"conferenceSubscriptions": [],
"forceReregister": false,
"metadata": {
"deviceInstanceId": "device-1"
},
"msg": "",
"pendingAppCallIds": [
"app-call-2"
],
"pendingRoomIds": [
"room-1"
],
"result": "success"
}