> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apifycloud.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Cancel Scheduled Call

> Soft-cancel a scheduled call

## Endpoint

`DELETE https://api.apifycloud.io/api/v1/video/{appId}/scheduled-calls/{id}`

## Authentication

Bearer token required.

Scope: `scheduling:write`

## Path parameters

* `appId` (UUID, required)
* `id` (UUID, required) — the scheduled call id

## Request body

Optional. A cancellation reason can be supplied either in the body or as `?reason=...` query parameter.

```json theme={null}
{ "reason": "Customer no longer interested" }
```

## Behavior

* The row is never hard-deleted; only `status` transitions to `cancelled`.
* Pending reminders for the call are cancelled.
* A `cancelled` event is appended to the timeline, and any configured webhook subscription receives `scheduled.cancelled`.
* Idempotent — calling `DELETE` on an already-cancelled row returns the row unchanged.

## Response

```json theme={null}
{
  "data": {
    "call": {
      "id": "uuid",
      "status": "cancelled",
      "cancelled_at": "2026-04-22T12:00:00.000Z",
      "cancellation_reason": "Customer no longer interested"
    }
  }
}
```

## Errors

* `403 forbidden` unauthorized for app or missing scope
* `404 not_found` call does not belong to this app
* `500 server_error`

## Example

```bash theme={null}
curl -X DELETE "https://api.apifycloud.io/api/v1/video/{appId}/scheduled-calls/{id}" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Customer no longer interested" }'
```
