Live Server-Sent Events stream of a call's lifecycle
Opens a text/event-stream (SSE) connection that pushes call
lifecycle transitions (ringing, answered, completed, failed, …) as
they happen. Intended for the in-app dialer's live call view.
Past lifecycle events are also embedded inline on the Call resource
(Call.events) — this endpoint is only for the live tail; there is
no separate read endpoint for historical events.
The connection stays open until the call reaches a terminal state or the client disconnects. Workspace isolation: the call must belong to the active workspace, otherwise this endpoint returns 404.
Authorization
bearerAuth Long-lived ES256 JWT minted from the dashboard (https://app.sautikit.com/developers/api-keys). Signed by the
platform keyring. Carries workspace_id and scopes claims;
revoked via the platform deny-list.
In: header
Path Parameters
uuidResponse Body
text/event-stream
application/json
application/json
curl -X GET "https://example.com/v1/calls/497f6eca-6276-4993-bfeb-53cbbbba6f08/stream""string"{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string" }}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string" }}Get one call by id GET
Previous Page
Terminate an active call POST
Requests termination of an in-progress call via the PBX. The browser SDK dials directly over WebRTC; this server-side endpoint is the control-plane hangup used to force-end a live call. Workspace isolation: `call_id` must belong to the active workspace, otherwise this endpoint returns 404 (cross-tenant existence is not leaked). Idempotent: if the PBX reports the call already ended, the request still succeeds. Keys on the Sautikit call row UUID (the `call_id` from `POST /v1/calls` / the `id` from `GET /v1/calls`), never the PBX session id — the server resolves the stored PBX session itself.