Delete a voice agent
Removes the agent. Calls it already took keep their agent_id.
An agent that one of your voice numbers routes to, or that another of your agents lists in transfer_targets, is not deleted: the answer is 409 with a message naming those numbers and agents. Unbind the numbers (PATCH /v3/channels/voice/{number} with "agent_id": null), take the agent out of the others' transfer_targets or delete them, and try again.
With sandbox: true nothing is written: the agent is looked up and the answer is the one a real delete would give.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Sandbox flag - when true, the operation is simulated without side effects Useful for testing integrations without actual execution
Response Body
application/json
application/json
application/json
curl -X DELETE "https://example.com/v3/voice/agents/string" \ -H "Content-Type: application/json" \ -d '{}'{
"success": true,
"error": {
"code": "string",
"message": "string",
"details": {
"property1": [
"string"
],
"property2": [
"string"
]
},
"doc_url": "string"
},
"meta": {
"request_id": "string",
"timestamp": "2019-08-24T14:15:22Z",
"version": "string"
}
}{
"success": true,
"error": {
"code": "string",
"message": "string",
"details": {
"property1": [
"string"
],
"property2": [
"string"
]
},
"doc_url": "string"
},
"meta": {
"request_id": "string",
"timestamp": "2019-08-24T14:15:22Z",
"version": "string"
}
}{
"success": false,
"data": null,
"error": {
"code": "CONFLICT_014",
"message": "This voice agent is in use: voice number +12125550100 routes calls to it; agent_4c1d2e3f-0000-4000-8000-000000000002 lists it in transfer_targets. To delete it, first unbind the number with PATCH /v3/channels/voice/{number} and \"agent_id\": null, and remove it from that agent's transfer_targets or delete that agent.",
"details": null,
"doc_url": "https://docs.sent.dm/reference/api/error-catalog"
},
"meta": {
"request_id": "req_7X9zKp2jDw",
"timestamp": "2026-10-28T15:46:43.7726061+00:00",
"version": "v3"
}
}Change a voice agent PATCH
Changes the fields you name and answers with the agent as stored, the same shape `GET` returns. A key left out is left alone. A key sent as `null` clears an optional field (`websocket_url` makes the agent dial in, `greeting` and `fallback` go, `speech`, `audio`, `tools`, `limits` and `transcripts` return to their defaults). A key sent with a value replaces that field whole: send the whole `limits` object, not one of its keys. Changing `session_type` drops `speech`, `audio` and `greeting` unless the body sends them, since the other type cannot carry them. The result is checked like a new agent, and a body that changes nothing is `400`. With `sandbox: true` nothing is written: the request is validated against the stored agent and the agent is reported with `200` as it would read after the change.
Rotate a voice agent's signing secret POST
Generates a new `signing_secret` for the agent and returns it. The previous secret stops signing immediately, so update your agent before the next call reaches it. With `sandbox: true` a secret is generated and returned with `202`, and nothing is written.