Undeploy a voice agent
Removes the hosted worker and deactivates phone routing. The agent returns to draft and stays editable and testable. Telephony is torn down as part of this.
Accepted only when the agent is deployed or failed; undeploying an agent that is already back to draft is rejected with 400.
Authorization
personalAccessToken Personal Access Token of a Dynamiq user — the only credential accepted by the management API (api.*). Prefix dyn_pat_ (legacy uak_ tokens still authenticate). Send as Authorization: Bearer <token>.
In: header
Path Parameters
Voice agent UUID.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/agents/voice/agents/497f6eca-6276-4993-bfeb-53cbbbba6f08/undeploy"{
"data": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"description": "string",
"project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
"status": "draft",
"config": {
"name": "Voice Agent",
"instructions": "string",
"welcome_message": "string",
"mode": "pipeline",
"stt": {
"provider": "string",
"model": "string",
"connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
"language": "string",
"voice": "string",
"base_url": "string",
"temperature": 0,
"options": {}
},
"llm": {
"provider": "string",
"model": "string",
"connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
"language": "string",
"voice": "string",
"base_url": "string",
"temperature": 0,
"options": {}
},
"tts": {
"provider": "string",
"model": "string",
"connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
"language": "string",
"voice": "string",
"base_url": "string",
"temperature": 0,
"options": {}
},
"realtime": {
"provider": "string",
"model": "string",
"connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
"language": "string",
"voice": "string",
"base_url": "string",
"temperature": 0,
"options": {}
},
"tools": [
{
"name": "string",
"description": "string",
"method": "GET",
"url": "string",
"headers": [
{
"key": "string",
"value": "string"
}
],
"params": [
{
"name": "string",
"type": "string",
"in": "path",
"description": "string",
"required": true
}
],
"long_running": false,
"timeout_s": 10
}
],
"client_tools": [
{
"name": "string",
"description": "string",
"params": [
{
"name": "string",
"type": "string",
"description": "string",
"required": true
}
],
"expects_response": true,
"long_running": false,
"timeout_s": 10
}
],
"mcp_servers": [
{
"name": "string",
"url": "string",
"connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",
"headers": [
{
"key": "string",
"value": "string"
}
],
"allowed_tools": [
"string"
],
"long_running": false
}
],
"transfer": {
"enabled": false,
"phone_number": "string",
"destinations": [
{
"label": "string",
"phone_number": "string"
}
]
},
"end_call_enabled": true,
"recording_enabled": true,
"advanced": {
"max_call_duration_s": 1800,
"idle_timeout_s": 75,
"max_tool_steps": 6,
"eos_silence_ms": 400,
"turn_sensitivity": "auto",
"preemptive_tts": true,
"noise_cancellation": "auto",
"allow_interruptions": true,
"background_sound": "none"
}
},
"agent_name": "string",
"deploy_error": "string",
"deployed_at": "2019-08-24T14:15:22Z",
"phone_numbers": [
"string"
],
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"deleted_at": "2019-08-24T14:15:22Z"
}
}{
"error": {
"code": "string",
"message": "string",
"details": null
}
}{
"error": {
"code": "unauthorized",
"message": "Unauthorized"
}
}{
"error": {
"code": "not_found",
"message": "Not Found"
}
}Deploy a voice agent
Provisions a hosted worker for the agent. Returns immediately with `202`; the agent's `status` moves from `deploying` to `deployed` (or `failed`, with `deploy_error` set) over the next few minutes. Poll the agent or read the deployment history to follow progress. There is no in-place redeploy: deploying an agent that is already `deployed` is rejected with `400`. Undeploy it first, then deploy again.
List deployment history
One record per deploy attempt, most recent first. Configuration edits do not appear here — they require no deployment.