ResourcesPublic API

Public API

Build public Talkturo calling experiences with AI employee demos, outbound calls, embedded forms, and browser-ready call tokens.

curl -X POST "https://app.talkturo.com/api/public/ai-employee/create" \
  -H "Content-Type: application/json" \
  -H "Origin: https://www.acme-demo-site.com" \
  -d '{
    "website_url": "https://www.acmeexample.com",
    "business_description": "Acme Example provides managed IT support for growing professional services firms.",
    "company_name": "Acme Example",
    "language": "en",
    "use_case": "lead_qualification",
    "first_name": "Jordan",
    "last_name": "Lee",
    "turnstile_token": "turnstile_example_token_7f3a91",
    "fbc": "fb.1.1712345678901.AbCdEfGh",
    "fbp": "fb.1.1712345678901.123456789",
    "fbclid": "IwAR_example_click_id"
  }'
{
  "draft_token": "draft_example_8f4c2a91b7d6",
  "assistant_name": "Jordan",
  "company_name": "Acme Example",
  "business_summary": "Managed IT support for growing professional services firms.",
  "first_message": "Hi, I am Jordan from Acme Example. How can I help?",
  "source": "website",
  "language": "en",
  "voice_name": "alloy"
}
curl -X POST "https://app.talkturo.com/api/public/ai-employee/upload" \
  -H "Origin: https://www.acme-demo-site.com" \
  -F "draft_token=draft_example_8f4c2a91b7d6" \
  -F "file=@acme-services.txt"
{
  "success": true,
  "used_in_demo": true
}
curl -X POST "https://app.talkturo.com/api/public/ai-employee/call-token" \
  -H "Content-Type: application/json" \
  -H "Origin: https://www.acme-demo-site.com" \
  -d '{
    "draft_token": "draft_example_8f4c2a91b7d6"
  }'
{
  "token": "call_token_example_5c91",
  "wsUrl": "wss://voice.talkturo.com",
  "roomName": "public-demo-room-73e9",
  "identity": "visitor-73e9",
  "agentName": "Jordan",
  "max_duration_seconds": 180,
  "calls_remaining": 2
}
curl "https://app.talkturo.com/api/public/ai-employee/use-cases" \
  -H "Origin: https://www.acme-demo-site.com"
{
  "use_cases": [
    {
      "key": "lead_qualification",
      "label_en": "Lead qualification",
      "label_de": "Lead-Qualifizierung",
      "language": "en"
    }
  ]
}
curl "https://app.talkturo.com/api/public/demo-assistants" \
  -H "Origin: https://www.acme-demo-site.com"
{
  "assistants": [
    {
      "id": "a7d2c8b1-45f6-4e91-9a23-6c7d8b2e1f04",
      "name": "Maya",
      "description": "Answers questions about customer onboarding.",
      "display_order": 1,
      "icon": "headset",
      "max_call_duration_seconds": 120,
      "outbound_enabled": true
    }
  ]
}
curl -X POST "https://app.talkturo.com/api/public/test-call/token" \
  -H "Content-Type: application/json" \
  -H "Origin: https://www.acme-demo-site.com" \
  -d '{
    "assistant_id": "a7d2c8b1-45f6-4e91-9a23-6c7d8b2e1f04",
    "turnstile_token": "turnstile_example_token_9b21d4",
    "visitor_name": "Jordan Lee"
  }'
{
  "token": "call_token_example_7a31",
  "wsUrl": "wss://voice.talkturo.com",
  "roomName": "public-test-room-91bd",
  "identity": "visitor-91bd",
  "agentName": "Maya",
  "max_duration_seconds": 120
}
curl -X POST "https://app.talkturo.com/api/public/test-call/outbound" \
  -H "Content-Type: application/json" \
  -H "Origin: https://www.acme-demo-site.com" \
  -d '{
    "assistant_id": "a7d2c8b1-45f6-4e91-9a23-6c7d8b2e1f04",
    "to_number": "+14155550184",
    "turnstile_token": "turnstile_example_token_2c84f1",
    "consent_given": true,
    "visitor_name": "Jordan Lee",
    "visitor_email": "jordan.lee@acmeexample.com"
  }'
{
  "success": true,
  "roomName": "outbound-demo-room-4e82",
  "sipCallId": "CA8f2d9c1e4b7a6f3d0e",
  "max_duration_seconds": 120,
  "to_number": "+14155550184"
}
curl -X POST "https://app.talkturo.com/api/public/form-call/outbound" \
  -H "Content-Type: application/json" \
  -H "Origin: https://www.acme-demo-site.com" \
  -d '{
    "assistant_id": "a7d2c8b1-45f6-4e91-9a23-6c7d8b2e1f04",
    "account_id": "b8e3d9c2-56a7-4f02-ab34-7d8e9c3f2a15",
    "account_slug": "acme-example",
    "company_id": "c9f4e0d3-67b8-4a13-bc45-8e9f0d4b3a26",
    "to_number": "+14155550184",
    "visitor_name": "Jordan Lee",
    "consent_given": true
  }'
{
  "success": true,
  "roomName": "form-call-room-6f24",
  "sipCallId": "CA9e3f0a2b5c8d7e4f1a",
  "to_number": "+14155550184"
}

