Get built-in call history

POST https://z.u1v.ru/api/v1/calls/history

Fetch authenticated recent-call history for the active Zulip account.

The returned records are newest-first and grouped-history ready, with direction, media type, peer identity, and room/presence hints already normalized from authenticated lifecycle persistence.

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/history \
    -u EMAIL_ADDRESS:API_KEY \
    --data-urlencode limit=50 \
    --data-urlencode include_ongoing=true \
    --data-urlencode include_delivery_traces=false

Parameters

limit integer optional

Example: 50

Maximum number of records to return.


include_ongoing boolean optional

Example: true

Whether currently ongoing calls should remain in the returned history window.


include_delivery_traces boolean optional

Example: false

Whether push-delivery trace details should be included in the returned records.


Response

Return values

  • records: (object)[]

    Server-authoritative records list. * appCallId: string

    Server-authoritative `appCallId` value.
    
    • correlationId: string | null

      Server-authoritative correlationId value. * deviceInstanceId: string | null

      Server-authoritative deviceInstanceId value. * routeClass: string

      Server-authoritative routeClass value. * mediaType: string

      Server-authoritative mediaType value. * direction: string

      Server-authoritative direction value. * state: string

      Server-authoritative state value. * peerUserId: string | null

      Server-authoritative peerUserId value. * remoteIdentityUri: string | null

      Server-authoritative remoteIdentityUri value. * displayName: string | null

      Server-authoritative displayName value. * avatarUrl: string | null

      Server-authoritative avatarUrl value. * roomId: string | null

      Server-authoritative roomId value. * startedAt: string

      Server-authoritative startedAt value. * connectedAt: string | null

      Server-authoritative connectedAt value. * endedAt: string | null

      Server-authoritative endedAt value. * lastReportedAt: string

      Server-authoritative lastReportedAt value. * lastPhase: string

      Server-authoritative lastPhase value. * durationSeconds: integer

      Server-authoritative durationSeconds value. * groupKey: string

      Server-authoritative groupKey value. * isOngoing: boolean

      Whether the server-authoritative isOngoing condition is true. * metadata: object

      Server-authoritative metadata details. * Server-authoritative mapping value. * actions: object

      Server-authoritative actions details. * redialUserId: string | null

      Server-authoritative `redialUserId` value.
      
      • showInChatUserId: string | null

        Server-authoritative showInChatUserId value. * clearHistoryGroupKey: string | null

        Server-authoritative clearHistoryGroupKey value. * canViewArchivedLog: boolean

        Whether the server-authoritative canViewArchivedLog condition is true. * canViewFeedback: boolean

        Whether the server-authoritative canViewFeedback condition is true. * feedback: object | null

      Server-authoritative feedback details. * rating: integer | null

      Server-authoritative `rating` value.
      
      • comment: string | null

        Server-authoritative comment value. * archivedLog: object | null

      Server-authoritative archivedLog details. * startedAt: string

      Server-authoritative `startedAt` value.
      
      • connectedAt: string | null

        Server-authoritative connectedAt value. * endedAt: string | null

        Server-authoritative endedAt value. * durationSeconds: integer

        Server-authoritative durationSeconds value. * hasMore: boolean

    Whether the server-authoritative hasMore condition is true.

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:

{
    "hasMore": false,
    "msg": "",
    "records": [
        {
            "actions": {
                "canViewArchivedLog": true,
                "canViewFeedback": false,
                "clearHistoryGroupKey": "84:video:outgoing:2026-04-10",
                "redialUserId": "84",
                "showInChatUserId": "84"
            },
            "appCallId": "app-call-1",
            "archivedLog": {
                "connectedAt": "2026-04-10T06:10:05Z",
                "durationSeconds": 37,
                "endedAt": "2026-04-10T06:10:42Z",
                "startedAt": "2026-04-10T06:10:00Z"
            },
            "avatarUrl": "https://chat.example/avatar/ophelia.png",
            "connectedAt": "2026-04-10T06:10:05Z",
            "correlationId": "corr-call-1",
            "deviceInstanceId": "device-1",
            "direction": "outgoing",
            "displayName": "Ophelia",
            "durationSeconds": 37,
            "endedAt": "2026-04-10T06:10:42Z",
            "groupKey": "84:video:outgoing:2026-04-10",
            "isOngoing": false,
            "lastPhase": "ended",
            "lastReportedAt": "2026-04-10T06:10:42Z",
            "mediaType": "video",
            "metadata": {
                "source_surface": "profile"
            },
            "peerUserId": "84",
            "remoteIdentityUri": "sip:ophelia@sip.example.com",
            "routeClass": "direct",
            "startedAt": "2026-04-10T06:10:00Z",
            "state": "completed"
        }
    ],
    "result": "success"
}