ResourcesAssistants

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"
  }'
{
  "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"
  }'
{
  "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"
{
  "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?accountId=9a6e7d1c-3fd1-4af6-a3ab-b0e9d3ac4a71" \
  -H "Authorization: Bearer tk_live_example_9xmk7q2r4f8n6p1s3d5h7j9k2m4q6w8"
{
  "totalCalls": 148,
  "totalMinutes": 912.0,
  "avgDurationMinutes": 6.2,
  "completedCallsWithDuration": 145,
  "successRatePercent": 87.5,
  "successEvaluatedCount": 130,
  "timeline": {
    "today": 5,
    "last7Days": 45,
    "last30Days": 148,
    "last365Days": 148
  },
  "dailySeries": [
    { "date": "2025-02-18", "count": 6 },
    { "date": "2025-02-17", "count": 4 }
  ]
}

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

body
accountSlugstring
Required

The account slug that owns the assistant.

body
namestring
Required

The assistant name.

body
templateIdstring

An optional template identifier. When present, Talkturo sets the assistant type from the template.

Response fields

successboolean
Required

Returns true when the assistant is created successfully.

assistantobject
Required

The newly created assistant record.

assistant.idstring
Required

The assistant UUID.

assistant.namestring
Required

The assistant name stored by Talkturo.

assistant.typestring

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

Body parameters

body
accountSlugstring

The owning account slug. Include it when your integration scopes updates to a specific account context.

body
assistant fieldsobject

Any assistant fields accepted by the backend. Use this endpoint to update configuration such as prompts, voices, models, and telephony-related settings.

Response fields

successboolean
Required

Returns true when the assistant is updated successfully.

assistantobject
Required

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

path
assistantIdstring
Required

The assistant UUID to delete.

Response fields

successboolean
Required

Returns true when the assistant is deleted successfully.

messagestring
Required

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

path
assistantIdstring
Required

The assistant UUID to clone.

Body parameters

body
accountSlugstring

The account slug for the workspace where the clone should be created. If omitted, the API key's associated account is used.

Response fields

successboolean
Required

Returns true when the assistant is cloned successfully.

assistantobject
Required

The cloned assistant record.

assistant.idstring
Required

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

path
assistantIdstring
Required

The assistant UUID whose usage statistics you want to retrieve.

Query parameters

query
accountIdstring
Required

The account UUID that owns the assistant. Returns 400 if omitted.

Response fields

totalCallsinteger
Required

Total number of calls handled by the assistant.

totalMinutesnumber
Required

Total call duration in minutes, rounded to one decimal place.

avgDurationMinutesnumber

Average call duration in minutes. Returns null when no calls have both a start and end time recorded.

completedCallsWithDurationinteger
Required

Number of calls that have both started_at and ended_at timestamps, used to compute the average.

successRatePercentnumber

Percentage of calls that were successful, rounded to one decimal. Returns null when no calls could be scored.

successEvaluatedCountinteger
Required

Number of calls that could be evaluated for success scoring.

timelineobject
Required

Call counts grouped by time range: today, last7Days, last30Days, and last365Days.

dailySeriesarray
Required

Array of daily call counts for the trailing 30 days. Each entry contains a date in YYYY-MM-DD UTC format and a count.

Tool configurations

Tool configs let you attach third-party tools such as Cal.com scheduling, Zapier, or custom webhooks to an assistant.

All tool configuration endpoints require session authentication.

MethodPathPurpose
GET/api/assistants/{assistantId}/tool-configsList all enabled tool configs
GET/api/assistants/{assistantId}/tool-configs/{toolType}Get configs for a specific tool type
POST/api/assistants/{assistantId}/tool-configs/{toolType}Create or update a tool config
DELETE/api/assistants/{assistantId}/tool-configs/{toolType}Delete tool config(s)

Get tool configs by type

Use this endpoint to retrieve one config, or all configs, for a specific tool type.

Endpoint

GET /api/assistants/{assistantId}/tool-configs/{toolType}

Path parameters

path
toolTypestring
Required

The tool type to retrieve.

Allowed values:cal_comzapiercal_com_schedulecal_com_get_bookingscal_com_cancel

Query parameters

query
configIdstring

Optional config UUID to retrieve a specific configuration.

query
allboolean

Set to true to return all configs of this type.

Create or update a tool config

Use this endpoint to create a new tool config or update an existing one for the selected tool type.

Endpoint

POST /api/assistants/{assistantId}/tool-configs/{toolType}

Path parameters

path
toolTypestring
Required

The tool type to create or update.

Allowed values:cal_comzapiercal_com_schedulecal_com_get_bookingscal_com_cancel

Query parameters

query
configIdstring

Optional config UUID. When provided, the request updates that existing configuration.

Body parameters

body
configobject
Required

Free-form configuration for the tool.

body
is_enabledboolean

Whether the tool config is enabled. Defaults to true.

Delete tool configs

Delete one config by ID, or remove all configs for a tool type.

Endpoint

DELETE /api/assistants/{assistantId}/tool-configs/{toolType}

Path parameters

path
toolTypestring
Required

The tool type to delete.

Allowed values:cal_comzapiercal_com_schedulecal_com_get_bookingscal_com_cancel

Query parameters

query
configIdstring

Deletes a specific config when provided. Omit it to delete all configs of this type.

Billing estimate

Fetch an estimated credits-per-minute cost based on the assistant's provider settings and the active cost catalog.

Endpoint

GET /api/assistants/{assistantId}/billing/estimate

Path parameters

Query parameters

query
llm_providerstring

Override the LLM provider for live preview.

query
llm_modelstring

Override the LLM model for live preview.

query
stt_providerstring

Override the STT provider for live preview.

query
stt_modelstring

Override the STT model for live preview.

query
tts_providerstring

Override the TTS provider for live preview.

query
tts_modelstring

Override the TTS model for live preview.

query
is_realtimestring

Set to true or 1 to estimate realtime mode.

Response fields

catalogobject
Required

Active cost catalog used for the estimate. Includes id and name.

assumptionsobject
Required

Assumptions used to convert provider rates into per-minute estimates. Includes chars_per_minute, prompt_tokens_per_minute, and completion_tokens_per_minute.

assistantobject
Required

Assistant provider and model information used for the estimate, including STT, LLM, and TTS settings.

ratesobject
Required

Resolved provider rates used to build the estimate, including per-minute and per-1k rates.

breakdown_credits_per_minuteobject
Required

Estimated credits-per-minute contribution from STT, TTS, LLM, and telephony components.

estimated_credits_per_minutenumber
Required

Total estimated credits per minute.

Knowledge base attachments

Manage knowledge-base files attached to an assistant. Attach existing files from the account library. These endpoints do not upload new files. See Knowledge Base for file upload and management.

MethodPathPurposeAuthScope
GET/api/assistants/{assistantId}/knowledge-baseList attached knowledge-base filesAPI key or sessionkb:read
POST/api/assistants/{assistantId}/knowledge-baseAttach an existing fileAPI key or sessionkb:write
DELETE/api/assistants/{assistantId}/knowledge-base/{fileId}Detach a fileAPI key or sessionkb:write

List knowledge-base files

Retrieve all knowledge-base files attached to the assistant. Results are ordered by attachment creation time, newest first.

Endpoint

GET /api/assistants/{assistantId}/knowledge-base

Path parameters

Response fields

successboolean
Required

Returns true when the request succeeds.

filesarray
Required

Array of attached knowledge-base file objects. Each object includes id, filename, mime_type, size_bytes, status, status_error, char_count, chunk_count, created_at, and updated_at.

Attach a knowledge-base file

Attach an existing knowledge-base file from the account library to the assistant. The file must already exist and belong to the same account as the assistant. This operation is idempotent. Attaching a file that is already attached returns success without creating a duplicate.

Endpoint

POST /api/assistants/{assistantId}/knowledge-base

Path parameters

Body parameters

body
file_idstring
Required

UUID of the knowledge-base file to attach. The file must already exist in the account library.

Response fields

successboolean
Required

Returns true when the file is attached or was already attached.

idempotentboolean

Returns true when the file was already attached and no new attachment was created.

Detach a knowledge-base file

Remove a knowledge-base file from an assistant. This only removes the attachment. The underlying file remains in the account library. Detaching a non-existent attachment still returns success.

Endpoint

DELETE /api/assistants/{assistantId}/knowledge-base/{fileId}

Path parameters

path
fileIdstring
Required

UUID of the knowledge-base file to detach.

Response fields

successboolean
Required

Returns true when the file is detached or was not attached.

Telephony management

Manage inbound and outbound telephony for an assistant. These endpoints provision and configure LiveKit trunks, assign phone numbers, and start test calls.

Most telephony management endpoints require session authentication and do not support API key authentication. Only the phone-numbers list endpoint supports API keys.

MethodPathPurposeAuth
GET/api/assistants/{assistantId}/telephony/phone-numbersList phone numbers assigned to the assistantAPI key or session
PATCH/api/assistants/{assistantId}/telephony/phone-numbersAssign phone numbers to the assistantAPI key or session
POST/api/assistants/{assistantId}/telephony/inboundEnable or disable inbound callingSession only
POST/api/assistants/{assistantId}/telephony/outboundEnable or disable outbound callingSession only
POST/api/assistants/{assistantId}/telephony/settingsUpdate telephony settings (phone numbers, voicemail, compliance)Session only
POST/api/assistants/{assistantId}/telephony/test-callStart a test callSession only
GET/api/assistants/{assistantId}/telephony/assign-phone-numbersList phone numbers available for assignmentSession only
GET/api/assistants/{assistantId}/telephony/compliance-templatesList compliance templatesSession only

List assigned phone numbers

Retrieve active, non-deleted phone numbers assigned to the assistant. Results include numbers that are unassigned or assigned to this assistant, sorted by phone number ascending.

Endpoint

GET /api/assistants/{assistantId}/telephony/phone-numbers

Path parameters

Query parameters

query
accountSlugstring

Account slug to resolve the workspace.

Response fields

successboolean
Required

Returns true when the request succeeds.

numbersarray
Required

Array of phone number objects. Each object includes id, phone_number, status, is_trial, trial_expires_at, assistant_id, provider, ownership_type, country_code, provider_account_id, provider_account_sid, and account label fields.

Assign phone numbers (PATCH)

Assign phone numbers to the assistant. All existing assignments are removed first, then the supplied IDs are assigned. LiveKit routing is resynchronized for affected assistants.

Endpoint

PATCH /api/assistants/{assistantId}/telephony/phone-numbers

Body parameters

body
accountSlugstring

Account slug for workspace resolution.

body
phoneNumberIdsarray
Required

Array of phone number UUIDs to assign.

Response fields

successboolean
Required

Returns true when phone numbers are assigned successfully.

messagestring
Required

Confirmation message.

Enable or disable inbound calling

Toggle inbound calling for the assistant. Enabling requires at least one active, non-deleted phone number assigned to the assistant. Talkturo provisions or updates the LiveKit inbound trunk and dispatch rule when enabling, and removes them when disabling.

Endpoint

POST /api/assistants/{assistantId}/telephony/inbound

Body parameters

body
accountSlugstring
Required

Account slug for workspace resolution.

body
enabledboolean
Required

Set to true to enable inbound calling, or false to disable it.

Response fields

successboolean
Required

Returns true when the operation succeeds.

assistantobject
Required

Updated assistant telephony state including id, inbound_enabled, outbound_enabled, livekit_inbound_trunk_id, and livekit_dispatch_rule_id.

Enable or disable outbound calling

Toggle outbound calling for the assistant. Enabling requires at least one active assigned phone number. Talkturo provisions or updates the LiveKit outbound trunk when enabling, and removes it when disabling.

Endpoint

POST /api/assistants/{assistantId}/telephony/outbound

Body parameters

body
accountSlugstring
Required

Account slug for workspace resolution.

body
enabledboolean
Required

Set to true to enable outbound calling, or false to disable it.

Response fields

successboolean
Required

Returns true when the operation succeeds.

assistantobject
Required

Updated assistant telephony state including id, inbound_enabled, outbound_enabled, and livekit_outbound_trunk_id.

Update telephony settings

Configure phone number assignments, voicemail, compliance, and destination country in a single request. This endpoint handles LiveKit provisioning, voicemail detection, and compliance consent flows.

Endpoint

POST /api/assistants/{assistantId}/telephony/settings

Body parameters

body
accountSlugstring
Required

Account slug for workspace resolution.

body
phoneNumberIdsarray
Required

Array of phone number UUIDs to assign. IDs are deduplicated automatically.

body
inboundEnabledboolean
Required

Whether to enable inbound calling.

body
outboundEnabledboolean
Required

Whether to enable outbound calling.

body
telnyxConnectionIdstring

Telnyx connection credential ID. An empty string is converted to null.

body
destinationCountrystring

Destination country code for outbound routing. Set to null for automatic region routing. Valid values: ae, au, br, ch, de, fr, gb, il, in, jp, sa, sg, us, za.

body
voicemailobject

Voicemail detection settings. Includes detectionEnabled (boolean), action (string, maximum 40 characters), and message (string, maximum 2000 characters).

body
complianceobject

Compliance consent settings. Includes enabled (boolean), templateId (string, UUID when non-null), briefingText (string, maximum 2000 characters), language (string, maximum 20 characters), requireAck (boolean), fallbackPolicy (retry, block, or continue), and ackTimeoutSeconds (integer, 3 to 60). When compliance.enabled is true, either templateId or non-blank briefingText is required.

Response fields

successboolean
Required

Returns true when telephony settings are updated successfully.

assistantobject
Required

Updated assistant telephony state.

assignedActivenumber
Required

Number of active phone numbers assigned after the update.

Telephony settings are applied atomically. If LiveKit provisioning fails, the route rolls back all enabled flags and trunk IDs to their previous state.

Start a test call

Initiate a test call using the assistant's telephony configuration. Requires sufficient account credits and outbound calling to be enabled.

Endpoint

POST /api/assistants/{assistantId}/telephony/test-call

Body parameters

body
accountSlugstring
Required

Account slug for workspace resolution.

body
fromNumberstring
Required

The from phone number. Must be assigned to the assistant, active, and non-deleted.

body
toNumberstring
Required

The destination phone number. Normalized to E.164 format automatically.

Response fields

successboolean
Required

Returns true when the test call is initiated.

roomNamestring
Required

The LiveKit room name created for the test call.

sipCallIdstring

The SIP call ID if the call was created successfully.

messagestring
Required

Confirmation message with the destination number.

Test calls require sufficient account credits. If the balance is too low, the API returns HTTP 402 with the current balance and minimum required credits.

List phone numbers available for assignment

Retrieve phone numbers that are available for assignment to the assistant, including unassigned numbers and numbers already assigned to this assistant.

Endpoint

GET /api/assistants/{assistantId}/telephony/assign-phone-numbers

Path parameters

Query parameters

query
accountSlugstring

Account slug for workspace resolution.

Response fields

successboolean
Required

Returns true when the request succeeds.

numbersarray
Required

Phone numbers available for assignment, including unassigned numbers and those already assigned to this assistant.

List compliance templates

Retrieve compliance templates available for the assistant's telephony configuration.

Endpoint

GET /api/assistants/{assistantId}/telephony/compliance-templates

Path parameters

Response fields

successboolean
Required

Returns true when the request succeeds.

templatesarray
Required

Compliance templates available for the assistant's account.

Generate or refresh a test link for an assistant. The test link provides a URL that opens a browser-based test call with the assistant.

Endpoint

POST /api/assistants/{assistantId}/test-link

Path parameters

Response fields

successboolean
Required

Returns true when the test link is created or refreshed.

tokenstring
Required

The test link token.

linkstring
Required

The full test link URL.

CRM group assignment

Assign a CRM group to an assistant. The CRM group determines which contacts the assistant can access during calls. The group must belong to the same account as the assistant.

Endpoint

POST /api/assistants/{assistantId}/crm-group

Path parameters

Body parameters

body
accountSlugstring
Required

Account slug for workspace resolution.

body
groupIdstring
Required

UUID of the CRM group to assign. The group must belong to the same account.

Response fields

successboolean
Required

Returns true when the CRM group is assigned successfully.

assistantobject
Required

Updated assistant record including id and group_id.

warningstring

Returned when the database assignment succeeds but LiveKit resynchronization fails. The assignment is still saved.

Webhook testing

Send a test webhook event to verify that the assistant's webhook configuration is working. The endpoint generates a synthetic call.ended event and queues it for delivery. It does not make a real call or synchronously invoke the webhook.

The assistant must have webhooks enabled with both a URL and secret configured before testing.

Endpoint

POST /api/assistants/{assistantId}/webhooks/test

Path parameters

Response fields

successboolean
Required

Returns true when the test event is queued.

delivery_idstring
Required

UUID of the queued webhook delivery.

messagestring
Required

Confirmation message. Value is Test event queued.

Prompt version history

Track and restore previous versions of an assistant's system prompt. Each time the prompt changes, Talkturo saves a versioned snapshot. Use these endpoints to browse the history, save a new version, restore an old prompt, or delete a version you no longer need.

All prompt-version endpoints use withApiAuth and support both API key and session cookie authentication. API-key requests use the account bound to the key. Session-token requests require accountSlug in the query string. Cookie-session requests require teamId or accountSlug in the query string or request body.

MethodPathPurpose
GET/api/assistants/{assistantId}/prompt-versionsList prompt versions
POST/api/assistants/{assistantId}/prompt-versionsSave the current prompt as a new version
DELETE/api/assistants/{assistantId}/prompt-versions/{versionId}Delete a prompt version
POST/api/assistants/{assistantId}/prompt-versions/{versionId}/restoreRestore a previous prompt version

List prompt versions

Retrieve a paginated list of prompt versions, newest first.

Endpoint

GET /api/assistants/{assistantId}/prompt-versions

Path parameters

Query parameters

query
limitinteger

Maximum number of versions to return. Clamped to the range 1 through 50. Defaults to 10.

query
beforeinteger

Return versions with a version number less than this value. Use this for cursor-based pagination.

query
accountSlugstring

Account slug. Required for bearer session-token authentication.

query
teamIdstring

Team ID. Required for cookie-session authentication when accountSlug is not provided.

Response fields

versionsarray
Required

Prompt versions, newest first. Each version includes id, assistant_id, version, system_prompt, created_by, created_at, last_used_at, and author_name.

current_version_idstring
Required

UUID of the currently active prompt version, or null when no version is active.

has_moreboolean
Required

Indicates whether more versions are available beyond the current page.

Save a prompt version

Save the assistant's current system prompt as a new version. If the prompt has not changed since the last version, the endpoint returns unchanged: true and does not create a new version.

Endpoint

POST /api/assistants/{assistantId}/prompt-versions

Body parameters

body
system_promptstring

The prompt to save. If omitted, the assistant's current system_prompt is snapshotted.

Response fields

successboolean
Required

Returns true when the version is saved.

unchangedboolean

Returns true when the prompt matches the current version and no new version was created.

versionobject
Required

The saved or current prompt version, including id, assistant_id, version, and system_prompt.

An empty prompt cannot be saved as a version. The endpoint returns 400 with the error Cannot save an empty AI Script as a version.

Delete a prompt version

Delete a prompt version by ID. The currently active version cannot be deleted.

Endpoint

DELETE /api/assistants/{assistantId}/prompt-versions/{versionId}

Path parameters

path
versionIdstring
Required

The prompt version UUID to delete.

Response fields

successboolean
Required

Returns true when the version is deleted.

Deleting the currently active version returns 409 with the error Cannot delete the version the assistant is using.

Restore a prompt version

Restore a previous prompt version by copying its system_prompt onto the assistant. This updates the assistant's current prompt and version pointer but does not create a new version.

Endpoint

POST /api/assistants/{assistantId}/prompt-versions/{versionId}/restore

Path parameters

path
versionIdstring
Required

The prompt version UUID to restore.

Response fields

successboolean
Required

Returns true when the prompt is restored.

system_promptstring
Required

The restored system prompt text.

current_version_idstring
Required

UUID of the restored version, now the active version.

current_versioninteger
Required

Version number of the restored version.

Workflow tool attachment

Attach a published TurboFlow workflow to an assistant as a callable tool. The assistant can invoke the workflow during calls. The workflow's name, description, and parameters are resolved from the published flow version at call time.

Endpoint

POST /api/assistants/{assistantId}/tools/workflow

Path parameters

Body parameters

body
flow_idstring
Required

UUID of the published workflow to attach.

Response fields

configobject
Required

The inserted assistant_tool_configs row including id, assistant_id, account_id, tool_type (set to workflow), config (containing flow_id), and is_enabled.

Attaching the same workflow twice to the same assistant returns HTTP 409 with error workflow_already_attached.

Detach a workflow tool

Remove a workflow tool from an assistant by configuration ID.

Endpoint

DELETE /api/assistants/{assistantId}/tools/workflow?config_id={configId}

Query parameters

query
config_idstring
Required

The tool configuration UUID to remove.

Response fields

okboolean
Required

Returns true when the workflow tool is detached.

Common response shape

All mutation endpoints on this page return a top-level success field. Depending on the operation, the response also includes either an assistant object or a message.

Success fields

successboolean
Required

Indicates whether the request completed successfully.

assistantobject

Returned by the create, update, and clone endpoints.

messagestring

Returned by the delete endpoint.

Endpoint summary

MethodPathPurpose
POST/api/assistantsCreate an assistant
PATCH/api/assistants/{assistantId}Update an assistant
DELETE/api/assistants/{assistantId}Delete an assistant
POST/api/assistants/{assistantId}/cloneClone an assistant
GET/api/assistants/{assistantId}/usage-statsRetrieve usage statistics
GET/api/assistants/{assistantId}/tool-configsList tool configurations
GET/api/assistants/{assistantId}/tool-configs/{toolType}Get a specific tool configuration
POST/api/assistants/{assistantId}/tool-configs/{toolType}Create or update a tool configuration
DELETE/api/assistants/{assistantId}/tool-configs/{toolType}Delete tool configuration(s)
GET/api/assistants/{assistantId}/billing/estimateEstimate credits per minute
GET/api/assistants/{assistantId}/knowledge-baseList attached knowledge-base files
POST/api/assistants/{assistantId}/knowledge-baseAttach a knowledge-base file
DELETE/api/assistants/{assistantId}/knowledge-base/{fileId}Detach a knowledge-base file
GET/api/assistants/{assistantId}/telephony/phone-numbersList assigned phone numbers
PATCH/api/assistants/{assistantId}/telephony/phone-numbersAssign phone numbers
POST/api/assistants/{assistantId}/telephony/inboundEnable or disable inbound calling
POST/api/assistants/{assistantId}/telephony/outboundEnable or disable outbound calling
POST/api/assistants/{assistantId}/telephony/settingsUpdate telephony settings
POST/api/assistants/{assistantId}/telephony/test-callStart a test call
GET/api/assistants/{assistantId}/telephony/assign-phone-numbersList phone numbers available for assignment
GET/api/assistants/{assistantId}/telephony/compliance-templatesList compliance templates
POST/api/assistants/{assistantId}/test-linkCreate or refresh a test link
POST/api/assistants/{assistantId}/crm-groupAssign a CRM group
POST/api/assistants/{assistantId}/webhooks/testQueue a test webhook event
GET/api/assistants/{assistantId}/prompt-versionsList prompt versions
POST/api/assistants/{assistantId}/prompt-versionsSave a prompt version
DELETE/api/assistants/{assistantId}/prompt-versions/{versionId}Delete a prompt version
POST/api/assistants/{assistantId}/prompt-versions/{versionId}/restoreRestore a prompt version
POST/api/assistants/{assistantId}/tools/workflowAttach a workflow tool
DELETE/api/assistants/{assistantId}/tools/workflowDetach a workflow tool