AI assistants
Assistants, the tools they may use, their instruction library and what they remember.
The assistant object
As returned by GET /assistants, one element of the list. Every endpoint below that returns this resource returns exactly these fields.
| Name | Type | Description |
|---|---|---|
idrequired | string (uuid) | Assistant id |
namerequired | string | Display name, shown in the dashboard and the activity feed |
colorrequired | string | null | Accent colour used in the activity feed |
enabledrequired | boolean | A disabled assistant refuses every run start |
system_promptrequired | string | The persona and standing instructions sent to the model on every tick |
modelrequired | string | null | Model id, or null to inherit the account default |
temperaturerequired | number | null | Sampling temperature, or null to inherit the account default |
tool_accessrequired | map<string, boolean> | Per-tool on or off, by tool id. A tool absent here takes the catalogue default from GET /tools |
gated_toolsrequired | string[] | Tool ids that raise a human approval before running, on top of the always-gated critical tools |
delegationrequired | object | Whether and how far this assistant may delegate |
delegation.enabledrequired | boolean | May this assistant hand work to sub-agents |
delegation.allowed_toolsrequired | string[] | null | Tools a sub-agent may be given; null means anything the parent holds, and an empty list means nothing |
delegation.max_children_per_runrequired | integer | Sub-agents one run may spawn, clamped by the engine |
delegation.max_cost_usdrequired | number | null | Tighter spend ceiling for the whole tree; null uses the engine default |
schedulerequired | object | When this assistant is allowed to answer |
schedule.moderequired | string (enum) | always = any hour; outside_business_hours = only when the business is closed; custom_hours = only inside the hours belowalwayscustom_hoursoutside_business_hours |
schedule.hoursoptional | map<string, string[][]> | null | custom_hours only: weekday key to a list of [open, close] times as HH:MM. A missing day is closed |
default_handoff_user_idrequired | string (uuid) | null | Member who receives conversations this assistant hands off |
history_limitrequired | integer | null | Recent messages sent to the model; null is the full history and 0 is none |
transcribe_mediarequired | boolean | Transcribe inbound voice notes and describe photos for the inbox |
handle_voicerequired | boolean | Send inbound voice notes to the model |
handle_imagesrequired | boolean | Send inbound customer photos to the model |
voice_repliesrequired | boolean | May reply with a synthesised voice note |
voice_providerrequired | string | null | Text-to-speech provider, or null for none |
voice_idrequired | string | null | Provider-specific voice, or null for its default |
targetsrequired | string[] | What it answers on: a channel name, or pwa:<connection_id> for one linked personal number |
instruction_countrequired | integer | Instructions bound to this assistant |
created_atrequired | string (date-time) | When the assistant was created |
updated_atrequired | string (date-time) | When it was last edited |
Endpoints
18 endpoints, each on its own page with its parameters, responses, error codes and samples in curl, Node and Python.
- GETList assistants
- POSTCreate an assistant
- GETGet an assistant
- PATCHUpdate an assistant
- DELETEDelete an assistant
- GETList an assistant’s instructions
- PUTSet an assistant’s instructions
- GETList an assistant’s tools
- PUTSet an assistant’s tools
- GETList the tool catalogue
- GETList the instruction library
- POSTAdd a library instruction
- GETGet a library instruction
- PATCHUpdate a library instruction
- DELETEDelete a library instruction
- GETList assistant memories
- POSTWrite a memory
- DELETEForget a memory