Ask a live call to hang up
Requests teardown of a call that is already live. This is also what the Hang up button on a live call in the workspace Calls page sends. Returns 202 with hangup_requested_at; it never reports the call as ended, because the media session is torn down by the worker holding it and the call reaches call.ended through the ordinary terminal path. The call then reports ended_reason hangup_requested, unless it had already started ending another way, in which case that ending's reason is reported. Repeating the request is idempotent and returns the original timestamp. Until a worker acknowledges, the request stays visible with status pending. If the worker reports that the teardown FAILED, the call is still up, so a further request re-arms it with a fresh timestamp and the previous failure's reason stays visible beside it; after three consecutive failed teardowns further requests are refused so the call is escalated rather than retried. A call still queued for origination is refused: cancel it with POST /v1/calls/{call_id}/cancel instead. For a workspace caller, a call in another workspace, or a Simulations Lab run, answers exactly as a call id that does not exist. The response carries hangup_requested_at, status (pending or acknowledged), hangup_acknowledged_at, hangup_acknowledged_outcome, hangup_acknowledged_reason, hangup_failed_attempts, hangup_unacknowledged_seconds (null once acknowledged), hangup_attempt (which attempt this is; a re-arm increments it) and already_requested, which is false for a first or re-armed request and true when an existing one was returned unchanged.
Request
- Base URL: https://api.skysay.ai
- URL: https://api.skysay.ai/v1/calls/{call_id}/hangup
- Auth: none declared
Response
Hangup requested; not yet acknowledged by the media worker.
Changes
No recorded changes to this operation across all 1 revision of this API.