Publish an immutable version of an agent
const url = 'https://api.vocapable.com/v1/agents/example/publish';const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.vocapable.com/v1/agents/example/publish \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”Successful Response
The fully resolved configuration a call executes.
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
{ "action_confirmation_policy": "legacy_v0", "receptionist_release_status": "not_applicable", "use_case": "sdr", "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": {} } ]}