Build public calling experiences

Use Talkturo's public endpoints to create AI employee drafts, upload business documents, start browser-based demo calls, and place consented outbound calls from websites and embedded forms.

All endpoints use https://app.talkturo.com and do not require a session, JWT, or API key. Talkturo validates the request Origin header with CORS rules. Some endpoints also require a Turnstile CAPTCHA token.

Every public endpoint requires a valid CORS origin. Requests from unapproved origins fail even when the request body and CAPTCHA token are valid. Endpoints that require CAPTCHA must receive a valid turnstile_token.

Endpoint summary

MethodPathPurposeAuthentication
POST/api/public/ai-employee/createCreate an AI employee draft from business detailsTurnstile CAPTCHA
POST/api/public/ai-employee/uploadAdd a reference document to an AI employee draftdraft_token
POST/api/public/ai-employee/call-tokenCreate a browser call token for an AI employee draftdraft_token
GET/api/public/ai-employee/use-casesList available AI employee use casesNone
GET/api/public/demo-assistantsList assistants available for public demosNone
POST/api/public/test-call/tokenCreate a browser call token for a demo assistantTurnstile CAPTCHA
POST/api/public/test-call/outboundStart a consented outbound demo callTurnstile CAPTCHA
POST/api/public/form-call/outboundStart an outbound call from an embedded formNone

The draft_token returned by the AI employee creation endpoint authorizes the upload and call-token endpoints for that draft. Treat it as a short-lived public demo credential and do not expose it in server logs.

AI employee creation

Create an AI employee draft

Create a draft AI employee from a website URL, business description, or both. The endpoint generates the draft identity and returns a draft_token for subsequent upload and browser-call requests.

The endpoint accepts unauthenticated requests, but requires a valid Turnstile token and applies per-IP and global rate limits:

  • 10 requests per hour per IP
  • 30 requests per day per IP
  • 200 requests per day globally

Body parameters

body
website_urlstring

Website URL used to derive business context. The field is conditionally required when business_description is not provided.

body
business_descriptionstring

Description of the business and the information the AI employee should use. The field is conditionally required when website_url is not provided.

body
company_namestring

Company name shown in the generated draft.

body
languagestring

Language for the generated AI employee. Defaults to de.

Allowed values:deen
body
use_casestring

Use case selected for the AI employee.

body
first_namestring

First name used for the generated AI employee.

body
last_namestring

Last name associated with the draft request.

body
turnstile_tokenstring
Required

Cloudflare Turnstile token for CAPTCHA verification.

body
fbcstring

Optional Facebook click identifier.

body
fbpstring

Optional Facebook browser identifier.

body
fbclidstring

Optional Facebook click identifier from the landing-page URL.

Response fields

draft_tokenstring
Required

Token used to authorize uploads and call-token requests for this draft.

assistant_namestring
Required

Name generated for the AI employee.

company_namestring
Required

Company name used by the generated draft.

business_summarystring
Required

Generated summary of the business.

first_messagestring
Required

Opening message the AI employee uses when the call starts.

sourcestring
Required

Source used to create the draft, such as website content or a supplied description.

languagestring
Required

Language selected for the draft.

voice_namestring
Required

Voice assigned to the AI employee.

Upload a reference document

Attach a business document to an existing AI employee draft. Use multipart/form-data with the draft_token and a supported file.

The endpoint accepts PDF, DOC, DOCX, TXT, and MD files up to 10 MB. It allows 20 requests per hour per IP.

Form fields

body
draft_tokenstring
Required

Token returned by the create endpoint.

body
filefile
Required

Reference document in PDF, DOC, DOCX, TXT, or MD format. The maximum file size is 10 MB.

Response fields

successboolean
Required

Indicates whether the upload completed successfully.

used_in_demoboolean
Required

Indicates whether the uploaded content is available in the demo. The value is true for TXT and MD files and false for PDF and Word files.

Create an AI employee call token

Create the browser call credentials for an AI employee draft. Use the returned token and room details with your browser calling client.

