Submit a call lifecycle action

POST https://z.u1v.ru/api/v1/calls/{call_id}/actions

Submit an idempotent answer, decline, hangup, or mute action.

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/call-1/actions \
    -u EMAIL_ADDRESS:API_KEY \
    --data-urlencode call_trace_id=call-trace-1 \
    --data-urlencode action=answer \
    --data-urlencode source=user \
    --data-urlencode surface=lock_screen \
    --data-urlencode device_instance_id=device-1 \
    --data-urlencode client_action_id=action-1 \
    --data-urlencode idempotency_key=action-1 \
    --data-urlencode occurred_at=2026-08-11T10:00:00Z \
    --data-urlencode accessory_instance_id_hash=sha256:0123456789abcdef \
    --data-urlencode 'metadata={"network": "mobile"}'

Parameters

call_id string required in path

Example: "call-1"

Server-issued call identifier.


call_trace_id string required

Example: "call-trace-1"

End-to-end call trace identifier.


action string required

Example: "answer"

Requested call lifecycle action. Must be one of: "answer", "decline", "hangup", "mute".


source string required

Example: "user"

Source that produced the action.


surface string required

Example: "lock_screen"

User-interface surface that produced the action.


device_instance_id string required

Example: "device-1"

Stable application device identifier.


client_action_id string required

Example: "action-1"

Unique client-side action identifier.


idempotency_key string required

Example: "action-1"

Idempotency key for retry-safe submission.


occurred_at string | null optional

Example: "2026-08-11T10:00:00Z"

Optional ISO 8601 client action timestamp.


accessory_instance_id_hash string | null optional

Example: "sha256:0123456789abcdef"

Optional redacted accessory instance identifier.


metadata object | null optional

Example: {"network": "mobile"}

Optional app-owned action metadata.


Response

Example response(s)

Successful response from a UCS extension endpoint. Endpoint-specific fields are returned alongside the standard Zulip success envelope.

{
    "msg": "",
    "result": "success"
}