client.assistants
AI voice assistants: prompt, voice, tools and call behaviour. These methods are on client.assistants, where client is a MoreVoice client (see the Python SDK). On AsyncMoreVoice the same methods are awaited. Each one returns the response object and raises an exception when the API answers with an error.
create()
Section titled “create()”Create an assistant. Creates an assistant. Only name is required; fields you leave out take their defaults (GET /v1/assistants/{id} shows them all).
def create(self, body: _m.AssistantCreateParamsInput | Mapping[str, Any], *, more_voice_version: str | Unset = UNSET, idempotency_key: str | Unset = UNSET) -> _m.Assistantclient.assistants.create() · await async_client.assistants.create() · POST /assistants · API reference
Request body
Section titled “Request body”| Field | Type | Required | Description |
|---|---|---|---|
name |
string |
yes | The assistant’s name (yours; callers never hear it). |
advanced |
object |
no | — |
answering_machine_detection |
object |
no | — |
artifacts |
object |
no | — |
end_call_message |
string |
no | Said before the assistant ends the call. |
end_call_phrases |
string[] |
no | Phrases that end the call. |
first_message |
string |
no | What the assistant says first. |
first_message_mode |
"assistant_speaks_first" | "assistant_waits_for_user" | "assistant_generates_first_message" |
no | — |
flow_id |
string | null |
no | flow_… ID. |
language |
string |
no | The call language. |
llm |
object |
no | — |
max_duration_seconds |
number |
no | 10–43200 (12 hours). |
metadata |
MetadataInput |
no | Up to 50 key/value pairs (keys up to 40 characters, values up to 500) you attach to an object. Returned as sent. |
public |
boolean |
no | Allow publishable keys (the browser widget) to call this assistant. Default false. |
system_prompt |
string |
no | The instructions the model follows. |
tools |
object |
no | Fields you leave out are kept. |
transcriber |
object |
no | — |
voice |
object |
no | — |
Returns
Section titled “Returns”Assistant:
| Field | Type | Description |
|---|---|---|
id |
string |
The assistant’s ID. |
object |
"assistant" |
Always assistant. |
livemode |
boolean |
true in live mode, false in test mode. |
name |
string |
The assistant’s name (yours; callers never hear it). |
language |
string |
The call language (BCP-47, e.g. he, en). |
system_prompt |
string |
The instructions the model follows. |
first_message |
string |
What the assistant says first. |
first_message_mode |
"assistant_speaks_first" | "assistant_waits_for_user" | "assistant_generates_first_message" |
Whether the assistant speaks first (first_message), waits for the caller, or generates its opening. |
voice |
AssistantVoice |
How the assistant sounds. |
transcriber |
AssistantTranscriber |
How the assistant hears. |
llm |
AssistantLlm |
The language model behind the assistant. |
tools |
AssistantTools |
The tools the assistant can use. |
flow_id |
string | null |
flow_… ID. |
end_call_message |
string |
Said before the assistant ends the call. |
end_call_phrases |
string[] |
Phrases that end the call when the assistant says them. |
max_duration_seconds |
number |
Calls end after this long. |
answering_machine_detection |
AssistantAnsweringMachineDetection |
Answering-machine detection on outbound calls. |
artifacts |
AssistantArtifacts |
What is kept after a call. |
public |
boolean |
Publishable keys (the browser widget) may start web calls to this assistant. |
metadata |
Metadata |
Up to 50 key/value pairs (keys up to 40 characters, values up to 500) you attach to an object. Returned as sent. |
advanced |
AssistantAdvanced |
Pipeline tuning. The defaults suit most assistants. |
created |
string |
An ISO-8601 timestamp in UTC. |
updated |
string |
An ISO-8601 timestamp in UTC. |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
assistant = client.assistants.create({ "first_message": "שלום, הגעתם למרפאת השרון. איך אפשר לעזור?", "language": "he", "metadata": { "crm_id": "0031x00000AbCdE", }, "name": "Clinic receptionist", "system_prompt": "You book, move and cancel appointments. Keep answers short.", "tools": { "custom": [ { "description": "Find free appointment slots for a doctor and date", "headers": { "Authorization": "Bearer crm-secret", }, "name": "find_slots", "parameters": { "properties": { "date": { "type": "string", }, "doctor": { "type": "string", }, }, "required": [ "date", ], "type": "object", }, "url": "https://crm.example.com/voice/tools", }, ], "end_call": True, "transfer_call": { "destination": "queue:reception", }, }, "voice": { "provider": "gemini", "style": "warm", "voice_id": "Kore", },})print(assistant)delete()
Section titled “delete()”Delete an assistant. Deletes the assistant. Past calls keep their history; inbound routes and campaigns that used it need another assistant.
def delete(self, id: str, *, more_voice_version: str | Unset = UNSET, idempotency_key: str | Unset = UNSET) -> _m.DeletedAssistantclient.assistants.delete() · await async_client.assistants.delete() · DELETE /assistants/{id} · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A assistant ID (asst_…). |
Returns
Section titled “Returns”DeletedAssistant:
| Field | Type | Description |
|---|---|---|
id |
string |
A assistant ID (prefix asst_). |
object |
"assistant" |
Always assistant. |
deleted |
true |
— |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
deleted_assistant = client.assistants.delete("asst_7Hk2Lm9Qp")print(deleted_assistant)duplicate()
Section titled “duplicate()”Duplicate an assistant. Creates a copy with the same configuration, tools (including their stored headers) and metadata.
def duplicate(self, id: str, body: _m.AssistantsDuplicateBody | Mapping[str, Any] | Unset = UNSET, *, more_voice_version: str | Unset = UNSET, idempotency_key: str | Unset = UNSET) -> _m.Assistantclient.assistants.duplicate() · await async_client.assistants.duplicate() · POST /assistants/{id}/duplicate · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A assistant ID (asst_…). |
Request body
Section titled “Request body”| Field | Type | Required | Description |
|---|---|---|---|
name |
string |
no | The copy’s name (default: the original’s name + “ (עותק)“). |
Returns
Section titled “Returns”Assistant:
| Field | Type | Description |
|---|---|---|
id |
string |
The assistant’s ID. |
object |
"assistant" |
Always assistant. |
livemode |
boolean |
true in live mode, false in test mode. |
name |
string |
The assistant’s name (yours; callers never hear it). |
language |
string |
The call language (BCP-47, e.g. he, en). |
system_prompt |
string |
The instructions the model follows. |
first_message |
string |
What the assistant says first. |
first_message_mode |
"assistant_speaks_first" | "assistant_waits_for_user" | "assistant_generates_first_message" |
Whether the assistant speaks first (first_message), waits for the caller, or generates its opening. |
voice |
AssistantVoice |
How the assistant sounds. |
transcriber |
AssistantTranscriber |
How the assistant hears. |
llm |
AssistantLlm |
The language model behind the assistant. |
tools |
AssistantTools |
The tools the assistant can use. |
flow_id |
string | null |
flow_… ID. |
end_call_message |
string |
Said before the assistant ends the call. |
end_call_phrases |
string[] |
Phrases that end the call when the assistant says them. |
max_duration_seconds |
number |
Calls end after this long. |
answering_machine_detection |
AssistantAnsweringMachineDetection |
Answering-machine detection on outbound calls. |
artifacts |
AssistantArtifacts |
What is kept after a call. |
public |
boolean |
Publishable keys (the browser widget) may start web calls to this assistant. |
metadata |
Metadata |
Up to 50 key/value pairs (keys up to 40 characters, values up to 500) you attach to an object. Returned as sent. |
advanced |
AssistantAdvanced |
Pipeline tuning. The defaults suit most assistants. |
created |
string |
An ISO-8601 timestamp in UTC. |
updated |
string |
An ISO-8601 timestamp in UTC. |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
assistant = client.assistants.duplicate("asst_7Hk2Lm9Qp", { "name": "Clinic receptionist (evening)",})print(assistant)list()
Section titled “list()”List assistants. Your assistants, newest first.
def list(self, *, limit: int | Unset = 20, starting_after: str | Unset = UNSET, ending_before: str | Unset = UNSET, more_voice_version: str | Unset = UNSET) -> AsyncPage[_m.Assistant]client.assistants.list() · await async_client.assistants.list() · GET /assistants · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
limit |
integer |
no | How many objects to return, 1–100 (default 20). |
starting_after |
string |
no | A cursor (next_cursor) or object ID: return the objects after it (older). |
ending_before |
string |
no | A cursor or object ID: return the objects before it (newer). |
Returns
Section titled “Returns”A page of results (AssistantList): data, has_more and next_cursor.
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
for assistant in client.assistants.list(): print(assistant)retrieve()
Section titled “retrieve()”Retrieve an assistant. Returns the assistant with every field, including the defaults of the fields you never set. Assistants are configuration shared by live and test mode.
def retrieve(self, id: str, *, more_voice_version: str | Unset = UNSET) -> _m.Assistantclient.assistants.retrieve() · await async_client.assistants.retrieve() · GET /assistants/{id} · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A assistant ID (asst_…). |
Returns
Section titled “Returns”Assistant:
| Field | Type | Description |
|---|---|---|
id |
string |
The assistant’s ID. |
object |
"assistant" |
Always assistant. |
livemode |
boolean |
true in live mode, false in test mode. |
name |
string |
The assistant’s name (yours; callers never hear it). |
language |
string |
The call language (BCP-47, e.g. he, en). |
system_prompt |
string |
The instructions the model follows. |
first_message |
string |
What the assistant says first. |
first_message_mode |
"assistant_speaks_first" | "assistant_waits_for_user" | "assistant_generates_first_message" |
Whether the assistant speaks first (first_message), waits for the caller, or generates its opening. |
voice |
AssistantVoice |
How the assistant sounds. |
transcriber |
AssistantTranscriber |
How the assistant hears. |
llm |
AssistantLlm |
The language model behind the assistant. |
tools |
AssistantTools |
The tools the assistant can use. |
flow_id |
string | null |
flow_… ID. |
end_call_message |
string |
Said before the assistant ends the call. |
end_call_phrases |
string[] |
Phrases that end the call when the assistant says them. |
max_duration_seconds |
number |
Calls end after this long. |
answering_machine_detection |
AssistantAnsweringMachineDetection |
Answering-machine detection on outbound calls. |
artifacts |
AssistantArtifacts |
What is kept after a call. |
public |
boolean |
Publishable keys (the browser widget) may start web calls to this assistant. |
metadata |
Metadata |
Up to 50 key/value pairs (keys up to 40 characters, values up to 500) you attach to an object. Returned as sent. |
advanced |
AssistantAdvanced |
Pipeline tuning. The defaults suit most assistants. |
created |
string |
An ISO-8601 timestamp in UTC. |
updated |
string |
An ISO-8601 timestamp in UTC. |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
assistant = client.assistants.retrieve("asst_7Hk2Lm9Qp")print(assistant)update()
Section titled “update()”Update an assistant. Updates the fields you send. Nested objects merge with the stored values and arrays are replaced; tools.custom replaces the whole list (a tool sent without headers keeps the stored headers of the tool with the same name). Settings that are not part of the API are kept.
def update(self, id: str, body: _m.AssistantUpdateParamsInput | Mapping[str, Any] | Unset = UNSET, *, more_voice_version: str | Unset = UNSET) -> _m.Assistantclient.assistants.update() · await async_client.assistants.update() · PATCH /assistants/{id} · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A assistant ID (asst_…). |
Request body
Section titled “Request body”| Field | Type | Required | Description |
|---|---|---|---|
advanced |
object |
no | — |
answering_machine_detection |
object |
no | — |
artifacts |
object |
no | — |
end_call_message |
string |
no | Said before the assistant ends the call. |
end_call_phrases |
string[] |
no | Phrases that end the call. |
first_message |
string |
no | What the assistant says first. |
first_message_mode |
"assistant_speaks_first" | "assistant_waits_for_user" | "assistant_generates_first_message" |
no | — |
flow_id |
string | null |
no | flow_… ID. |
language |
string |
no | The call language. |
llm |
object |
no | — |
max_duration_seconds |
number |
no | 10–43200 (12 hours). |
metadata |
MetadataInput |
no | Up to 50 key/value pairs (keys up to 40 characters, values up to 500) you attach to an object. Returned as sent. |
name |
string |
no | The assistant’s name (yours; callers never hear it). |
public |
boolean |
no | Allow publishable keys (the browser widget) to call this assistant. Default false. |
system_prompt |
string |
no | The instructions the model follows. |
tools |
object |
no | Fields you leave out are kept. |
transcriber |
object |
no | — |
voice |
object |
no | — |
Returns
Section titled “Returns”Assistant:
| Field | Type | Description |
|---|---|---|
id |
string |
The assistant’s ID. |
object |
"assistant" |
Always assistant. |
livemode |
boolean |
true in live mode, false in test mode. |
name |
string |
The assistant’s name (yours; callers never hear it). |
language |
string |
The call language (BCP-47, e.g. he, en). |
system_prompt |
string |
The instructions the model follows. |
first_message |
string |
What the assistant says first. |
first_message_mode |
"assistant_speaks_first" | "assistant_waits_for_user" | "assistant_generates_first_message" |
Whether the assistant speaks first (first_message), waits for the caller, or generates its opening. |
voice |
AssistantVoice |
How the assistant sounds. |
transcriber |
AssistantTranscriber |
How the assistant hears. |
llm |
AssistantLlm |
The language model behind the assistant. |
tools |
AssistantTools |
The tools the assistant can use. |
flow_id |
string | null |
flow_… ID. |
end_call_message |
string |
Said before the assistant ends the call. |
end_call_phrases |
string[] |
Phrases that end the call when the assistant says them. |
max_duration_seconds |
number |
Calls end after this long. |
answering_machine_detection |
AssistantAnsweringMachineDetection |
Answering-machine detection on outbound calls. |
artifacts |
AssistantArtifacts |
What is kept after a call. |
public |
boolean |
Publishable keys (the browser widget) may start web calls to this assistant. |
metadata |
Metadata |
Up to 50 key/value pairs (keys up to 40 characters, values up to 500) you attach to an object. Returned as sent. |
advanced |
AssistantAdvanced |
Pipeline tuning. The defaults suit most assistants. |
created |
string |
An ISO-8601 timestamp in UTC. |
updated |
string |
An ISO-8601 timestamp in UTC. |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
assistant = client.assistants.update("asst_7Hk2Lm9Qp", { "advanced": { "stop_speaking_plan": { "num_words": 2, }, }, "metadata": { "stage": "beta", }, "voice": { "style": "calm and reassuring", },})print(assistant)