The endpoint allows 30 requests per hour and 100 requests per day per IP, with a global limit of 500 requests per day.

Body parameters

body
draft_tokenstring
Required

Token returned by the create endpoint.

Response fields

tokenstring
Required

Short-lived token used to join the browser call.

wsUrlstring
Required

WebSocket URL for the calling provider.

roomNamestring
Required

Room assigned to the call.

identitystring
Required

Visitor identity assigned to the call.

agentNamestring
Required

Name of the AI employee in the draft.

max_duration_secondsinteger
Required

Maximum call duration. The AI employee demo limit is 180 seconds.

calls_remaininginteger
Required

Number of calls remaining for the draft.

AI employee metadata

List AI employee use cases

Return the use cases available when creating an AI employee. This endpoint requires no authentication and is not rate limited.

Response fields

use_casesarray
Required

Available AI employee use cases.

use_cases[].keystring
Required

Stable identifier to send as the use_case value when creating a draft.

use_cases[].label_enstring
Required

English display label.

use_cases[].label_destring
Required

German display label.

use_cases[].languagestring
Required

Language associated with the use case.

Demo assistants

List demo assistants

Return the assistants available for public demo calls. This endpoint requires no authentication and allows 60 requests per minute per IP.

Response fields

assistantsarray
Required

Assistants configured for public demos.

assistants[].idstring
Required

Assistant UUID used in demo call and outbound call requests.

assistants[].namestring
Required

Assistant display name.

assistants[].descriptionstring
Required

Description shown to visitors.

assistants[].display_orderinteger
Required

Display order for the assistant list.

assistants[].iconstring
Required

Icon identifier for the assistant.

assistants[].max_call_duration_secondsinteger
Required

Maximum duration configured for the assistant.

assistants[].outbound_enabledboolean
Required

Whether the assistant can place outbound calls.

Create a demo call token

Create browser call credentials for a public demo assistant. This endpoint requires a valid Turnstile token and allows 30 requests per hour and 100 requests per day per IP.

Body parameters

body
assistant_idstring
Required

UUID of the demo assistant.

body
turnstile_tokenstring
Required

Cloudflare Turnstile token for CAPTCHA verification.

body
visitor_namestring

Name associated with the visitor's demo call.

Response fields

tokenstring
Required

Short-lived token used to join the browser call.

wsUrlstring
Required

WebSocket URL for the calling provider.

roomNamestring
Required

Room assigned to the call.

identitystring
Required

Visitor identity assigned to the call.

agentNamestring
Required

Demo assistant name.

max_duration_secondsinteger
Required

Maximum demo call duration, which is 120 seconds.

Start a demo outbound call

Start a consented outbound call to a visitor's phone number. The number must use E.164 format. A country allowlist may restrict which destinations are permitted.

This endpoint requires Turnstile CAPTCHA and applies these limits:

  • 10 requests per hour per IP
  • 30 requests per day per IP
  • 3 requests per phone number every 6 hours

Body parameters

body
assistant_idstring
Required

UUID of the demo assistant.

body
to_numberstring
Required

Destination phone number in E.164 format.

body
turnstile_tokenstring
Required

Cloudflare Turnstile token for CAPTCHA verification.

body
visitor_namestring

Name associated with the visitor.

body
visitor_emailstring

Email address associated with the visitor.

Response fields

successboolean
Required

Indicates whether the outbound call was started.

roomNamestring
Required

Room assigned to the outbound call.

sipCallIdstring
Required

Telephony provider call identifier.

max_duration_secondsinteger
Required

Maximum outbound demo call duration, which is 120 seconds.

to_numberstring
Required

Normalized destination phone number.

Embedded form calls

Start an outbound form call

Start an outbound call from an embedded form without CAPTCHA. The form must provide the assistant, workspace context, destination number, and explicit consent.

The endpoint accepts E.164 phone numbers and applies these limits:

  • 50 requests per hour per IP
  • 200 requests per day per IP
  • 50 requests per hour per phone number

Body parameters

body
assistant_idstring
Required

UUID of the assistant that handles the call.

body
account_idstring
Required

Workspace UUID associated with the assistant.

body
account_slugstring

Workspace slug used to identify the account.

body
company_idstring

Company UUID included for compatibility. The endpoint ignores this field.

body
to_numberstring
Required

Destination phone number in E.164 format.

body
visitor_namestring

Name provided by the visitor.

Response fields

successboolean
Required

Indicates whether the outbound call was started.

roomNamestring
Required

Room assigned to the outbound call.

sipCallIdstring
Required

Telephony provider call identifier.

to_numberstring
Required

Normalized destination phone number.