{
"error": "Bad Request. {'delivery.api.url': 'URL must use HTTPS'}"
}
{
"message": "Invalid access token"
}
{
"error": "Bad Request. A tool with this name already exists"
}
Tools
Create Tool
Create a standalone tool that can be attached to one or more PALs via Attach Tools To PAL.
In-call tools (trigger_type: in_call, default) are invoked during the conversation by an LLM (origin: llm) or a perception model (origin: vision / origin: screen / origin: audio).
Post-call actions (trigger_type: post_call) run once after the conversation ends; omit origin and set delivery.api (HTTPS webhook). See Post-Call Actions.
Every tool dispatches via exactly one delivery channel:
delivery.app_message: true (default) - calls land on your frontend as a conversation.tool_call event over the Daily data channel.
delivery.api - Tavus makes an HTTPS request to a URL you configure. Supports five auth types and {placeholder} templating in the URL path, query string, and body.
Function name the LLM uses to call the tool. Must match OpenAI function-naming rules (letters, digits, underscores; must start with a letter or underscore; max 64 characters) and be unique within your account.
Natural-language description used by the LLM to decide when to call the tool. description plus the serialized parameters together must be at most 10000 characters.
JSON Schema describing the tool's arguments. Follows the standard OpenAI function-calling shape. Property names starting with tavus_ are reserved for Tavus-injected placeholders and are rejected.
When the tool runs. in_call (default) offers the tool during the live conversation. post_call runs once after the conversation ends; omit origin and set delivery.api (HTTPS webhook). See Post-Call Actions.
Live modality for in-call tools only. Defaults to llm. Use screen for Raven-2 shared-screen tools; the PAL must use raven-2 before attaching a screen tool. Must be omitted or null for post_call tools.
What the PAL does while the tool call is in flight. generate_filler (default for llm tools) lets the LLM speak a contextual filler line. static_filler plays the static_filler string verbatim. silent says nothing. passthrough skips filler entirely. Must be null for perception tools.
what the PAL does after the tool returns. generate_response re-prompts the LLM with the result so it can answer naturally. response_in_result speaks the response text returned by your endpoint verbatim. add_to_context silently adds the result to conversation context. fire_and_forget ignores the result. Perception tools must use fire_and_forget.
ISO 8601 timestamp of when the tool was last updated.
Example:
"2026-05-15T10:30:00"
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tavus","colors":{"primary":"#FA3862","light":"#FA3862","dark":"#FA3862"},"logo":{"light":"https://mintcdn.com/tavus/mlBBb4gkXXhWTLQi/logo/light_logo.png?fit=max\u0026auto=format\u0026n=mlBBb4gkXXhWTLQi\u0026q=85\u0026s=892e020f9d0afc49e64011dcae9d3dd6","dark":"https://mintcdn.com/tavus/mlBBb4gkXXhWTLQi/logo/dark_logo.png?fit=max\u0026auto=format\u0026n=mlBBb4gkXXhWTLQi\u0026q=85\u0026s=1268f09533ab55791e8ef8200d4a669f"},"favicon":{"light":"https://mintcdn.com/tavus/yC-TYEqHye998xbI/favicon_light.png?fit=max\u0026auto=format\u0026n=yC-TYEqHye998xbI\u0026q=85\u0026s=25642e844d8f4aaad82e6cb0d0cf44c3","dark":"https://mintcdn.com/tavus/yC-TYEqHye998xbI/favicon_dark.png?fit=max\u0026auto=format\u0026n=yC-TYEqHye998xbI\u0026q=85\u0026s=42861da3c81323c222cd6182eee43175"},"api":{"openapi":"openapi.yaml"},"navbar":{"links":[{"href":"https://discord.gg/5Y9Er6WNN5","label":"Community"},{"href":"https://status.tavus.io","label":"Status"},{"href":"mailto:support@tavus.io","label":"Get Support"}],"primary":{"type":"button","label":"Get Started","href":"https://maker.tavus.io/auth/sign-up?is_developer=true"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/tavus-io","discord":"https://discord.gg/5Y9Er6WNN5"}},"integrations":{"ga4":{"measurementId":"G-SBQHZWT4FS"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor","mcp"],"display":"header"},"interaction":{"drilldown":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tavus","hasAudioNarration":false,"actualSubdomain":"tavus","customDomains":["docs.tavus.io"],"gitSource":{"type":"github","owner":"tavus-engineering","repo":"platform-api-developer-documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adfcebc079defb6ba2651e0","collectionId":"e2b7256f-eec1-438b-bc2f-c9221b7d9482","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adfcebc079defb6ba2651e0"},"feedback":{"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6adfd0291566672272eb6925","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"CVI","count":136},{"language":"default","tag":"API","count":93},{"language":"default","tag":"Build","count":91},{"language":"default","tag":"Skills","count":27},{"language":"default","tag":"Deploy","count":23},{"language":"default","tag":"Face","count":20},{"language":"default","tag":"Interaction Events","count":20},{"language":"default","tag":"Magic Canvas","count":17},{"language":"default","tag":"Deployments","count":16},{"language":"default","tag":"Tools","count":14}]},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/tools/create-tool","slug":"/api-reference/tools/create-tool","pageMetadata":{"openapi":"post /v2/tools","title":"Create Tool","description":"Create a standalone tool that can be attached to one or more PALs via [Attach Tools To PAL](/api-reference/pal-tools/attach-tools-to-pal).\n\n**In-call tools** (`trigger_type: in_call`, default) are invoked during the conversation by an LLM (`origin: llm`) or a perception model (`origin: vision` / `origin: screen` / `origin: audio`).\n\n**Post-call actions** (`trigger_type: post_call`) run once after the conversation ends; omit `origin` and set `delivery.api` (HTTPS webhook). See [Post-Call Actions](/sections/conversational-video-interface/pal/post-call-tool).\n\nEvery tool dispatches via **exactly one** delivery channel:\n\n- `delivery.app_message: true` (default) - calls land on your frontend as a `conversation.tool_call` event over the Daily data channel.\n- `delivery.api` - Tavus makes an HTTPS request to a URL you configure. Supports five auth types and `{placeholder}` templating in the URL path, query string, and body.\n\nSee [Tools Overview](/sections/conversational-video-interface/pal/tools), [LLM Tool Delivery](/sections/conversational-video-interface/pal/llm-tool-delivery), and [LLM Tool Auth](/sections/conversational-video-interface/pal/llm-tool-auth) for the conceptual model.\n","href":"/api-reference/tools/create-tool"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Create a standalone tool that can be attached to one or more PALs via \", _jsx(_components.a, {\n href: \"/api-reference/pal-tools/attach-tools-to-pal\",\n children: \"Attach Tools To PAL\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"In-call tools\"\n }), \" (\", _jsx(_components.code, {\n children: \"trigger_type: in_call\"\n }), \", default) are invoked during the conversation by an LLM (\", _jsx(_components.code, {\n children: \"origin: llm\"\n }), \") or a perception model (\", _jsx(_components.code, {\n children: \"origin: vision\"\n }), \" / \", _jsx(_components.code, {\n children: \"origin: screen\"\n }), \" / \", _jsx(_components.code, {\n children: \"origin: audio\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Post-call actions\"\n }), \" (\", _jsx(_components.code, {\n children: \"trigger_type: post_call\"\n }), \") run once after the conversation ends; omit \", _jsx(_components.code, {\n children: \"origin\"\n }), \" and set \", _jsx(_components.code, {\n children: \"delivery.api\"\n }), \" (HTTPS webhook). See \", _jsx(_components.a, {\n href: \"/sections/conversational-video-interface/pal/post-call-tool\",\n children: \"Post-Call Actions\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Every tool dispatches via \", _jsx(_components.strong, {\n children: \"exactly one\"\n }), \" delivery channel:\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"delivery.app_message: true\"\n }), \" (default) - calls land on your frontend as a \", _jsx(_components.code, {\n children: \"conversation.tool_call\"\n }), \" event over the Daily data channel.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"delivery.api\"\n }), \" - Tavus makes an HTTPS request to a URL you configure. Supports five auth types and \", _jsx(_components.code, {\n children: \"{placeholder}\"\n }), \" templating in the URL path, query string, and body.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"See \", _jsx(_components.a, {\n href: \"/sections/conversational-video-interface/pal/tools\",\n children: \"Tools Overview\"\n }), \", \", _jsx(_components.a, {\n href: \"/sections/conversational-video-interface/pal/llm-tool-delivery\",\n children: \"LLM Tool Delivery\"\n }), \", and \", _jsx(_components.a, {\n href: \"/sections/conversational-video-interface/pal/llm-tool-auth\",\n children: \"LLM Tool Auth\"\n }), \" for the conceptual model.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"post /v2/tools","title":"Create Tool","description":"Create a standalone tool that can be attached to one or more PALs via [Attach Tools To PAL](/api-reference/pal-tools/attach-tools-to-pal).\n\n**In-call tools** (`trigger_type: in_call`, default) are invoked during the conversation by an LLM (`origin: llm`) or a perception model (`origin: vision` / `origin: screen` / `origin: audio`).\n\n**Post-call actions** (`trigger_type: post_call`) run once after the conversation ends; omit `origin` and set `delivery.api` (HTTPS webhook). See [Post-Call Actions](/sections/conversational-video-interface/pal/post-call-tool).\n\nEvery tool dispatches via **exactly one** delivery channel:\n\n- `delivery.app_message: true` (default) - calls land on your frontend as a `conversation.tool_call` event over the Daily data channel.\n- `delivery.api` - Tavus makes an HTTPS request to a URL you configure. Supports five auth types and `{placeholder}` templating in the URL path, query string, and body.\n\nSee [Tools Overview](/sections/conversational-video-interface/pal/tools), [LLM Tool Delivery](/sections/conversational-video-interface/pal/llm-tool-delivery), and [LLM Tool Auth](/sections/conversational-video-interface/pal/llm-tool-auth) for the conceptual model.\n","href":"/api-reference/tools/create-tool"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Tools"],"summary":"Create Tool","description":"Create a standalone tool that can be attached to one or more PALs via [Attach Tools To PAL](/api-reference/pal-tools/attach-tools-to-pal).\n\n**In-call tools** (`trigger_type: in_call`, default) are invoked during the conversation by an LLM (`origin: llm`) or a perception model (`origin: vision` / `origin: screen` / `origin: audio`).\n\n**Post-call actions** (`trigger_type: post_call`) run once after the conversation ends; omit `origin` and set `delivery.api` (HTTPS webhook). See [Post-Call Actions](/sections/conversational-video-interface/pal/post-call-tool).\n\nEvery tool dispatches via **exactly one** delivery channel:\n\n- `delivery.app_message: true` (default) - calls land on your frontend as a `conversation.tool_call` event over the Daily data channel.\n- `delivery.api` - Tavus makes an HTTPS request to a URL you configure. Supports five auth types and `{placeholder}` templating in the URL path, query string, and body.\n\nSee [Tools Overview](/sections/conversational-video-interface/pal/tools), [LLM Tool Delivery](/sections/conversational-video-interface/pal/llm-tool-delivery), and [LLM Tool Auth](/sections/conversational-video-interface/pal/llm-tool-auth) for the conceptual model.\n","operationId":"createTool","requestBody":"6982901f-5ab1-4256-b516-3287e854d72d","responses":{"200":"168136f8-afe8-49a7-b6a1-2b76647880b6","400":"c0865375-d840-4e8c-ad05-0bd88ce63f8d","401":"d6d3f355-e74b-428a-aa67-46fba21d4ad5","409":"a5ff472a-9f20-4325-a813-2f5778170b27"},"security":["4652fb65-91fe-449a-87a1-030798c3835b"],"method":"post","type":"path","servers":["c386d2b5-906d-4114-93ca-1c9d54510a00"],"path":"/v2/tools","baseUrlOptions":["https://tavusapi.com"],"title":"Create Tool","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["name","description"],"properties":{"name":{"type":"string","description":"Function name the LLM uses to call the tool. Must match OpenAI function-naming rules (letters, digits, underscores; must start with a letter or underscore; max 64 characters) and be unique within your account.","example":"get_weather","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"description":{"type":"string","description":"Natural-language description used by the LLM to decide when to call the tool. `description` plus the serialized `parameters` together must be at most 10000 characters.","example":"Get the current weather for a city","isRequired":true,"uniqueKey":"description","typeLabel":"string"},"parameters":{"type":"object","description":"JSON Schema describing the tool's arguments. Follows the standard OpenAI function-calling shape. Property names starting with `tavus_` are reserved for Tavus-injected placeholders and are rejected.","default":{},"example":{"type":"object","properties":{"city":{"type":"string","description":"City name"}},"required":["city"]},"uniqueKey":"parameters","typeLabel":"object"},"delivery":{"type":"object","description":"How the tool call is dispatched. Exactly one channel must be enabled:\n\n- `app_message: true` alone - the call is delivered to your frontend over the Daily data channel as a `conversation.tool_call` event.\n- `api` set with `app_message: false` - Tavus makes an HTTPS request to `api.url`.\n\nIf `delivery` is omitted on create, the default is `{ \"app_message\": true }`.\n","properties":{"app_message":{"type":"boolean","default":true,"description":"Set to `true` to deliver tool calls to your frontend as `conversation.tool_call` events. Mutually exclusive with `api`.","uniqueKey":"delivery.app_message","typeLabel":"boolean"},"api":{"type":"object","required":["url"],"description":"HTTPS request configuration for tool calls delivered via API.","properties":{"url":{"type":"string","description":"HTTPS URL Tavus calls. Must use `https://`. Hostname must not point at private / loopback / link-local / metadata-server IP space and must not contain `{placeholder}` substitutions - placeholders are only resolved in the path, query string, and body.\n","example":"https://api.example.com/v1/weather/{city}","isRequired":true,"uniqueKey":"delivery.api.url","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","HEAD"],"default":"POST","description":"HTTP method. `GET`, `HEAD`, and `DELETE` reject `body_template`.","uniqueKey":"delivery.api.method","typeLabel":"enum\u003cstring>"},"timeout":{"type":"number","minimum":0,"exclusiveMinimum":true,"maximum":60,"default":10,"description":"Request timeout in seconds. Must be greater than 0 and at most 60. Default 10.","uniqueKey":"delivery.api.timeout","typeLabel":"number"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"delivery.api.headers.additionalProperties","typeLabel":"string"},"description":"Static HTTP headers sent with every request. Keys and values must be strings.","example":{"X-Service":"weather-bot"},"uniqueKey":"delivery.api.headers","typeLabel":"object"},"auth":{"type":"object","required":["type"],"description":"Outbound authentication for API delivery. The required fields depend on `type`:\n\n- `none` - no auth.\n- `bearer` - `token` is sent as `Authorization: Bearer \u003ctoken>`.\n- `basic` - `username` + `password` are encoded into `Authorization: Basic ...`.\n- `api_key` - `name` + `value` are sent as a header (`location: header`, default) or query parameter (`location: query`).\n- `hmac` - `secret` signs a fixed Tavus envelope body with HMAC-SHA256; the signature is sent in the `X-Tavus-Signature` header. HMAC mode ignores `body_template`, `query_params`, and URL placeholders.\n- `oauth2_client_credentials` - Tavus does a client-credentials exchange against `token_url` using `client_id` + `client_secret` (and optional `scope`) and uses the returned bearer token to call the tool URL.\n\nOn response, all secret fields (`token`, `password`, `value`, `secret`, `client_secret`) are scrubbed to `********`. Echoing that back on PATCH is rejected; omit the field instead to keep the stored secret.\n","properties":{"type":{"type":"string","enum":["none","bearer","basic","api_key","hmac","oauth2_client_credentials"],"description":"Auth strategy.","isRequired":true,"uniqueKey":"delivery.api.auth.type","typeLabel":"enum\u003cstring>"},"token":{"type":"string","description":"Bearer token. Required when `type=bearer`.","uniqueKey":"delivery.api.auth.token","typeLabel":"string"},"username":{"type":"string","description":"HTTP Basic username. Required when `type=basic`.","uniqueKey":"delivery.api.auth.username","typeLabel":"string"},"password":{"type":"string","description":"HTTP Basic password. Required when `type=basic`.","uniqueKey":"delivery.api.auth.password","typeLabel":"string"},"name":{"type":"string","description":"API key header / query parameter name. Required when `type=api_key`.","example":"X-API-Key","uniqueKey":"delivery.api.auth.name","typeLabel":"string"},"value":{"type":"string","description":"API key value. Required when `type=api_key`.","uniqueKey":"delivery.api.auth.value","typeLabel":"string"},"location":{"type":"string","enum":["header","query"],"default":"header","description":"Where the API key is sent. Used only when `type=api_key`.","uniqueKey":"delivery.api.auth.location","typeLabel":"enum\u003cstring>"},"secret":{"type":"string","description":"HMAC shared secret. Required when `type=hmac`.","uniqueKey":"delivery.api.auth.secret","typeLabel":"string"},"token_url":{"type":"string","description":"OAuth2 token endpoint. Must use HTTPS and pass the same SSRF rules as the tool URL. Required when `type=oauth2_client_credentials`.","example":"https://auth.example.com/oauth/token","uniqueKey":"delivery.api.auth.token_url","typeLabel":"string"},"client_id":{"type":"string","description":"OAuth2 client ID. Required when `type=oauth2_client_credentials`.","uniqueKey":"delivery.api.auth.client_id","typeLabel":"string"},"client_secret":{"type":"string","description":"OAuth2 client secret. Required when `type=oauth2_client_credentials`.","uniqueKey":"delivery.api.auth.client_secret","typeLabel":"string"},"scope":{"type":"string","description":"Optional OAuth2 scope string. Used only when `type=oauth2_client_credentials`.","uniqueKey":"delivery.api.auth.scope","typeLabel":"string"}},"uniqueKey":"delivery.api.auth","typeLabel":"object"},"body_template":{"type":"object","description":"Optional JSON object used as the request body. String values support `{placeholder}` substitutions referencing keys declared in the tool's `parameters.properties`. Rejected when `method` is `GET`, `HEAD`, or `DELETE`, and ignored when `auth.type` is `hmac` (which uses a fixed Tavus envelope).","uniqueKey":"delivery.api.body_template","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"delivery.api.query_params.additionalProperties","typeLabel":"string"},"description":"Static query parameters appended to the URL. Keys and values must be strings; values support `{placeholder}` substitutions. Ignored when `auth.type` is `hmac`.","example":{"units":"metric"},"uniqueKey":"delivery.api.query_params","typeLabel":"object"},"content_type":{"type":"string","description":"Override the request `Content-Type` header. Defaults to `application/json` when not set.","example":"application/json","uniqueKey":"delivery.api.content_type","typeLabel":"string"}},"uniqueKey":"delivery.api","typeLabel":"object"}},"uniqueKey":"delivery","typeLabel":"object"},"trigger_type":{"type":"string","enum":["in_call","post_call"],"default":"in_call","description":"When the tool runs. `in_call` (default) offers the tool during the live conversation. `post_call` runs once after the conversation ends; omit `origin` and set `delivery.api` (HTTPS webhook). See [Post-Call Actions](/sections/conversational-video-interface/pal/post-call-tool).","example":"in_call","uniqueKey":"trigger_type","typeLabel":"enum\u003cstring>"},"origin":{"oneOf":[{"type":"string","enum":["llm","vision","screen","audio"],"default":"llm","description":"Live modality for in-call tools only. Defaults to `llm`. Use `screen` for Raven-2 shared-screen tools; the PAL must use raven-2 before attaching a screen tool. Must be omitted or null for `post_call` tools.","example":"llm","uniqueKey":"origin.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["llm","vision","screen","audio"],"default":"llm","description":"Live modality for in-call tools only. Defaults to `llm`. Use `screen` for Raven-2 shared-screen tools; the PAL must use raven-2 before attaching a screen tool. Must be omitted or null for `post_call` tools.","example":"llm","uniqueKey":"origin.oneOf.1","typeLabel":"null"}],"uniqueKey":"origin","typeLabel":"enum\u003cstring> | null"},"on_call":{"oneOf":[{"type":"string","enum":["generate_filler","static_filler","silent","passthrough"],"default":"generate_filler","description":"What the PAL does **while** the tool call is in flight. `generate_filler` (default for `llm` tools) lets the LLM speak a contextual filler line. `static_filler` plays the `static_filler` string verbatim. `silent` says nothing. `passthrough` skips filler entirely. Must be null for perception tools.","example":"generate_filler","uniqueKey":"on_call.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["generate_filler","static_filler","silent","passthrough"],"default":"generate_filler","description":"What the PAL does **while** the tool call is in flight. `generate_filler` (default for `llm` tools) lets the LLM speak a contextual filler line. `static_filler` plays the `static_filler` string verbatim. `silent` says nothing. `passthrough` skips filler entirely. Must be null for perception tools.","example":"generate_filler","uniqueKey":"on_call.oneOf.1","typeLabel":"null"}],"uniqueKey":"on_call","typeLabel":"enum\u003cstring> | null"},"on_resolve":{"oneOf":[{"type":"string","enum":["generate_response","response_in_result","add_to_context","fire_and_forget"],"default":"fire_and_forget","description":"what the PAL does **after** the tool returns. `generate_response` re-prompts the LLM with the result so it can answer naturally. `response_in_result` speaks the response text returned by your endpoint verbatim. `add_to_context` silently adds the result to conversation context. `fire_and_forget` ignores the result. Perception tools must use `fire_and_forget`.","example":"generate_response","uniqueKey":"on_resolve.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["generate_response","response_in_result","add_to_context","fire_and_forget"],"default":"fire_and_forget","description":"what the PAL does **after** the tool returns. `generate_response` re-prompts the LLM with the result so it can answer naturally. `response_in_result` speaks the response text returned by your endpoint verbatim. `add_to_context` silently adds the result to conversation context. `fire_and_forget` ignores the result. Perception tools must use `fire_and_forget`.","example":"generate_response","uniqueKey":"on_resolve.oneOf.1","typeLabel":"null"}],"uniqueKey":"on_resolve","typeLabel":"enum\u003cstring> | null"},"static_filler":{"oneOf":[{"type":"string","description":"Phrase the PAL speaks while the tool call is in flight. Required when `on_call` is `static_filler`; must be null for perception tools.","example":"Sure, let me grab that for you.","uniqueKey":"static_filler.oneOf.0","typeLabel":"string"},{"type":"null","description":"Phrase the PAL speaks while the tool call is in flight. Required when `on_call` is `static_filler`; must be null for perception tools.","example":"Sure, let me grab that for you.","uniqueKey":"static_filler.oneOf.1","typeLabel":"null"}],"uniqueKey":"static_filler","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"get_weather","description":"Get the current weather for a city","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name"}},"required":["city"]},"delivery":{"app_message":true},"trigger_type":"in_call","origin":"llm","on_call":"generate_filler","on_resolve":"generate_response","static_filler":"Sure, let me grab that for you."}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"168136f8-afe8-49a7-b6a1-2b76647880b6":{"description":"Tool created","content":{"application/json":{"schema":{"type":"object","description":"A standalone tool definition. Returned by every tool endpoint and embedded in the `data` array of the PAL-tool endpoints.","properties":{"tool_id":{"type":"string","description":"Unique identifier for the tool. System tools use their `name` as the `tool_id` (e.g. `end_call`).","example":"tabc123def456","uniqueKey":"tool_id","typeLabel":"string"},"owner_id":{"oneOf":[{"type":"integer","description":"Internal user ID that owns the tool. `null` for built-in system tools.","example":3675,"uniqueKey":"owner_id.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Internal user ID that owns the tool. `null` for built-in system tools.","example":3675,"uniqueKey":"owner_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"owner_id","typeLabel":"integer | null"},"name":{"type":"string","description":"Function name the LLM uses to call the tool.","example":"get_weather","uniqueKey":"name","typeLabel":"string"},"description":{"type":"string","description":"Natural-language description of the tool.","example":"Get the current weather for a city","uniqueKey":"description","typeLabel":"string"},"parameters":{"type":"object","description":"JSON Schema describing the tool's arguments.","example":{"type":"object","properties":{"city":{"type":"string","description":"City name"}},"required":["city"]},"uniqueKey":"parameters","typeLabel":"object"},"delivery":{"type":"object","description":"How the tool call is dispatched. Exactly one channel must be enabled:\n\n- `app_message: true` alone - the call is delivered to your frontend over the Daily data channel as a `conversation.tool_call` event.\n- `api` set with `app_message: false` - Tavus makes an HTTPS request to `api.url`.\n\nIf `delivery` is omitted on create, the default is `{ \"app_message\": true }`.\n","properties":{"app_message":{"type":"boolean","default":true,"description":"Set to `true` to deliver tool calls to your frontend as `conversation.tool_call` events. Mutually exclusive with `api`.","uniqueKey":"delivery.app_message","typeLabel":"boolean"},"api":{"type":"object","required":["url"],"description":"HTTPS request configuration for tool calls delivered via API.","properties":{"url":{"type":"string","description":"HTTPS URL Tavus calls. Must use `https://`. Hostname must not point at private / loopback / link-local / metadata-server IP space and must not contain `{placeholder}` substitutions - placeholders are only resolved in the path, query string, and body.\n","example":"https://api.example.com/v1/weather/{city}","isRequired":true,"uniqueKey":"delivery.api.url","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","HEAD"],"default":"POST","description":"HTTP method. `GET`, `HEAD`, and `DELETE` reject `body_template`.","uniqueKey":"delivery.api.method","typeLabel":"enum\u003cstring>"},"timeout":{"type":"number","minimum":0,"exclusiveMinimum":true,"maximum":60,"default":10,"description":"Request timeout in seconds. Must be greater than 0 and at most 60. Default 10.","uniqueKey":"delivery.api.timeout","typeLabel":"number"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"delivery.api.headers.additionalProperties","typeLabel":"string"},"description":"Static HTTP headers sent with every request. Keys and values must be strings.","example":{"X-Service":"weather-bot"},"uniqueKey":"delivery.api.headers","typeLabel":"object"},"auth":{"type":"object","required":["type"],"description":"Outbound authentication for API delivery. The required fields depend on `type`:\n\n- `none` - no auth.\n- `bearer` - `token` is sent as `Authorization: Bearer \u003ctoken>`.\n- `basic` - `username` + `password` are encoded into `Authorization: Basic ...`.\n- `api_key` - `name` + `value` are sent as a header (`location: header`, default) or query parameter (`location: query`).\n- `hmac` - `secret` signs a fixed Tavus envelope body with HMAC-SHA256; the signature is sent in the `X-Tavus-Signature` header. HMAC mode ignores `body_template`, `query_params`, and URL placeholders.\n- `oauth2_client_credentials` - Tavus does a client-credentials exchange against `token_url` using `client_id` + `client_secret` (and optional `scope`) and uses the returned bearer token to call the tool URL.\n\nOn response, all secret fields (`token`, `password`, `value`, `secret`, `client_secret`) are scrubbed to `********`. Echoing that back on PATCH is rejected; omit the field instead to keep the stored secret.\n","properties":{"type":{"type":"string","enum":["none","bearer","basic","api_key","hmac","oauth2_client_credentials"],"description":"Auth strategy.","isRequired":true,"uniqueKey":"delivery.api.auth.type","typeLabel":"enum\u003cstring>"},"token":{"type":"string","description":"Bearer token. Required when `type=bearer`.","uniqueKey":"delivery.api.auth.token","typeLabel":"string"},"username":{"type":"string","description":"HTTP Basic username. Required when `type=basic`.","uniqueKey":"delivery.api.auth.username","typeLabel":"string"},"password":{"type":"string","description":"HTTP Basic password. Required when `type=basic`.","uniqueKey":"delivery.api.auth.password","typeLabel":"string"},"name":{"type":"string","description":"API key header / query parameter name. Required when `type=api_key`.","example":"X-API-Key","uniqueKey":"delivery.api.auth.name","typeLabel":"string"},"value":{"type":"string","description":"API key value. Required when `type=api_key`.","uniqueKey":"delivery.api.auth.value","typeLabel":"string"},"location":{"type":"string","enum":["header","query"],"default":"header","description":"Where the API key is sent. Used only when `type=api_key`.","uniqueKey":"delivery.api.auth.location","typeLabel":"enum\u003cstring>"},"secret":{"type":"string","description":"HMAC shared secret. Required when `type=hmac`.","uniqueKey":"delivery.api.auth.secret","typeLabel":"string"},"token_url":{"type":"string","description":"OAuth2 token endpoint. Must use HTTPS and pass the same SSRF rules as the tool URL. Required when `type=oauth2_client_credentials`.","example":"https://auth.example.com/oauth/token","uniqueKey":"delivery.api.auth.token_url","typeLabel":"string"},"client_id":{"type":"string","description":"OAuth2 client ID. Required when `type=oauth2_client_credentials`.","uniqueKey":"delivery.api.auth.client_id","typeLabel":"string"},"client_secret":{"type":"string","description":"OAuth2 client secret. Required when `type=oauth2_client_credentials`.","uniqueKey":"delivery.api.auth.client_secret","typeLabel":"string"},"scope":{"type":"string","description":"Optional OAuth2 scope string. Used only when `type=oauth2_client_credentials`.","uniqueKey":"delivery.api.auth.scope","typeLabel":"string"}},"uniqueKey":"delivery.api.auth","typeLabel":"object"},"body_template":{"type":"object","description":"Optional JSON object used as the request body. String values support `{placeholder}` substitutions referencing keys declared in the tool's `parameters.properties`. Rejected when `method` is `GET`, `HEAD`, or `DELETE`, and ignored when `auth.type` is `hmac` (which uses a fixed Tavus envelope).","uniqueKey":"delivery.api.body_template","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"delivery.api.query_params.additionalProperties","typeLabel":"string"},"description":"Static query parameters appended to the URL. Keys and values must be strings; values support `{placeholder}` substitutions. Ignored when `auth.type` is `hmac`.","example":{"units":"metric"},"uniqueKey":"delivery.api.query_params","typeLabel":"object"},"content_type":{"type":"string","description":"Override the request `Content-Type` header. Defaults to `application/json` when not set.","example":"application/json","uniqueKey":"delivery.api.content_type","typeLabel":"string"}},"uniqueKey":"delivery.api","typeLabel":"object"}},"uniqueKey":"delivery","typeLabel":"object"},"is_system_tool":{"type":"boolean","description":"Whether this is a built-in system tool. System tools cannot be modified or deleted.","example":false,"uniqueKey":"is_system_tool","typeLabel":"boolean"},"trigger_type":{"type":"string","enum":["in_call","post_call"],"description":"When the tool runs. `post_call` tools execute server-side after the conversation ends via `delivery.api` (HTTPS webhook).","example":"in_call","uniqueKey":"trigger_type","typeLabel":"enum\u003cstring>"},"origin":{"oneOf":[{"type":"string","enum":["llm","vision","screen","audio"],"description":"Live modality for in-call tools. `screen` identifies Raven-2 shared-screen tools. Null for post-call tools.","example":"llm","uniqueKey":"origin.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["llm","vision","screen","audio"],"description":"Live modality for in-call tools. `screen` identifies Raven-2 shared-screen tools. Null for post-call tools.","example":"llm","uniqueKey":"origin.oneOf.1","typeLabel":"null"}],"uniqueKey":"origin","typeLabel":"enum\u003cstring> | null"},"on_call":{"oneOf":[{"type":"string","enum":["generate_filler","static_filler","silent","passthrough"],"description":"What the PAL does while the tool call is in flight. Always null for perception tools.","example":"generate_filler","uniqueKey":"on_call.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["generate_filler","static_filler","silent","passthrough"],"description":"What the PAL does while the tool call is in flight. Always null for perception tools.","example":"generate_filler","uniqueKey":"on_call.oneOf.1","typeLabel":"null"}],"uniqueKey":"on_call","typeLabel":"enum\u003cstring> | null"},"on_resolve":{"oneOf":[{"type":"string","enum":["generate_response","response_in_result","add_to_context","fire_and_forget"],"description":"What the PAL does after the tool returns.","example":"generate_response","uniqueKey":"on_resolve.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["generate_response","response_in_result","add_to_context","fire_and_forget"],"description":"What the PAL does after the tool returns.","example":"generate_response","uniqueKey":"on_resolve.oneOf.1","typeLabel":"null"}],"uniqueKey":"on_resolve","typeLabel":"enum\u003cstring> | null"},"static_filler":{"oneOf":[{"type":"string","description":"Phrase the PAL speaks while the tool call is in flight. Set when `on_call` is `static_filler`.","example":"Sure, let me grab that for you.","uniqueKey":"static_filler.oneOf.0","typeLabel":"string"},{"type":"null","description":"Phrase the PAL speaks while the tool call is in flight. Set when `on_call` is `static_filler`.","example":"Sure, let me grab that for you.","uniqueKey":"static_filler.oneOf.1","typeLabel":"null"}],"uniqueKey":"static_filler","typeLabel":"string | null"},"created_at":{"type":"string","description":"ISO 8601 timestamp of when the tool was created.","example":"2026-05-15T10:30:00","uniqueKey":"created_at","typeLabel":"string"},"updated_at":{"type":"string","description":"ISO 8601 timestamp of when the tool was last updated.","example":"2026-05-15T10:30:00","uniqueKey":"updated_at","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"tool_id":"tabc123def456","owner_id":3675,"name":"get_weather","description":"Get the current weather for a city","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name"}},"required":["city"]},"delivery":{"app_message":true,"api":{"url":"https://api.example.com/v1/weather/{city}","method":"POST","timeout":10,"headers":{"X-Service":"weather-bot"},"auth":{"type":"none","token":"\u003cstring>","username":"\u003cstring>","password":"\u003cstring>","name":"X-API-Key","value":"\u003cstring>","location":"header","secret":"\u003cstring>","token_url":"https://auth.example.com/oauth/token","client_id":"\u003cstring>","client_secret":"\u003cstring>","scope":"\u003cstring>"},"body_template":{},"query_params":{"units":"metric"},"content_type":"application/json"}},"is_system_tool":false,"trigger_type":"in_call","origin":"llm","on_call":"generate_filler","on_resolve":"generate_response","static_filler":"Sure, let me grab that for you.","created_at":"2026-05-15T10:30:00","updated_at":"2026-05-15T10:30:00"}}},"exampleType":"generated"}},"exampleType":"generated"},"c0865375-d840-4e8c-ad05-0bd88ce63f8d":{"description":"Bad Request - validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request. {'delivery.api.url': 'URL must use HTTPS'}","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Bad Request. {'delivery.api.url': 'URL must use HTTPS'}"}}},"exampleType":"generated"}},"exampleType":"generated"},"d6d3f355-e74b-428a-aa67-46fba21d4ad5":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Invalid access token","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Invalid access token"}}},"exampleType":"generated"}},"exampleType":"generated"},"a5ff472a-9f20-4325-a813-2f5778170b27":{"description":"Conflict - a tool with this name already exists","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request. A tool with this name already exists","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Bad Request. A tool with this name already exists"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"4652fb65-91fe-449a-87a1-030798c3835b":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[],"schemeName":"apiKey"}}},"servers":{"c386d2b5-906d-4114-93ca-1c9d54510a00":{"url":"https://tavusapi.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[],"schemeName":"apiKey"},"schema":{"title":"x-api-key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"x-api-key"}],"title":"apiKey"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"tavus","siteName":"Tavus","title":"Create Tool - Tavus","contextualStarterQuestions":[{"_id":"6ad7ff5621016d2af5067381","deploymentId":"65baa7516ce8cd46ab1aa877","questionText":"How do I attach tools to PALs?","status":"active","generatedBy":"contextual","path":"api-reference/tools/create-tool","createdAt":"2026-10-20T23:55:02.788Z","updatedAt":"2026-10-20T23:55:02.788Z","__v":0},{"_id":"6ad7ff5621016d2af5067382","deploymentId":"65baa7516ce8cd46ab1aa877","questionText":"How do I set up tool delivery?","status":"active","generatedBy":"contextual","path":"api-reference/tools/create-tool","createdAt":"2026-10-20T23:55:02.788Z","updatedAt":"2026-10-20T23:55:02.788Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-20T23:54:53.228Z","originalFileLocation":"api-reference/tools/create-tool.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create a standalone tool that can be attached to one or more PALs via Attach Tools To PAL. In-call tools (trigger_type: in_call, default) are invoked during the conversation by an LLM (origin: llm) or a perception model (origin: vision / origin: screen / origin: audio). Post-call actions (trigger_type: post_call) run once after the conversation ends; omit origin and set delivery.api (HTTPS webhook). See Post-Call Actions. Every tool dispatches via exactly one delivery channel: - delivery.app_message: true (default) - calls land on your frontend as a conversation.tool_call event over the Daily data channel. - delivery.api - Tavus makes an HTTPS request to a URL you configure. Supports five auth types and {placeholder} templating in the URL path, query string, and body. See Tools Overview, LLM Tool Delivery, and LLM Tool Auth for the conceptual model.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tavus\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create Tool - Tavus\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a standalone tool that can be attached to one or more PALs via Attach Tools To PAL. In-call tools (trigger_type: in_call, default) are invoked during the conversation by an LLM (origin: llm) or a perception model (origin: vision / origin: screen / origin: audio). Post-call actions (trigger_type: post_call) run once after the conversation ends; omit origin and set delivery.api (HTTPS webhook). See Post-Call Actions. Every tool dispatches via exactly one delivery channel: - delivery.app_message: true (default) - calls land on your frontend as a conversation.tool_call event over the Daily data channel. - delivery.api - Tavus makes an HTTPS request to a URL you configure. Supports five auth types and {placeholder} templating in the URL path, query string, and body. See Tools Overview, LLM Tool Delivery, and LLM Tool Auth for the conceptual model.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tavus\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tavus.io/api-reference/tools/create-tool\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tavus.mintlify.app/_mintlify/api/og/v2?division=Tools\u0026amp;title=Create+Tool\u0026amp;description=Create+a+standalone+tool+that+can+be+attached+to+one+or+more+PALs+via+%5BAttach+Tools+To+PAL%5D%28%2Fapi-reference%2Fpal-tools%2Fattach-tools-to-pal%29.%0A%0A**In-call+tools**+%28%60\u0026amp;theme=91cafe4cc1af35a0828d7f58\u0026amp;signature=7af9f35969b220d69e148e28d8b5d6826953ae79df5d02ca464d90cd03f0def1\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create Tool - Tavus\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a standalone tool that can be attached to one or more PALs via Attach Tools To PAL. In-call tools (trigger_type: in_call, default) are invoked during the conversation by an LLM (origin: llm) or a perception model (origin: vision / origin: screen / origin: audio). Post-call actions (trigger_type: post_call) run once after the conversation ends; omit origin and set delivery.api (HTTPS webhook). See Post-Call Actions. Every tool dispatches via exactly one delivery channel: - delivery.app_message: true (default) - calls land on your frontend as a conversation.tool_call event over the Daily data channel. - delivery.api - Tavus makes an HTTPS request to a URL you configure. Supports five auth types and {placeholder} templating in the URL path, query string, and body. See Tools Overview, LLM Tool Delivery, and LLM Tool Auth for the conceptual model.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tavus.mintlify.app/_mintlify/api/og/v2?division=Tools\u0026amp;title=Create+Tool\u0026amp;description=Create+a+standalone+tool+that+can+be+attached+to+one+or+more+PALs+via+%5BAttach+Tools+To+PAL%5D%28%2Fapi-reference%2Fpal-tools%2Fattach-tools-to-pal%29.%0A%0A**In-call+tools**+%28%60\u0026amp;theme=91cafe4cc1af35a0828d7f58\u0026amp;signature=7af9f35969b220d69e148e28d8b5d6826953ae79df5d02ca464d90cd03f0def1\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tavus\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FA3862\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tavus.io/api-reference/tools/create-tool\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/tools/create-tool.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tavus.io/#organization\",\"name\":\"Tavus\",\"url\":\"https://docs.tavus.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tavus/mlBBb4gkXXhWTLQi/logo/light_logo.png?fit=max\u0026auto=format\u0026n=mlBBb4gkXXhWTLQi\u0026q=85\u0026s=892e020f9d0afc49e64011dcae9d3dd6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tavus.io#website\",\"name\":\"Tavus\",\"url\":\"https://docs.tavus.io\",\"publisher\":{\"@id\":\"https://docs.tavus.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tavus.io/api-reference/tools/create-tool#webpage\",\"url\":\"https://docs.tavus.io/api-reference/tools/create-tool\",\"name\":\"Create Tool\",\"description\":\"Create a standalone tool that can be attached to one or more PALs via Attach Tools To PAL. In-call tools (trigger_type: in_call, default) are invoked during the conversation by an LLM (origin: llm) or a perception model (origin: vision / origin: screen / origin: audio). Post-call actions (trigger_type: post_call) run once after the conversation ends; omit origin and set delivery.api (HTTPS webhook). See Post-Call Actions. Every tool dispatches via exactly one delivery channel: - delivery.app_message: true (default) - calls land on your frontend as a conversation.tool_call event over the Daily data channel. - delivery.api - Tavus makes an HTTPS request to a URL you configure. Supports five auth types and {placeholder} templating in the URL path, query string, and body. See Tools Overview, LLM Tool Delivery, and LLM Tool Auth for the conceptual model.\",\"dateModified\":\"2026-10-20T23:54:53.228Z\",\"isPartOf\":{\"@id\":\"https://docs.tavus.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tavus.io/api-reference/tools/create-tool#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tavus.io/api-reference/tools/create-tool#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Tavus\",\"item\":\"https://docs.tavus.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create Tool\",\"item\":\"https://docs.tavus.io/api-reference/tools/create-tool\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tavus.io/api-reference/tools/create-tool#apireference\",\"headline\":\"Create Tool\",\"name\":\"Create Tool\",\"description\":\"Create a standalone tool that can be attached to one or more PALs via Attach Tools To PAL. In-call tools (trigger_type: in_call, default) are invoked during the conversation by an LLM (origin: llm) or a perception model (origin: vision / origin: screen / origin: audio). Post-call actions (trigger_type: post_call) run once after the conversation ends; omit origin and set delivery.api (HTTPS webhook). See Post-Call Actions. Every tool dispatches via exactly one delivery channel: - delivery.app_message: true (default) - calls land on your frontend as a conversation.tool_call event over the Daily data channel. - delivery.api - Tavus makes an HTTPS request to a URL you configure. Supports five auth types and {placeholder} templating in the URL path, query string, and body. See Tools Overview, LLM Tool Delivery, and LLM Tool Auth for the conceptual model.\",\"url\":\"https://docs.tavus.io/api-reference/tools/create-tool\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tavus.io/api-reference/tools/create-tool#webpage\"},\"dateModified\":\"2026-10-20T23:54:53.228Z\",\"publisher\":{\"@id\":\"https://docs.tavus.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tavus.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tavus\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Tavus","nav":{"global":null,"tabs":[{"tab":"CVI","pages":[{"title":"CVI","href":"/sections/introduction"}]},{"tab":"API","groups":[{"group":"Introduction","pages":[{"title":"Overview","href":"/api-reference/overview"},{"title":"Authentication","href":"/api-reference/authentication"}]},{"group":"Conversation","pages":[{"openapi":"post /v2/conversations","title":null,"href":"/api-reference/conversations/create-conversation"},{"openapi":"get /v2/conversations/{conversation_id}","title":"Get Conversation","href":"/api-reference/conversations/get-conversation"},{"openapi":"get /v2/conversations","title":"List Conversations","href":"/api-reference/conversations/get-conversations"},{"openapi":"post /v2/conversations/{conversation_id}/end","title":"End Conversation","href":"/api-reference/conversations/end-conversation"},{"openapi":"delete /v2/conversations/{conversation_id}","title":"Delete Conversation","href":"/api-reference/conversations/delete-conversation"}]},{"group":"PAL","pages":[{"openapi":"post /v2/pals","title":"Create PAL","href":"/api-reference/pals/create-pal"},{"openapi":"get /v2/pals/{pal_id}","title":"Get PAL","href":"/api-reference/pals/get-pal"},{"openapi":"get /v2/pals","title":"List PALs","href":"/api-reference/pals/list-pals"},{"openapi":"patch /v2/pals/{pal_id}","title":"Patch PAL","href":"/api-reference/pals/patch-pal"},{"title":"Publish PAL","sidebarTitle":"Publish PAL (removed)","href":"/api-reference/pals/publish-pal"},{"openapi":"delete /v2/pals/{pal_id}","title":"Delete PAL","href":"/api-reference/pals/delete-pal"},{"openapi":"get /v2/pals/check-username","title":"Check Conferencing Username Availability","href":"/api-reference/pals/check-conferencing-username"}]},{"group":"Face","pages":[{"openapi":"post /v2/faces","title":"Create Face","href":"/api-reference/faces/create-face"},{"openapi":"post /v2/faces/image-validation","title":"Validate Face Image","href":"/api-reference/faces/validate-face-image"},{"openapi":"get /v2/faces/{face_id}","title":"Get Face","href":"/api-reference/faces/get-face"},{"openapi":"get /v2/faces","title":"List Faces","href":"/api-reference/faces/list-faces"},{"openapi":"patch /v2/faces/{face_id}","title":"Update Face","href":"/api-reference/faces/update-face"},{"openapi":"delete /v2/faces/{face_id}","title":"Delete Face","href":"/api-reference/faces/delete-face"}]},{"group":"Voices","pages":[{"openapi":"post /v2/voices","title":"Create Voice","href":"/api-reference/voices/create-voice"},{"openapi":"get /v2/voices/{voice_id}","title":"Get Voice","href":"/api-reference/voices/get-voice"},{"openapi":"get /v2/voices","title":"List Voices","href":"/api-reference/voices/list-voices"},{"openapi":"patch /v2/voices/{voice_id}","title":"Update Voice","href":"/api-reference/voices/update-voice"},{"openapi":"delete /v2/voices/{voice_id}","title":"Delete Voice","description":"Deletes a voice.\n\nA voice still referenced by a PAL or a face is **not** deleted: the request returns `409` with a `used_by` count of each, so you can repoint them and retry. A face's `original_voice_id` cannot be deleted at all, since it is the id a face reverts to.\n","href":"/api-reference/voices/delete-voice"}]},{"group":"Tools","pages":[{"openapi":"post /v2/tools","title":"Create Tool","href":"/api-reference/tools/create-tool"},{"openapi":"get /v2/tools","title":"Get Tools","description":"Returns a paginated list of tools. The `type` query parameter controls which tools are returned:\n\n- `type=user` (default) - tools you created via [Create Tool](/api-reference/tools/create-tool).\n- `type=system` - built-in system tools Tavus provides. These are always available to every conversation; you do not need to attach them. The only system tool today is `end_call`, which lets the PAL hang up at a natural stopping point.\n- `type=all` - both, with system tools listed first.\n\nSystem tools have `is_system_tool: true`, an `owner_id` of `null`, and use their `name` as the `tool_id` (e.g. `end_call`). They cannot be created, updated, or deleted.\n","href":"/api-reference/tools/get-tools"},{"openapi":"get /v2/tools/{tool_id}","title":"Get Tool","href":"/api-reference/tools/get-tool"},{"openapi":"patch /v2/tools/{tool_id}","title":"Update Tool","href":"/api-reference/tools/update-tool"},{"openapi":"delete /v2/tools/{tool_id}","title":"Delete Tool","href":"/api-reference/tools/delete-tool"},{"openapi":"post /v2/pals/{pal_id}/tools","title":"Attach Tools To PAL","href":"/api-reference/pal-tools/attach-tools-to-pal"},{"openapi":"get /v2/pals/{pal_id}/tools","title":"List PAL Tools","href":"/api-reference/pal-tools/list-pal-tools"},{"openapi":"delete /v2/pals/{pal_id}/tools/{tool_id}","title":"Detach Tool From PAL","href":"/api-reference/pal-tools/detach-tool-from-pal"}]},{"group":"Connectors","pages":[{"openapi":"post /v2/connectors","title":"Create Connector","href":"/api-reference/connectors/create-connector"},{"openapi":"get /v2/connectors","title":"List Connectors","href":"/api-reference/connectors/list-connectors"},{"openapi":"get /v2/connectors/{connector_id}","title":"Get Connector","href":"/api-reference/connectors/get-connector"},{"openapi":"patch /v2/connectors/{connector_id}","title":"Update Connector","href":"/api-reference/connectors/update-connector"},{"openapi":"delete /v2/connectors/{connector_id}","title":"Delete Connector","href":"/api-reference/connectors/delete-connector"},{"openapi":"get /v2/connectors/{connector_id}/preview","title":"Preview Connector Tools","href":"/api-reference/connectors/preview-connector-tools"},{"openapi":"post /v2/connectors/{connector_id}/runtime_check","title":"Runtime Check Connector","href":"/api-reference/connectors/runtime-check-connector"},{"openapi":"post /v2/connectors/{connector_id}/oauth/reconnect","title":"Reconnect OAuth","href":"/api-reference/connectors/reconnect-connector-oauth"}]},{"group":"Skills","pages":[{"openapi":"get /v2/skills","title":"List Skills","href":"/api-reference/skills/list-skills"},{"openapi":"get /v2/skills/{skill_id}","title":"Get Skill","href":"/api-reference/skills/get-skill"},{"openapi":"get /v2/pals/{pal_id}/skills","title":"List PAL Skills","href":"/api-reference/pal-skills/list-pal-skills"},{"openapi":"get /v2/pals/{pal_id}/skills/{skill_id}","title":"Get PAL Skill","href":"/api-reference/pal-skills/get-pal-skill"},{"openapi":"put /v2/pals/{pal_id}/skills/{skill_id}","title":"Attach Skill to PAL","href":"/api-reference/pal-skills/attach-skill-to-pal"},{"openapi":"patch /v2/pals/{pal_id}/skills/{skill_id}","title":"Update PAL Skill","href":"/api-reference/pal-skills/update-pal-skill"},{"openapi":"delete /v2/pals/{pal_id}/skills/{skill_id}","title":"Detach Skill from PAL","href":"/api-reference/pal-skills/detach-skill-from-pal"},{"openapi":"put /v2/pals/{pal_id}/skills","title":"Replace PAL Skills","href":"/api-reference/pal-skills/replace-pal-skills"}]},{"group":"Memory Stores","pages":[{"group":"Store management","pages":[{"openapi":"post /v2/memory-stores","title":"Create Memory Store","href":"/api-reference/memory-stores/create-memory-store"},{"openapi":"get /v2/memory-stores","title":"List Memory Stores","href":"/api-reference/memory-stores/list-memory-stores"},{"openapi":"get /v2/memory-stores/{memory_store_id}","title":"Get Memory Store","href":"/api-reference/memory-stores/get-memory-store"},{"openapi":"delete /v2/memory-stores/{memory_store_id}","title":"Delete Memory Store","href":"/api-reference/memory-stores/delete-memory-store"}]},{"group":"Pinned memories","pages":[{"openapi":"post /v2/memory-stores/{memory_store_id}/pinned","title":"Create Pinned Memory","href":"/api-reference/memory-stores/create-pinned-memory"},{"openapi":"get /v2/memory-stores/{memory_store_id}/pinned","title":"List Pinned Memories","href":"/api-reference/memory-stores/list-pinned-memories"},{"openapi":"patch /v2/memory-stores/{memory_store_id}/pinned/{memory_id}","title":"Update Pinned Memory","href":"/api-reference/memory-stores/update-pinned-memory"},{"openapi":"delete /v2/memory-stores/{memory_store_id}/pinned/{memory_id}","title":"Delete Pinned Memory","href":"/api-reference/memory-stores/delete-pinned-memory"}]},{"group":"Learned memory","pages":[{"openapi":"get /v2/memory-stores/{memory_store_id}/learned","title":"Get Learned Memory","href":"/api-reference/memory-stores/get-learned-memory"},{"openapi":"delete /v2/memory-stores/{memory_store_id}/learned/profile","title":"Delete Learned Profile Memory","href":"/api-reference/memory-stores/delete-learned-profile-memory"},{"openapi":"delete /v2/memory-stores/{memory_store_id}/learned/timeline","title":"Delete Learned Timeline Memory","href":"/api-reference/memory-stores/delete-learned-timeline-memory"}]}]},{"group":"Magic Canvas","pages":[{"openapi":"post /v2/conversations/{conversation_id}/canvas/interactions","title":"Record Canvas Interaction","href":"/api-reference/canvas-interactions/record-canvas-interaction"},{"openapi":"get /v2/conversations/{conversation_id}/canvas/interactions","title":"List Canvas Interactions","href":"/api-reference/canvas-interactions/list-canvas-interactions"}]},{"group":"Objectives","pages":[{"openapi":"post /v2/objectives","title":"Create Objectives","href":"/api-reference/objectives/create-objectives"},{"openapi":"get /v2/objectives/{objectives_id}","title":"Get Objective","href":"/api-reference/objectives/get-objectives"},{"openapi":"get /v2/objectives","title":"Get Objectives","href":"/api-reference/objectives/get-objectives-list"},{"openapi":"patch /v2/objectives/{objectives_id}","title":"Patch Objective","href":"/api-reference/objectives/patch-objectives"},{"openapi":"delete /v2/objectives/{objectives_id}","title":"Delete Objective","href":"/api-reference/objectives/delete-objectives"}]},{"group":"Guardrails","pages":[{"openapi":"post /v2/guardrails","title":"Create Guardrails","href":"/api-reference/guardrails/create-guardrails"},{"openapi":"get /v2/guardrails/{guardrail_id}","title":"Get Guardrails","href":"/api-reference/guardrails/get-guardrails"},{"openapi":"get /v2/guardrails","title":"List Guardrails","href":"/api-reference/guardrails/list-guardrails"},{"openapi":"patch /v2/guardrails/{guardrail_id}","title":"Patch Guardrails","href":"/api-reference/guardrails/patch-guardrails"},{"openapi":"delete /v2/guardrails/{guardrail_id}","title":"Delete Guardrails","href":"/api-reference/guardrails/delete-guardrails"}]},{"group":"Knowledge Base","pages":[{"title":"Create Document","openapi":"post /v2/documents","href":"/api-reference/documents/create-document"},{"title":"Get Document","openapi":"get /v2/documents/{document_id}","href":"/api-reference/documents/get-document"},{"title":"List Documents","openapi":"get /v2/documents","href":"/api-reference/documents/get-documents"},{"title":"Delete Document","openapi":"delete /v2/documents/{document_id}","href":"/api-reference/documents/delete-document"},{"title":"Update Document","openapi":"patch /v2/documents/{document_id}","href":"/api-reference/documents/patch-document"},{"title":"Recrawl Document","openapi":"post /v2/documents/{document_id}/recrawl","href":"/api-reference/documents/recrawl-document"}]},{"group":"Pronunciation Dictionaries","pages":[{"openapi":"post /v2/pronunciation-dictionaries","title":"Create Pronunciation Dictionary","href":"/api-reference/pronunciation-dictionaries/create-pronunciation-dictionary"},{"openapi":"get /v2/pronunciation-dictionaries/{dictionary_id}","title":"Get Pronunciation Dictionary","href":"/api-reference/pronunciation-dictionaries/get-pronunciation-dictionary"},{"openapi":"get /v2/pronunciation-dictionaries","title":"List Pronunciation Dictionaries","href":"/api-reference/pronunciation-dictionaries/list-pronunciation-dictionaries"},{"openapi":"patch /v2/pronunciation-dictionaries/{dictionary_id}","title":"Update Pronunciation Dictionary","href":"/api-reference/pronunciation-dictionaries/update-pronunciation-dictionary"},{"openapi":"delete /v2/pronunciation-dictionaries/{dictionary_id}","title":"Delete Pronunciation Dictionary","href":"/api-reference/pronunciation-dictionaries/delete-pronunciation-dictionary"}]},{"group":"Deployments","pages":[{"openapi":"post /v2/deployments","title":"Create Deployment","href":"/api-reference/deployments/create-deployment"},{"openapi":"get /v2/deployments","title":"List Deployments","href":"/api-reference/deployments/list-deployments"},{"openapi":"get /v2/deployments/{deployment_id}","title":"Get Deployment","href":"/api-reference/deployments/get-deployment"},{"openapi":"patch /v2/deployments/{deployment_id}","title":"Patch Deployment","href":"/api-reference/deployments/patch-deployment"},{"openapi":"delete /v2/deployments/{deployment_id}","title":"Delete Deployment","href":"/api-reference/deployments/delete-deployment"},{"openapi":"get /v2/deployments/{deployment_id}/init","title":"Get Deployment Init Config","href":"/api-reference/deployments/get-deployment-init"},{"openapi":"post /v2/deployments/{deployment_id}/start","title":"Start Deployment Conversation","href":"/api-reference/deployments/start-deployment-conversation"},{"openapi":"post /v2/deployments/{deployment_id}/conversations/{conversation_id}/end","title":"End Deployment Conversation","href":"/api-reference/deployments/end-deployment-conversation"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/sections/changelog/changelog"}]},{"tab":"Other Products","pages":[{"title":"Other Products","href":"/sections/video/overview"}]},{"tab":"Enablement Docs","hidden":true,"pages":[{"title":"Enablement Docs","href":"/sections/enablement-docs"}]}]},"title":"Create Tool - Tavus","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}