Edit an agent definition
const url = 'https://api.vocapable.com/v1/agents/example';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"example","use_case":"sdr","conversation_settings":{"default_language":"en","supported_languages":["en"],"allow_language_switch":true},"persona":{},"objectives":[{}],"guardrails":{"disallowed_topics":["example"],"blocklist_patterns":["example"],"judge":{},"max_call_seconds":1,"max_turns":1},"tools":["check_calendar"],"sms_template_ids":["example"],"handoff_target_rep_ids":["example"],"llm_route":{"primary":"example","fallbacks":["example"]},"stock_voice_id":"example","voice_profile_id":"example","knowledge_pack_id":"example","knowledge_pack_version":1,"disclosure_config":{"additionalProperty":"example"},"voicemail_config":{"body":{"additionalProperty":"example"},"callback_e164":"example"},"compliance_profile_id":"example","status":"draft"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.vocapable.com/v1/agents/example \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "example", "use_case": "sdr", "conversation_settings": { "default_language": "en", "supported_languages": [ "en" ], "allow_language_switch": true }, "persona": {}, "objectives": [ {} ], "guardrails": { "disallowed_topics": [ "example" ], "blocklist_patterns": [ "example" ], "judge": {}, "max_call_seconds": 1, "max_turns": 1 }, "tools": [ "check_calendar" ], "sms_template_ids": [ "example" ], "handoff_target_rep_ids": [ "example" ], "llm_route": { "primary": "example", "fallbacks": [ "example" ] }, "stock_voice_id": "example", "voice_profile_id": "example", "knowledge_pack_id": "example", "knowledge_pack_version": 1, "disclosure_config": { "additionalProperty": "example" }, "voicemail_config": { "body": { "additionalProperty": "example" }, "callback_e164": "example" }, "compliance_profile_id": "example", "status": "draft" }'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”PATCH /v1/agents/{id}. Only the fields present in the body are applied.
object
Versioned dialogue policy; language availability is qualified by the speech service.
object
object
Conversation-level controls frozen into the published version.
Provider routing chain with health-checked failover (CANON fact 24).
LLM chain only. STT and TTS chains are platform-defaulted at P1 and are not
API-settable (CANON fact 80), which is what extra="forbid" refuses here.
object
The tenant’s two slots in a platform-composed voicemail drop (ADR-0023).
This is the DisclosureSlots doctrine applied to voicemail: the customer supplies a
body and a callback number, and nothing else. The AI-disclosure opener, the order
of the elements, and the identification/opt-out closing are composed by the platform
from the same pinned version the live conversation discloses from, so a voicemail and
a conversation can never disagree about who is calling or that it is artificial.
body is keyed by language tag exactly as disclosure_config is, and the drop
resolves the same tag for both: a message whose opener and body were in different
languages would be a disclosure in name only. An empty model is the ordinary state -
it means this agent leaves no messages.
Responses
Section titled “Responses”Successful Response
A definition in full.
object
object
Versioned dialogue policy; language availability is qualified by the speech service.
object
object
Conversation-level controls frozen into the published version.
One server-resolved, immutable direct-rep target in an agent snapshot.
A write request names only rep_id values. Control-api resolves those ids against
active, transfer-enabled tenant reps and persists this compact snapshot so an AgentVersion
never follows a later mutable Settings record. A raw destination is deliberately not part
of this customer/model/runtime representation.
object
Provider routing chain with health-checked failover (CANON fact 24).
LLM chain only. STT and TTS chains are platform-defaulted at P1 and are not
API-settable (CANON fact 80), which is what extra="forbid" refuses here.
object
object
The tenant’s two slots in a platform-composed voicemail drop (ADR-0023).
This is the DisclosureSlots doctrine applied to voicemail: the customer supplies a
body and a callback number, and nothing else. The AI-disclosure opener, the order
of the elements, and the identification/opt-out closing are composed by the platform
from the same pinned version the live conversation discloses from, so a voicemail and
a conversation can never disagree about who is calling or that it is artificial.
body is keyed by language tag exactly as disclosure_config is, and the drop
resolves the same tag for both: a message whose opener and body were in different
languages would be a disclosure in name only. An empty model is the ordinary state -
it means this agent leaves no messages.
Example
{ "use_case": "sdr", "status": "draft", "conversation_settings": { "default_language": "en", "supported_languages": [ "en" ], "allow_language_switch": true }, "tools": [ "check_calendar" ]}Validation Error
object
object
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}