Assistants
Create, update, clone, delete, and manage AI voice assistants through the Talkturo REST API — configure prompts, voices, models, and telephony settings.
curl -X POST "https://api.talkturo.com/api/assistants" \
-H "Authorization: Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8" \
-H "Content-Type: application/json" \
-d '{
"accountSlug": "acme-sales",
"name": "Inbound Sales Assistant"
}'
{
"success": true,
"assistant": {
"id": "7f5a4d6e-1d1b-4f76-9b03-2e9f48d09f6a",
"name": "Inbound Sales Assistant"
}
}
curl -X POST "https://api.talkturo.com/api/assistants" \
-H "Authorization: Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8" \
-H "Content-Type: application/json" \
-d '{
"accountSlug": "acme-sales",
"name": "Inbound Sales Assistant",
"templateId": "tmpl_sales_inbound_v1"
}'
const response = await fetch("https://api.talkturo.com/api/assistants", {
method: "POST",
headers: {
"Authorization": "Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8",
"Content-Type": "application/json"
},
body: JSON.stringify({
accountSlug: "acme-sales",
name: "Inbound Sales Assistant",
templateId: "tmpl_sales_inbound_v1"
})
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
"https://api.talkturo.com/api/assistants",
headers={
"Authorization": "Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8",
"Content-Type": "application/json"
},
json={
"accountSlug": "acme-sales",
"name": "Inbound Sales Assistant",
"templateId": "tmpl_sales_inbound_v1"
}
)
print(response.json())
{
"success": true,
"assistant": {
"id": "7f5a4d6e-1d1b-4f76-9b03-2e9f48d09f6a",
"account_slug": "acme-sales",
"name": "Inbound Sales Assistant",
"type": "sales",
"created_at": "2025-02-18T14:22:31.114Z",
"updated_at": "2025-02-18T14:22:31.114Z"
}
}
curl -X PATCH "https://api.talkturo.com/api/assistants/7f5a4d6e-1d1b-4f76-9b03-2e9f48d09f6a" \
-H "Authorization: Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8" \
-H "Content-Type: application/json" \
-d '{
"accountSlug": "acme-sales",
"name": "Inbound Sales Assistant v2",
"voice": "alloy",
"model": "gpt-4o-realtime"
}'
const response = await fetch(
"https://api.talkturo.com/api/assistants/7f5a4d6e-1d1b-4f76-9b03-2e9f48d09f6a",
{
method: "PATCH",
headers: {
"Authorization": "Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8",
"Content-Type": "application/json"
},
body: JSON.stringify({
accountSlug: "acme-sales",
name: "Inbound Sales Assistant v2",
voice: "alloy",
model: "gpt-4o-realtime"
})
}
);
const data = await response.json();
console.log(data);
{
"success": true,
"assistant": {
"id": "7f5a4d6e-1d1b-4f76-9b03-2e9f48d09f6a",
"name": "Inbound Sales Assistant v2",
"voice": "alloy",
"model": "gpt-4o-realtime",
"updated_at": "2025-02-18T14:31:09.027Z"
}
}
curl -X DELETE "https://api.talkturo.com/api/assistants/7f5a4d6e-1d1b-4f76-9b03-2e9f48d09f6a" \
-H "Authorization: Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8"
{
"success": true,
"message": "Assistant deleted successfully"
}
curl -X POST "https://api.talkturo.com/api/assistants/7f5a4d6e-1d1b-4f76-9b03-2e9f48d09f6a/clone" \
-H "Authorization: Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8"
const response = await fetch(
"https://api.talkturo.com/api/assistants/7f5a4d6e-1d1b-4f76-9b03-2e9f48d09f6a/clone",
{
method: "POST",
headers: {
"Authorization": "Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8"
}
}
);
const data = await response.json();
console.log(data);
{
"success": true,
"assistant": {
"id": "0f3f8bc6-5e95-4344-88d2-8e5660ec9bf1",
"name": "Inbound Sales Assistant Copy",
"created_at": "2025-02-18T14:39:12.442Z",
"updated_at": "2025-02-18T14:39:12.442Z"
}
}
curl -X GET "https://api.talkturo.com/api/assistants/7f5a4d6e-1d1b-4f76-9b03-2e9f48d09f6a/usage-stats" \
-H "Authorization: Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8"
const response = await fetch(
"https://api.talkturo.com/api/assistants/7f5a4d6e-1d1b-4f76-9b03-2e9f48d09f6a/usage-stats",
{
method: "GET",
headers: {
"Authorization": "Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8"
}
}
);
const data = await response.json();
console.log(data);
{
"success": true,
"stats": {
"total_calls": 148,
"total_minutes": 912,
"last_call_at": "2025-02-18T13:54:22.019Z"
}
}
Manage assistants
Create assistants, update their configuration, clone existing setups, delete assistants you no longer need, and retrieve usage data for reporting or operational checks.
All assistant endpoints support dual authentication through withApiAuth. Authenticate with either a Talkturo API key or an authenticated session cookie.
Base path
All endpoints on this page are rooted at /api/assistants.
Authentication
Send your API key in the Authorization header as a bearer token.
If you use session-based auth from the Talkturo app, the browser sends the session cookie automatically. External integrations usually use API keys.
Create an assistant
Create a new assistant under an account by sending the account slug and assistant name. If you provide a template ID, Talkturo sets the assistant type from that template.
Endpoint
POST /api/assistants
Body parameters
The account slug that owns the assistant.
The assistant name.
An optional template identifier. When present, Talkturo sets the assistant type from the template.
Response fields
Returns true when the assistant is created successfully.
The newly created assistant record.
The assistant UUID.
The assistant name stored by Talkturo.
The assistant type derived from the template when templateId is provided.
Talkturo creates the assistant with default or null values for fields you do not provide at creation time. Update the assistant afterward to configure prompts, voices, models, or telephony settings.
Update an assistant
Update an existing assistant by assistant ID. The update endpoint accepts accountSlug and any assistant fields supported by the backend.
Endpoint
PATCH /api/assistants/{assistantId}
Path parameters
The assistant UUID.
Body parameters
The owning account slug. Include it when your integration scopes updates to a specific account context.
Any assistant fields accepted by the backend. Use this endpoint to update configuration such as prompts, voices, models, and telephony-related settings.
Response fields
Returns true when the assistant is updated successfully.
The updated assistant record.
If you send transcriptor_options, Talkturo validates those options against the selected provider and model before saving the update.
When the update succeeds, the response includes the saved assistant object. Use that object as the source of truth for the assistant's latest configuration.
Delete an assistant
Delete an assistant permanently by ID. Talkturo checks ownership before removing the record.
Endpoint
DELETE /api/assistants/{assistantId}
Path parameters
The assistant UUID to delete.
Response fields
Returns true when the assistant is deleted successfully.
A confirmation message. The value is Assistant deleted successfully.
Deleting an assistant is irreversible. Remove it only after you confirm that no active workflows, phone numbers, or operational processes still depend on it.
Clone an assistant
Clone an existing assistant to duplicate its configuration into a new assistant record. Use cloning when you want a starting point for a variant instead of rebuilding settings manually.
Endpoint
POST /api/assistants/{assistantId}/clone
Path parameters
The assistant UUID to clone.
Response fields
Returns true when the assistant is cloned successfully.
The cloned assistant record.
The UUID assigned to the cloned assistant.
After cloning, update the new assistant if you need to change the name, prompts, or telephony configuration before using it in production.
Retrieve usage statistics
Fetch usage data for a single assistant. Use this endpoint for monitoring, dashboards, or account-level reporting workflows.
Endpoint
GET /api/assistants/{assistantId}/usage-stats
Path parameters
The assistant UUID whose usage statistics you want to retrieve.
Response fields
Returns true when usage statistics are returned successfully.
An object containing usage data for the assistant.
The shape of stats depends on the usage data Talkturo returns for that assistant. Build your client to read the fields your reporting workflow requires and tolerate additional fields over time.
Common response shape
All endpoints on this page return a top-level success field. Mutation endpoints also return either an assistant object or a message, depending on the operation.
Success fields
Indicates whether the request completed successfully.
Returned by the create, update, and clone endpoints.
Returned by the usage statistics endpoint.
Returned by the delete endpoint.
Endpoint summary
| Method | Path | Purpose |
|---|---|---|
POST | /api/assistants | Create an assistant |
PATCH | /api/assistants/{assistantId} | Update an assistant |
DELETE | /api/assistants/{assistantId} | Delete an assistant |
POST | /api/assistants/{assistantId}/clone | Clone an assistant |
GET | /api/assistants/{assistantId}/usage-stats | Retrieve usage statistics |