Voicemail message configuration and voicemail_message_left end call reason

You can now configure your agent to leave a voicemail message when it detects voicemail, instead of hanging up. The new voicemail_message object on the assistant endpoints supports two modes:

FieldDescription
enabledWhether voicemail message leaving is enabled
modeexact_message (speak a fixed message) or prompt (generate from a prompt)
exact_messageThe exact message to leave on the voicemail
promptA prompt used to generate the voicemail message

When the agent successfully leaves a voicemail, the call status is left_voicemail and the end call reason is voicemail_message_left.

Note: Enabling voicemail_message requires greeting_message_mode to be set to human. Voicemail detection relies on the agent listening for the initial speaker to determine if it is a human or a voicemail machine.

Updated endpoints:

EndpointTitle
POST /assistantsCreate an agent
PUT /assistants/{model_id}Update an agent
GET /assistants/{model_id}Get an agent

For more details, see the Call Configuration documentation.


Fallback Voice Provider Support

We have updated our Public API to support fallback voice configurations. These changes allow you to specify a secondary voice provider and model to be used in case the primary synthesizer fails.

API Changes

The assistants API has been updated to include fallback voice fields within the agent object for GET, POST, and PUT requests.

FieldTypeDescription
fallback_voice_idstringThe ID of the fallback voice.
fallback_providerstringThe provider for the fallback voice (e.g., elevenlabs, deepgram, azure).
fallback_modelstringThe model to be used by the fallback provider.

Example usage:

1{
2 "name": "My Assistant",
3 "agent": {
4 "prompt": "You are a helpful assistant.",
5 "voice_id": "primary_voice_id",
6 "provider": "elevenlabs",
7 "fallback_voice_id": "fallback_voice_id",
8 "fallback_provider": "deepgram",
9 "fallback_model": "aura-asteria-en"
10 }
11}

Updated endpoints:

EndpointTitle
GET /assistantsList agents
GET /assistants/{model_id}Get an agent
POST /assistantsCreate an agent
PUT /assistants/{model_id}Update an agent

Updated supported LLM models

The list of available AI models has been updated. New models have been added and GPT-4o has been removed.

New models:

ModelDescription
gpt-4.1-nanoLightweight variant of GPT-4.1 optimized for speed and cost
gpt-5-miniCompact GPT-5 variant balancing performance and cost
gpt-5-nanoLightweight GPT-5 variant optimized for speed and cost
synthflowOptimized for real-time, natural phone conversations

Updated endpoints:

EndpointTitle
POST /assistantsCreate an agent
PUT /assistants/{model_id}Update an agent

Custom end-call reasons

You can now define custom conditions that trigger automatic call termination using the new end_call_reasons field on the Agent schema. When the AI agent detects one of these conditions during a conversation, it says a brief farewell and ends the call. This works with both simple prompt and Flow Designer agents.

Updated endpoints:

EndpointTitle
POST /assistantsCreate an agent
PUT /assistants/{model_id}Update an agent

New response fields:

When a call ends due to a custom end-call reason, the post-call webhook response includes:

FieldDescription
end_call_reasonSet to custom_end_call
custom_end_call_reasonThe specific user-defined reason that triggered call termination

For more details, see the End-Call Reasons documentation.


New greeting_message_mode and greeting_message_human_talk_timeout fields on Agent

You can now control how your agent starts a conversation using two new fields on the Agent schema.

greeting_message_mode lets you choose between three behaviors:

ModeDescription
humanThe agent waits for the human to speak first
agent_staticThe agent speaks the configured greeting_message immediately
agent_dynamicThe agent generates a greeting from the prompt and speaks it

greeting_message_human_talk_timeout sets the maximum number of seconds the agent waits for the human to speak first when using human mode. If the timeout is reached, the agent starts the conversation automatically.

Updated endpoints:

EndpointTitle
POST /assistantsCreate an agent
PUT /assistants/{model_id}Update an agent

For more details, see the Greeting Message Behavior documentation.


Subaccount Minute Limit (max_minutes) now available in Subaccount APIs

The max_minutes field is now included in the response for the Get Subaccount and List Subaccounts endpoints. This field indicates the maximum number of minutes allocated to a subaccount, making it easier to monitor usage limits alongside the existing minutes_used field.

Updated endpoints:

EndpointTitle
GET /subaccounts/{subaccount_id}Get subaccount
GET /subaccountsList subaccounts

Notes:

  • max_minutes is an integer representing the configured cap for the subaccount
  • The field may be null if no limit has been set

Knowledge Base Sources API

A new endpoint has been added to retrieve the list of sources attached to a knowledge base.

New endpoints:

EndpointTitle
GET /knowledge_base/{knowledge_base_id}/sourcesList knowledge base sources
  • List knowledge base sources: Returns a paginated list of sources for a given knowledge base, including each source’s type, name, content_preview, url, and timestamps (created_at, updated_at). Use the limit and offset query parameters to control pagination.

Collected Variables (Slots) now available in Post-call Webhooks and Call APIs

The collected_variables field is now included in post-call webhook payloads and call API responses. This field contains collected variables (slots) from your conversation flows, allowing you to access user-provided information programmatically.

Example Response:

1{
2 "collected_variables": {
3 "user_name": {
4 "value": "Julian",
5 "collected": true
6 },
7 "appointment_date": {
8 "value": "2025-10-28",
9 "collected": true
10 },
11 "user_email": {
12 "value": null,
13 "collected": false
14 }
15 }
16}

Updated endpoints:

EndpointTitle
GET /callsGet all calls
GET /calls/{call_id}Get a call

Post-call Webhook:

The collected_variables field is now included in the post-call webhook payload when configured.

Notes:

  • Each variable has a value (the collected data) and collected (boolean indicating successful collection)
  • The collected_variables field may be null if not available for a specific call
  • Variables are keyed by agent ID, then by variable name

PII Redaction API parameter

A new redact_pii parameter has been added to the Agent endpoints, allowing you to enable PII (Personally Identifiable Information) redaction via the API.

Updated endpoints:

EndpointTitle
POST /assistantsCreate an agent
PUT /assistants/{model_id}Update an agent

When redact_pii is set to true, sensitive data is automatically removed from transcripts, post-call webhook payloads, and internal logs. Redacted data types include:

  • Credit card numbers, expiration dates, and CVVs
  • Social security numbers
  • Names, email addresses, phone numbers, and physical addresses

See Security & Compliance for more information.


Voices API enhancements

Updated endpoints:

EndpointTitle
GET /voicesGet voices
  • Get voices: Now includes pagination information (total_records, limit, offset) in the response.