---
title: "Permanently stop new outbound calls and verified campaign callbacks for an owned engine agent"
method: POST
path: "/v1/agents/{id}/call-hold"
---

# Permanently stop new outbound calls and verified campaign callbacks for an owned engine agent

`POST /v1/agents/{id}/call-hold`

## Request

- Base URL: `https://volai.cz`
- URL: `https://volai.cz/v1/agents/{id}/call-hold`
- Auth: HTTP bearer

Permanently stop new outbound calls and verified campaign callbacks for an owned engine agent. Supply exactly `reason:budget_limit` and `operationId` (1-128 letters, digits, dots, underscores, colons or hyphens, starting with a letter or digit). There is no expiry or resume operation. Identical ID and content replay the original audit; a different operation returns 409 `revision_conflict`. After an uncertain response, read GET. `hold` contains `agentId`, `reason`, `operationId`, `fingerprint` and `createdAt`. Admin holds, the demo and active calls are unchanged. Independent callback resolver failures still retain the number's default agent. `Idempotency-Key` is not the idempotence mechanism here.

## Path parameters

- `id` string, required

## Request body

- object
  - `reason` 'budget_limit', required: Permanently stop new outbound calls and verified campaign callbacks because the owner's voice budget is exhausted.
  - `operationId` string, required: Stable non-personal identifier for this stop operation. Reuse the same value after an uncertain response.

## Response `200`

Persisted owner call hold

- object
  - `agentId` string, required
  - `held` boolean, required
  - `hold` object, nullable, required
    - `reason` 'budget_limit', required: Permanently stop new outbound calls and verified campaign callbacks because the owner's voice budget is exhausted.
    - `operationId` string, required: Stable non-personal identifier for this stop operation. Reuse the same value after an uncertain response.
    - `agentId` string, required
    - `fingerprint` string, required
    - `createdAt` string, date-time, required

## Other responses

- `400`: Error codes: validation (request).
- `401`: Error codes: unauthorized (request).
- `403`: Error codes: account_suspended (account).
- `404`: Error codes: agent_not_found (account).
- `409`: Error codes: revision_conflict (request).
- `429`: Error codes: rate_limited (busy).
- `500`: Error codes: internal_error (service).

---

[API](https://skmtc.dev/volai/apis/volai-rest-api.md) · [All operations](https://skmtc.dev/volai/apis/volai-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/volai/apis/volai-rest-api/revisions/12029b05e2fa?raw)
