Older shape of parameters: each entry becomes a required string parameter. Mutually exclusive with parameters in one request. Reads return both, arguments being the string parameters of the schema.
Call parameters as a JSON Schema object (draft 2020-12): type: object (filled in when omitted), properties, required. Standard meaning throughout: required means the key must be present, type: ["string", "null"] allows null, minLength: 1 makes a string non-empty, enum and pattern constrain the value, default fills a key the model left out. Mutually exclusive with arguments in one request. A tool created with parameters starts in parameter_mode: strict.
Whether the agent runtime checks each call's arguments against parameters before running the tool. legacy (the default for tools created with arguments, and every tool from before this field existed): no check, the model's arguments run as sent. strict (the default for tools created with parameters): a call that does not satisfy the schema is refused and the model is told to ask the caller for the missing information, and the LLM provider's constrained decoding is turned on where the model supports it (OpenAI models and a custom OpenAI-compatible endpoint receive the tool with strict: true, Gemini on the platform's native channel runs validated function calling). Changing parameters never changes the mode, and the mode can be changed on its own.
Request body sent for non-GET calls. {{argument}}, {{system.*}} and custom session variable placeholders are filled in at call time; a missing value becomes empty. When the body's content type is JSON (the default application/json, any +json type, or a Content-Type header saying so), a placeholder inside a JSON string, such as {"note": "{{note}}"}, is JSON-escaped, so quotes, backslashes and newlines in the value keep the body valid JSON. A placeholder outside a string, such as {"count": {{count}}}, is inserted as is. Other content types are filled in as is.
Call parameters as a JSON Schema object (draft 2020-12): type: object (filled in when omitted), properties, required. Standard meaning throughout: required means the key must be present, type: ["string", "null"] allows null, minLength: 1 makes a string non-empty, enum and pattern constrain the value, default fills a key the model left out. Mutually exclusive with arguments in one request. A tool created with parameters starts in parameter_mode: strict.
Older shape of parameters: each entry becomes a required string parameter. Mutually exclusive with parameters in one request. Reads return both, arguments being the string parameters of the schema.
Whether the agent runtime checks each call's arguments against parameters before running the tool. legacy (the default for tools created with arguments, and every tool from before this field existed): no check, the model's arguments run as sent. strict (the default for tools created with parameters): a call that does not satisfy the schema is refused and the model is told to ask the caller for the missing information, and the LLM provider's constrained decoding is turned on where the model supports it (OpenAI models and a custom OpenAI-compatible endpoint receive the tool with strict: true, Gemini on the platform's native channel runs validated function calling). Changing parameters never changes the mode, and the mode can be changed on its own.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Fish Audio","description":"Documentation for Fish Audio APIs, SDKs, models, voice cloning, real-time streaming, and self-hosting.","colors":{"primary":"#0e0e0e","light":"#9b90e8","dark":"#09090b"},"logo":{"light":"https://mintcdn.com/hanabiaiinc/amYp9Dj31LtlHliX/logo/light.png?fit=max\u0026auto=format\u0026n=amYp9Dj31LtlHliX\u0026q=85\u0026s=305973cd6a8d11dbf36d1ec682ee845e","dark":"https://mintcdn.com/hanabiaiinc/amYp9Dj31LtlHliX/logo/dark.png?fit=max\u0026auto=format\u0026n=amYp9Dj31LtlHliX\u0026q=85\u0026s=b79bd889db9ac1aae939834596e8a22f"},"favicon":"https://mintcdn.com/hanabiaiinc/-WxHANLOAmlTUwdM/favicon.svg?fit=max\u0026auto=format\u0026n=-WxHANLOAmlTUwdM\u0026q=85\u0026s=dc65d9f44bda0f5b8277c48dd9c979c3","navbar":{"links":[{"href":"https://discord.gg/dF9Db2Tt3Y","label":"Community"},{"href":"mailto:support@fish.audio","label":"Support"}],"primary":{"type":"button","label":"Sign Up","href":"https://fish.audio/auth/?redirect=/app/"}},"footer":{"socials":{"website":"https://fish.audio","github":"https://github.com/fishaudio","x":"https://x.com/fishaudio","linkedin":"https://www.linkedin.com/company/fish-audio","discord":"https://discord.gg/dF9Db2Tt3Y"},"links":[{"header":"About","items":[{"label":"Research","href":"https://openaudio.com/"},{"label":"Careers","href":"mailto:hr@fish.audio"},{"label":"Blog","href":"https://fish.audio/blog"}]},{"header":"Resources","items":[{"label":"API Status","href":"https://status.fish.audio"},{"label":"Open Source","href":"https://github.com/fishaudio"},{"label":"Changelog","href":"https://docs.fish.audio/developer-guide/getting-started/changelog"}]},{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://fish.audio/privacy"},{"label":"Terms of Service","href":"https://fish.audio/terms"},{"label":"Report Abuse","href":"mailto:support@fish.audio?subject=%5BReport+Abuse%5D+MODEL+NAME\u0026amp;body=Please+provide+a+detailed+description+of+the+abuse+you+are+reporting."}]}]},"fonts":{"family":"Onest"},"integrations":{"amplitude":{"apiKey":"39daf30712f00da6ea5283bc21e7084e"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"interaction":{"drilldown":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hanabiaiinc","hasAudioNarration":false,"actualSubdomain":"hanabiaiinc","customDomains":["docs.fish.audio"],"gitSource":{"type":"github","owner":"fishaudio","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf939a97dcd8815dac5716","collectionId":"c3bd58b2-e275-4a0e-aa2a-84eb41462f11","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf939a97dcd8815dac5716"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6adf939a97dcd8815dac5716","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"API Reference","count":78},{"language":"default","tag":"Agents API","count":49},{"language":"default","tag":"Agents","count":46},{"language":"default","tag":"Resources","count":40},{"language":"default","tag":"Overview","count":30},{"language":"default","tag":"REST API","count":14},{"language":"default","tag":"Core Features","count":14},{"language":"default","tag":"Tests","count":13},{"language":"default","tag":"Cookbook","count":12},{"language":"default","tag":"Build","count":10}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@fish.audio","showHelpButton":true}},"basePath":"","hasChatPermissions":false,"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":true},"customCss":[{"filePath":"custom.css","content":"*{scrollbar-width:thin;scrollbar-color:rgba(120,120,120,.4) transparent}::-webkit-scrollbar{width:6px;height:6px;background:0 0!important}::-webkit-scrollbar-thumb{background:rgba(120,120,120,.5);border-radius:999px;opacity:0;transition:opacity .2s ease}:active::-webkit-scrollbar-thumb,:hover::-webkit-scrollbar-thumb{opacity:1}img[src*=\"/images/\"]{background:0 0!important}.prompt-card{display:grid;cursor:pointer;outline:0}.prompt-card .card{transition:border-color .15s ease}.prompt-card:focus-visible .card,.prompt-card:hover .card{border-color:rgb(var(--primary))!important}.dark .prompt-card:focus-visible .card,.dark .prompt-card:hover .card{border-color:rgb(var(--primary-light))!important}.prompt-card-hint{position:absolute;top:1rem;right:1rem;padding:.3rem .6rem;border-radius:9999px;font-size:.75rem;line-height:1;color:rgb(var(--gray-500));background:rgba(120,120,120,.12);opacity:0;transition:opacity .15s ease;pointer-events:none}.prompt-card:focus-visible .prompt-card-hint,.prompt-card:hover .prompt-card-hint,.prompt-card[data-state=copied] .prompt-card-hint,.prompt-card[data-state=failed] .prompt-card-hint{opacity:1}.prompt-card[data-state=copied] .prompt-card-hint{color:rgb(var(--primary));background:rgb(var(--primary)/.12)}.dark .prompt-card[data-state=copied] .prompt-card-hint{color:rgb(var(--primary-light));background:rgb(var(--primary-light)/.16)}"}],"page":{"pagePath":"api-reference/endpoint/agent/create-tool","slug":"/api-reference/endpoint/agent/create-tool","pageMetadata":{"openapi":"post /v1/agent/tools","title":"Create Tool","description":"Create a workspace tool.","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/create-tool"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create a workspace tool.\"\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 /v1/agent/tools","title":"Create Tool","description":"Create a workspace tool.","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/create-tool"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Create Tool","description":"Create a workspace tool.","security":["12b03cd7-64e9-48b3-a545-14a6cf667d42"],"requestBody":"092890ed-a96e-46b8-8484-64ce117f7619","responses":{"201":"903ce7e7-6fb0-411e-87e8-d2298a1a673f","401":"7022cab1-5b96-47d6-92cc-be74055e4c75","422":"3fe7e737-c488-46ca-8fb6-354239786bc2","503":"c12a3288-ff16-48b2-a5f7-7c16e6cee351"},"tags":["Agent Tools"],"x-codeSamples":[{"lang":"bash","label":"Create Webhook Tool","source":"curl --request POST \\\n --url https://api.fish.audio/v1/agent/tools \\\n --header 'Authorization: Bearer \u003ctoken>' \\\n --header 'Content-Type: application/json' \\\n --data '{\n \"name\": \"Book appointment\",\n \"description\": \"Creates an appointment in the scheduling system.\",\n \"method\": \"POST\",\n \"url\": \"https://api.example.com/appointments\",\n \"arguments\": [\n {\"name\": \"date\", \"description\": \"Appointment date, YYYY-MM-DD\"}\n ],\n \"body_template\": \"{\\\"date\\\": \\\"{{date}}\\\"}\",\n \"headers\": [\n {\"name\": \"Authorization\", \"value\": \"Bearer \u003capi-token>\", \"kind\": \"authorization_bearer\"}\n ]\n }'"}],"method":"post","type":"path","servers":["39cecf54-e58d-4ac2-ab28-6d00babdd859"],"path":"/v1/agent/tools","baseUrlOptions":["https://api.fish.audio"],"title":"Create Tool","codeSamples":[{"label":"Create Webhook Tool","lang":"bash","source":"curl --request POST \\\n --url https://api.fish.audio/v1/agent/tools \\\n --header 'Authorization: Bearer \u003ctoken>' \\\n --header 'Content-Type: application/json' \\\n --data '{\n \"name\": \"Book appointment\",\n \"description\": \"Creates an appointment in the scheduling system.\",\n \"method\": \"POST\",\n \"url\": \"https://api.example.com/appointments\",\n \"arguments\": [\n {\"name\": \"date\", \"description\": \"Appointment date, YYYY-MM-DD\"}\n ],\n \"body_template\": \"{\\\"date\\\": \\\"{{date}}\\\"}\",\n \"headers\": [\n {\"name\": \"Authorization\", \"value\": \"Bearer \u003capi-token>\", \"kind\": \"authorization_bearer\"}\n ]\n }'"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"description":"Console payload minus the folder concept (folders are console-only).","properties":{"name":{"maxLength":120,"minLength":1,"title":"Name","type":"string","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"description":{"default":"","maxLength":2000,"title":"Description","type":"string","uniqueKey":"description","typeLabel":"string"},"tool_type":{"default":"webhook","enum":["webhook","client"],"title":"Tool Type","type":"string","uniqueKey":"tool_type","typeLabel":"enum\u003cstring>"},"arguments":{"description":"Older shape of `parameters`: each entry becomes a required string parameter. Mutually exclusive with `parameters` in one request. Reads return both, `arguments` being the string parameters of the schema.","items":{"properties":{"name":{"maxLength":64,"minLength":1,"title":"Name","type":"string","isRequired":true,"uniqueKey":"arguments.items.[INDEX].name","typeLabel":"string"},"description":{"default":"","maxLength":500,"title":"Description","type":"string","uniqueKey":"arguments.items.[INDEX].description","typeLabel":"string"}},"required":["name"],"title":"AgentWebhookArgumentPayload","type":"object","uniqueKey":"arguments.items.[INDEX]","typeLabel":"AgentWebhookArgumentPayload · object"},"title":"Arguments","type":"array","uniqueKey":"arguments","typeLabel":"AgentWebhookArgumentPayload · object[]"},"parameters":{"oneOf":[{"type":"object","title":"Parameters","description":"Call parameters as a JSON Schema object (draft 2020-12): `type: object` (filled in when omitted), `properties`, `required`. Standard meaning throughout: `required` means the key must be present, `type: [\"string\", \"null\"]` allows null, `minLength: 1` makes a string non-empty, `enum` and `pattern` constrain the value, `default` fills a key the model left out. Mutually exclusive with `arguments` in one request. A tool created with `parameters` starts in `parameter_mode: strict`.","additionalProperties":{"oneOf":[{}],"uniqueKey":"parameters.oneOf.0.additionalProperties","typeLabel":"any"},"uniqueKey":"parameters.oneOf.0","typeLabel":"Parameters · object"},{"type":"null","title":"Parameters","description":"Call parameters as a JSON Schema object (draft 2020-12): `type: object` (filled in when omitted), `properties`, `required`. Standard meaning throughout: `required` means the key must be present, `type: [\"string\", \"null\"]` allows null, `minLength: 1` makes a string non-empty, `enum` and `pattern` constrain the value, `default` fills a key the model left out. Mutually exclusive with `arguments` in one request. A tool created with `parameters` starts in `parameter_mode: strict`.","uniqueKey":"parameters.oneOf.1","typeLabel":"null"}],"uniqueKey":"parameters","typeLabel":"Parameters · object | null"},"parameter_mode":{"oneOf":[{"type":"string","title":"Parameter Mode","description":"Whether the agent runtime checks each call's arguments against `parameters` before running the tool. `legacy` (the default for tools created with `arguments`, and every tool from before this field existed): no check, the model's arguments run as sent. `strict` (the default for tools created with `parameters`): a call that does not satisfy the schema is refused and the model is told to ask the caller for the missing information, and the LLM provider's constrained decoding is turned on where the model supports it (OpenAI models and a custom OpenAI-compatible endpoint receive the tool with `strict: true`, Gemini on the platform's native channel runs validated function calling). Changing `parameters` never changes the mode, and the mode can be changed on its own.","enum":["legacy","strict"],"uniqueKey":"parameter_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Parameter Mode","description":"Whether the agent runtime checks each call's arguments against `parameters` before running the tool. `legacy` (the default for tools created with `arguments`, and every tool from before this field existed): no check, the model's arguments run as sent. `strict` (the default for tools created with `parameters`): a call that does not satisfy the schema is refused and the model is told to ask the caller for the missing information, and the LLM provider's constrained decoding is turned on where the model supports it (OpenAI models and a custom OpenAI-compatible endpoint receive the tool with `strict: true`, Gemini on the platform's native channel runs validated function calling). Changing `parameters` never changes the mode, and the mode can be changed on its own.","uniqueKey":"parameter_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"parameter_mode","typeLabel":"enum\u003cstring> | null"},"method":{"default":"POST","enum":["GET","POST","PUT","PATCH","DELETE"],"title":"Method","type":"string","uniqueKey":"method","typeLabel":"enum\u003cstring>"},"url":{"default":"","maxLength":4000,"title":"Url","type":"string","uniqueKey":"url","typeLabel":"string"},"content_type":{"default":"application/json","maxLength":128,"title":"Content Type","type":"string","uniqueKey":"content_type","typeLabel":"string"},"body_template":{"default":"","description":"Request body sent for non-GET calls. `{{argument}}`, `{{system.*}}` and custom session variable placeholders are filled in at call time; a missing value becomes empty. When the body's content type is JSON (the default `application/json`, any `+json` type, or a `Content-Type` header saying so), a placeholder inside a JSON string, such as `{\"note\": \"{{note}}\"}`, is JSON-escaped, so quotes, backslashes and newlines in the value keep the body valid JSON. A placeholder outside a string, such as `{\"count\": {{count}}}`, is inserted as is. Other content types are filled in as is.","maxLength":100000,"title":"Body Template","type":"string","uniqueKey":"body_template","typeLabel":"string"},"headers":{"items":{"properties":{"name":{"maxLength":128,"minLength":1,"title":"Name","type":"string","isRequired":true,"uniqueKey":"headers.items.[INDEX].name","typeLabel":"string"},"value":{"maxLength":4000,"title":"Value","type":"string","isRequired":true,"uniqueKey":"headers.items.[INDEX].value","typeLabel":"string"},"kind":{"default":"custom","enum":["custom","authorization_bearer","authorization_basic"],"title":"Kind","type":"string","uniqueKey":"headers.items.[INDEX].kind","typeLabel":"enum\u003cstring>"}},"required":["name","value"],"title":"AgentWebhookHeaderPayload","type":"object","uniqueKey":"headers.items.[INDEX]","typeLabel":"AgentWebhookHeaderPayload · object"},"title":"Headers","type":"array","uniqueKey":"headers","typeLabel":"AgentWebhookHeaderPayload · object[]"},"timeout_seconds":{"default":30,"maximum":300,"minimum":1,"title":"Timeout Seconds","type":"integer","uniqueKey":"timeout_seconds","typeLabel":"integer"},"error_handling":{"default":"passthrough","enum":["passthrough","hide"],"title":"Error Handling","type":"string","uniqueKey":"error_handling","typeLabel":"enum\u003cstring>"},"mock_responses":{"items":{"properties":{"name":{"default":"","maxLength":120,"title":"Name","type":"string","uniqueKey":"mock_responses.items.[INDEX].name","typeLabel":"string"},"status_code":{"default":200,"maximum":599,"minimum":100,"title":"Status Code","type":"integer","uniqueKey":"mock_responses.items.[INDEX].status_code","typeLabel":"integer"},"content_type":{"default":"application/json","maxLength":128,"title":"Content Type","type":"string","uniqueKey":"mock_responses.items.[INDEX].content_type","typeLabel":"string"},"body":{"default":"","maxLength":100000,"title":"Body","type":"string","uniqueKey":"mock_responses.items.[INDEX].body","typeLabel":"string"}},"title":"AgentWebhookMockResponsePayload","type":"object","uniqueKey":"mock_responses.items.[INDEX]","typeLabel":"AgentWebhookMockResponsePayload · object"},"title":"Mock Responses","type":"array","uniqueKey":"mock_responses","typeLabel":"AgentWebhookMockResponsePayload · object[]"},"expects_response":{"default":true,"title":"Expects Response","type":"boolean","uniqueKey":"expects_response","typeLabel":"boolean"},"execution_mode":{"default":"blocking","enum":["blocking","fire_and_forget","background"],"title":"Execution Mode","type":"string","uniqueKey":"execution_mode","typeLabel":"enum\u003cstring>"}},"required":["name"],"title":"PublicAgentToolCreatePayload","type":"object","uniqueKey":"","typeLabel":"PublicAgentToolCreatePayload · object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","description":"","tool_type":"webhook","arguments":[{"name":"\u003cstring>","description":""}],"parameters":{},"method":"POST","url":"","content_type":"application/json","body_template":"","headers":[{"name":"\u003cstring>","value":"\u003cstring>","kind":"custom"}],"timeout_seconds":30,"error_handling":"passthrough","mock_responses":[{"name":"","status_code":200,"content_type":"application/json","body":""}],"expects_response":true,"execution_mode":"blocking"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"903ce7e7-6fb0-411e-87e8-d2298a1a673f":{"description":"Document created, URL follows","headers":{},"content":{"application/json":{"schema":{"properties":{"tool_id":{"title":"Tool Id","type":"string","isRequired":true,"uniqueKey":"tool_id","typeLabel":"string"},"workspace_id":{"title":"Workspace Id","type":"string","isRequired":true,"uniqueKey":"workspace_id","typeLabel":"string"},"name":{"title":"Name","type":"string","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"tool_type":{"enum":["webhook","client"],"title":"Tool Type","type":"string","isRequired":true,"uniqueKey":"tool_type","typeLabel":"enum\u003cstring>"},"method":{"enum":["GET","POST","PUT","PATCH","DELETE"],"title":"Method","type":"string","isRequired":true,"uniqueKey":"method","typeLabel":"enum\u003cstring>"},"url":{"title":"Url","type":"string","isRequired":true,"uniqueKey":"url","typeLabel":"string"},"created_at":{"format":"date-time","title":"Created At","type":"string","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"format":"date-time","title":"Updated At","type":"string","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"parameters":{"additionalProperties":{"oneOf":[{}],"uniqueKey":"parameters.additionalProperties","typeLabel":"any"},"description":"Call parameters as a JSON Schema object (draft 2020-12): `type: object` (filled in when omitted), `properties`, `required`. Standard meaning throughout: `required` means the key must be present, `type: [\"string\", \"null\"]` allows null, `minLength: 1` makes a string non-empty, `enum` and `pattern` constrain the value, `default` fills a key the model left out. Mutually exclusive with `arguments` in one request. A tool created with `parameters` starts in `parameter_mode: strict`.","title":"Parameters","type":"object","isRequired":true,"uniqueKey":"parameters","typeLabel":"Parameters · object"},"content_type":{"title":"Content Type","type":"string","isRequired":true,"uniqueKey":"content_type","typeLabel":"string"},"timeout_seconds":{"title":"Timeout Seconds","type":"integer","isRequired":true,"uniqueKey":"timeout_seconds","typeLabel":"integer"},"error_handling":{"enum":["passthrough","hide"],"title":"Error Handling","type":"string","isRequired":true,"uniqueKey":"error_handling","typeLabel":"enum\u003cstring>"},"description":{"default":"","title":"Description","type":"string","uniqueKey":"description","typeLabel":"string"},"used_by":{"default":0,"description":"How many agents reference this tool in their draft configuration.","title":"Used By","type":"integer","uniqueKey":"used_by","typeLabel":"integer"},"arguments":{"description":"Older shape of `parameters`: each entry becomes a required string parameter. Mutually exclusive with `parameters` in one request. Reads return both, `arguments` being the string parameters of the schema.","items":{"properties":{"name":{"maxLength":64,"minLength":1,"title":"Name","type":"string","isRequired":true,"uniqueKey":"arguments.items.[INDEX].name","typeLabel":"string"},"description":{"default":"","maxLength":500,"title":"Description","type":"string","uniqueKey":"arguments.items.[INDEX].description","typeLabel":"string"}},"required":["name"],"title":"AgentWebhookArgumentPayload","type":"object","uniqueKey":"arguments.items.[INDEX]","typeLabel":"AgentWebhookArgumentPayload · object"},"title":"Arguments","type":"array","uniqueKey":"arguments","typeLabel":"AgentWebhookArgumentPayload · object[]"},"parameter_mode":{"default":"legacy","description":"Whether the agent runtime checks each call's arguments against `parameters` before running the tool. `legacy` (the default for tools created with `arguments`, and every tool from before this field existed): no check, the model's arguments run as sent. `strict` (the default for tools created with `parameters`): a call that does not satisfy the schema is refused and the model is told to ask the caller for the missing information, and the LLM provider's constrained decoding is turned on where the model supports it (OpenAI models and a custom OpenAI-compatible endpoint receive the tool with `strict: true`, Gemini on the platform's native channel runs validated function calling). Changing `parameters` never changes the mode, and the mode can be changed on its own.","enum":["legacy","strict"],"title":"Parameter Mode","type":"string","uniqueKey":"parameter_mode","typeLabel":"enum\u003cstring>"},"body_template":{"default":"","title":"Body Template","type":"string","uniqueKey":"body_template","typeLabel":"string"},"headers":{"items":{"properties":{"name":{"title":"Name","type":"string","isRequired":true,"uniqueKey":"headers.items.[INDEX].name","typeLabel":"string"},"kind":{"enum":["custom","authorization_bearer","authorization_basic"],"title":"Kind","type":"string","isRequired":true,"uniqueKey":"headers.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"type":"string","title":"Value","description":"Header value; null for credential kinds (authorization_bearer / authorization_basic), which are write-only.","uniqueKey":"headers.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"null","title":"Value","description":"Header value; null for credential kinds (authorization_bearer / authorization_basic), which are write-only.","uniqueKey":"headers.items.[INDEX].value.oneOf.1","typeLabel":"null"}],"uniqueKey":"headers.items.[INDEX].value","typeLabel":"string | null"},"has_secret":{"default":false,"description":"Whether a credential value is stored; the value itself is never returned.","title":"Has Secret","type":"boolean","uniqueKey":"headers.items.[INDEX].has_secret","typeLabel":"boolean"}},"required":["name","kind"],"title":"PublicToolHeader","type":"object","uniqueKey":"headers.items.[INDEX]","typeLabel":"PublicToolHeader · object"},"title":"Headers","type":"array","uniqueKey":"headers","typeLabel":"PublicToolHeader · object[]"},"mock_responses":{"items":{"properties":{"name":{"default":"","maxLength":120,"title":"Name","type":"string","uniqueKey":"mock_responses.items.[INDEX].name","typeLabel":"string"},"status_code":{"default":200,"maximum":599,"minimum":100,"title":"Status Code","type":"integer","uniqueKey":"mock_responses.items.[INDEX].status_code","typeLabel":"integer"},"content_type":{"default":"application/json","maxLength":128,"title":"Content Type","type":"string","uniqueKey":"mock_responses.items.[INDEX].content_type","typeLabel":"string"},"body":{"default":"","maxLength":100000,"title":"Body","type":"string","uniqueKey":"mock_responses.items.[INDEX].body","typeLabel":"string"}},"title":"AgentWebhookMockResponsePayload","type":"object","uniqueKey":"mock_responses.items.[INDEX]","typeLabel":"AgentWebhookMockResponsePayload · object"},"title":"Mock Responses","type":"array","uniqueKey":"mock_responses","typeLabel":"AgentWebhookMockResponsePayload · object[]"},"expects_response":{"default":true,"title":"Expects Response","type":"boolean","uniqueKey":"expects_response","typeLabel":"boolean"},"execution_mode":{"default":"blocking","enum":["blocking","fire_and_forget","background"],"title":"Execution Mode","type":"string","uniqueKey":"execution_mode","typeLabel":"enum\u003cstring>"}},"required":["tool_id","workspace_id","name","tool_type","method","url","created_at","updated_at","parameters","content_type","timeout_seconds","error_handling"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"tool_id":"\u003cstring>","workspace_id":"\u003cstring>","name":"\u003cstring>","tool_type":"webhook","method":"GET","url":"\u003cstring>","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","parameters":{},"content_type":"\u003cstring>","timeout_seconds":123,"error_handling":"passthrough","description":"","used_by":0,"arguments":[{"name":"\u003cstring>","description":""}],"parameter_mode":"legacy","body_template":"","headers":[{"name":"\u003cstring>","kind":"custom","value":"\u003cstring>","has_secret":false}],"mock_responses":[{"name":"","status_code":200,"content_type":"application/json","body":""}],"expects_response":true,"execution_mode":"blocking"}}},"exampleType":"generated"}},"exampleType":"generated"},"7022cab1-5b96-47d6-92cc-be74055e4c75":{"description":"No permission -- see authorization schemes","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"3fe7e737-c488-46ca-8fb6-354239786bc2":{"description":"","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"c12a3288-ff16-48b2-a5f7-7c16e6cee351":{"description":"The server cannot process the request due to a high load","headers":{},"content":{"application/json":{"schema":{"properties":{"status":{"title":"Status","type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"message":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"oneOf":[{"type":"string","title":"Reason","uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"reason","typeLabel":"string | null"}},"required":["status","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"message":"\u003cstring>","reason":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"12b03cd7-64e9-48b3-a545-14a6cf667d42":{"BearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"39cecf54-e58d-4ac2-ab28-6d00babdd859":{"description":"Fish Audio API","url":"https://api.fish.audio"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"hanabiaiinc","siteName":"Fish Audio","title":"Create Tool - Fish Audio","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-05T15:51:33.652Z","originalFileLocation":"api-reference/endpoint/agent/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 workspace tool.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fish Audio\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_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/hanabiaiinc/rHJNuwD9FcQhvMwX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create Tool - Fish Audio\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a workspace tool.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fish Audio\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fish.audio/api-reference/endpoint/agent/create-tool\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hanabiaiinc.mintlify.app/_mintlify/api/og/v2?division=Tools\u0026amp;title=Create+Tool\u0026amp;description=Create+a+workspace+tool.\u0026amp;theme=949dddfb68a78f6c8e39910d\u0026amp;signature=74940cff79bb4e3ef894822bd28397d885b3b18ea359b03bc7524f7ca923cf22\">\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 - Fish Audio\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a workspace tool.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hanabiaiinc.mintlify.app/_mintlify/api/og/v2?division=Tools\u0026amp;title=Create+Tool\u0026amp;description=Create+a+workspace+tool.\u0026amp;theme=949dddfb68a78f6c8e39910d\u0026amp;signature=74940cff79bb4e3ef894822bd28397d885b3b18ea359b03bc7524f7ca923cf22\">\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/hanabiaiinc/rHJNuwD9FcQhvMwX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fish Audio\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0e0e0e\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fish.audio/api-reference/endpoint/agent/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/endpoint/agent/create-tool.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fish.audio/#organization\",\"name\":\"Fish Audio\",\"url\":\"https://docs.fish.audio\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hanabiaiinc/amYp9Dj31LtlHliX/logo/light.png?fit=max\u0026auto=format\u0026n=amYp9Dj31LtlHliX\u0026q=85\u0026s=305973cd6a8d11dbf36d1ec682ee845e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fish.audio#website\",\"name\":\"Fish Audio\",\"url\":\"https://docs.fish.audio\",\"publisher\":{\"@id\":\"https://docs.fish.audio/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fish.audio/api-reference/endpoint/agent/create-tool#webpage\",\"url\":\"https://docs.fish.audio/api-reference/endpoint/agent/create-tool\",\"name\":\"Create Tool\",\"description\":\"Create a workspace tool.\",\"dateModified\":\"2026-08-05T15:51:33.652Z\",\"isPartOf\":{\"@id\":\"https://docs.fish.audio#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fish.audio/api-reference/endpoint/agent/create-tool#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fish.audio/api-reference/endpoint/agent/create-tool#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agents API\",\"item\":\"https://docs.fish.audio/api-reference/agent-errors\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tools\",\"item\":\"https://docs.fish.audio/api-reference/endpoint/agent/list-tools\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create Tool\",\"item\":\"https://docs.fish.audio/api-reference/endpoint/agent/create-tool\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fish.audio/api-reference/endpoint/agent/create-tool#apireference\",\"headline\":\"Create Tool\",\"name\":\"Create Tool\",\"description\":\"Create a workspace tool.\",\"url\":\"https://docs.fish.audio/api-reference/endpoint/agent/create-tool\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fish.audio/api-reference/endpoint/agent/create-tool#webpage\"},\"dateModified\":\"2026-08-05T15:51:33.652Z\",\"publisher\":{\"@id\":\"https://docs.fish.audio/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fish.audio#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Fish Audio\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Fish Audio","nav":{"global":null,"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/overview/capabilities"}]},{"tab":"Agents","pages":[{"title":"Agents","href":"/agents/overview"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/developer-guide/sdk-guide/quickstart"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"title":"Introduction","icon":"book","iconType":"solid","href":"/api-reference/introduction"},{"title":"Tracing \u0026 Performance Analysis","icon":"chart-line","iconType":"solid","href":"/api-reference/observability"},{"title":"Errors","icon":"triangle-exclamation","href":"/api-reference/errors"}]},{"group":"REST API","pages":[{"group":"Wallet","icon":"wallet","pages":[{"openapi":"get /wallet/{user_id}/api-credit","title":"Get API Credit","icon":"wallet","iconType":"solid","href":"/api-reference/endpoint/wallet/get-api-credit"},{"openapi":"get /wallet/{user_id}/package","title":"Get User Package","icon":"star","iconType":"solid","href":"/api-reference/endpoint/wallet/get-user-package"}]},{"group":"Voice Models","icon":"cube","pages":[{"openapi":"get /model","title":"List Models","icon":"list","iconType":"solid","href":"/api-reference/endpoint/model/list-models"},{"openapi":"post /model","title":"Create Model","icon":"circle-plus","iconType":"solid","href":"/api-reference/endpoint/model/create-model"},{"openapi":"get /model/{id}","title":"Get Model","icon":"circle-info","iconType":"solid","href":"/api-reference/endpoint/model/get-model"},{"openapi":"delete /model/{id}","title":"Delete Model","icon":"trash","iconType":"solid","href":"/api-reference/endpoint/model/delete-model"},{"openapi":"patch /model/{id}","title":"Update Model","icon":"pen-to-square","iconType":"solid","href":"/api-reference/endpoint/model/update-model"}]},{"group":"TTS (v1)","icon":"code","pages":[{"openapi":"post /v1/tts","title":"Text to Speech","icon":"comment-dots","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/text-to-speech"},{"openapi":"post /v1/tts/stream/with-timestamp","title":"Text to Speech Stream with Timestamps","icon":"waveform-lines","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/text-to-speech-stream-with-timestamps"},{"asyncapi":"api-reference/asyncapi.yml ttsLive","title":"WebSocket TTS Streaming","icon":"webhook","iconType":"solid","href":"/api-reference/endpoint/websocket/tts-live"},{"asyncapi":"api-reference/asyncapi.yml ttsLiveWithTimestamps","title":"WebSocket TTS with Timestamps","icon":"webhook","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/text-to-speech-live-with-timestamps"}]},{"group":"ASR (v1)","icon":"microphone","pages":[{"openapi":"post /v1/asr","title":"Speech to Text","icon":"microphone","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/speech-to-text"},{"asyncapi":"api-reference/asyncapi-asr-realtime.yml asrRealtime","title":"WebSocket Realtime Speech to Text","icon":"webhook","iconType":"solid","tag":"Preview","href":"/api-reference/endpoint/websocket/asr-realtime"}]},{"group":"Voice Design","icon":"wand-magic-sparkles","pages":[{"openapi":"post /v1/voice-design","title":"Voice Design","icon":"wand-magic-sparkles","iconType":"solid","href":"/api-reference/endpoint/openapi-v1/voice-design"}]}]},{"group":"Agents API","pages":[{"title":"Agents API Errors","icon":"triangle-exclamation","href":"/api-reference/agent-errors"},{"group":"Agents","icon":"robot","pages":[{"openapi":"get /v1/agent/agents","title":"List Agents","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/list-agents"},{"openapi":"post /v1/agent/agents","title":"Create Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/create-agent"},{"openapi":"get /v1/agent/agents/{agent_id}","title":"Get Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent"},{"openapi":"patch /v1/agent/agents/{agent_id}","title":"Update Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/update-agent"},{"openapi":"delete /v1/agent/agents/{agent_id}","title":"Delete Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/delete-agent"},{"openapi":"get /v1/agent/agents/{agent_id}/config","title":"Get Draft Config","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-draft-config"},{"openapi":"patch /v1/agent/agents/{agent_id}/config","title":"Update Draft Config","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/update-draft-config"},{"openapi":"post /v1/agent/agents/{agent_id}/publish","title":"Publish Agent","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/publish-agent"},{"openapi":"get /v1/agent/agents/{agent_id}/versions","title":"List Agent Versions","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/list-agent-versions"},{"openapi":"get /v1/agent/agents/{agent_id}/versions/{version_number}","title":"Get Agent Version","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent-version"},{"openapi":"get /v1/agent/agents/{agent_id}/widget","title":"Get Widget Config","icon":"robot","iconType":"solid","href":"/api-reference/endpoint/agent/get-widget-config"}]},{"group":"Sessions","icon":"headset","pages":[{"openapi":"post /v1/agent/sessions","title":"Create Agent Session","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/create-agent-session"},{"openapi":"get /v1/agent/sessions","title":"List Agent Sessions","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/list-agent-sessions"},{"openapi":"get /v1/agent/sessions/{session_id}","title":"Get Agent Session","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent-session"},{"openapi":"get /v1/agent/sessions/{session_id}/recording","title":"Get Agent Session Recording","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/get-agent-session-recording"},{"openapi":"post /v1/agent/sessions/{session_id}/end","title":"End Agent Session","icon":"headset","iconType":"solid","href":"/api-reference/endpoint/agent/end-agent-session"}]},{"group":"Tools","icon":"wrench","pages":[{"openapi":"get /v1/agent/tools","title":"List Tools","description":"List your team's tools, newest first.","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/list-tools"},{"openapi":"post /v1/agent/tools","title":"Create Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/create-tool"},{"openapi":"get /v1/agent/tools/{tool_id}","title":"Get Tool","description":"Fetch one tool's full definition.","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/get-tool"},{"openapi":"patch /v1/agent/tools/{tool_id}","title":"Update Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/update-tool"},{"openapi":"delete /v1/agent/tools/{tool_id}","title":"Delete Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/delete-tool"},{"openapi":"get /v1/agent/tools/{tool_id}/agents","title":"List Agents Using Tool","icon":"wrench","iconType":"solid","href":"/api-reference/endpoint/agent/list-agents-using-tool"}]},{"group":"Tests","icon":"flask","pages":[{"openapi":"get /v1/agent/tests","title":"List Tests","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-tests"},{"openapi":"post /v1/agent/tests","title":"Create Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/create-test"},{"openapi":"get /v1/agent/tests/{test_id}","title":"Get Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/get-test"},{"openapi":"patch /v1/agent/tests/{test_id}","title":"Update Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/update-test"},{"openapi":"delete /v1/agent/tests/{test_id}","title":"Delete Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/delete-test"},{"openapi":"put /v1/agent/agents/{agent_id}/tests/{test_id}","title":"Attach Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/attach-test"},{"openapi":"delete /v1/agent/agents/{agent_id}/tests/{test_id}","title":"Detach Test","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/detach-test"},{"openapi":"get /v1/agent/agents/{agent_id}/test-tools","title":"List Test Tools","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-test-tools"},{"openapi":"post /v1/agent/agents/{agent_id}/tests/run","title":"Run Tests","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/run-tests"},{"openapi":"get /v1/agent/agents/{agent_id}/test-batches","title":"List Test Batches","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-test-batches"},{"openapi":"get /v1/agent/agents/{agent_id}/test-batches/{batch_id}","title":"Get Test Batch","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/get-test-batch"},{"openapi":"get /v1/agent/test-runs","title":"List Test Runs","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/list-test-runs"},{"openapi":"get /v1/agent/test-runs/{run_id}","title":"Get Test Run","icon":"flask","iconType":"solid","href":"/api-reference/endpoint/agent/get-test-run"}]},{"group":"Knowledge Sources","icon":"book","pages":[{"openapi":"get /v1/agent/knowledge-sources","title":"List Knowledge Sources","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/list-knowledge-sources"},{"openapi":"post /v1/agent/knowledge-sources","title":"Create Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/create-knowledge-source"},{"openapi":"get /v1/agent/knowledge-sources/{source_id}","title":"Get Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/get-knowledge-source"},{"openapi":"patch /v1/agent/knowledge-sources/{source_id}","title":"Update Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/update-knowledge-source"},{"openapi":"delete /v1/agent/knowledge-sources/{source_id}","title":"Delete Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/delete-knowledge-source"},{"openapi":"get /v1/agent/knowledge-sources/{source_id}/agents","title":"List Agents Using Knowledge Source","icon":"book","iconType":"solid","href":"/api-reference/endpoint/agent/list-agents-using-knowledge-source"}]},{"group":"Phone Numbers","icon":"phone","pages":[{"openapi":"get /v1/agent/available-phone-numbers","title":"Search Available Phone Numbers","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/search-available-phone-numbers"},{"openapi":"get /v1/agent/phone-numbers","title":"List Phone Numbers","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/list-phone-numbers"},{"openapi":"post /v1/agent/phone-numbers","title":"Purchase Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/purchase-phone-number"},{"openapi":"get /v1/agent/phone-numbers/{phone_number_id}","title":"Get Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/get-phone-number"},{"openapi":"patch /v1/agent/phone-numbers/{phone_number_id}","title":"Update Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/update-phone-number"},{"openapi":"delete /v1/agent/phone-numbers/{phone_number_id}","title":"Release Phone Number","icon":"phone","iconType":"solid","href":"/api-reference/endpoint/agent/release-phone-number"}]},{"group":"Phone Calls","icon":"phone-arrow-up-right","pages":[{"openapi":"post /v1/agent/phone-calls","title":"Create Phone Call","icon":"phone-arrow-up-right","iconType":"solid","href":"/api-reference/endpoint/agent/create-phone-call"}]}]},{"group":"SDK Reference","pages":[{"group":"Python SDK","icon":"python","pages":[{"title":"Overview","icon":"python","href":"/api-reference/sdk/python/overview"},{"group":"Reference","icon":"book-open","pages":[{"title":null,"href":"/api-reference/sdk/python/client"},{"title":null,"href":"/api-reference/sdk/python/resources"},{"title":null,"href":"/api-reference/sdk/python/types"},{"title":null,"href":"/api-reference/sdk/python/core"},{"title":null,"href":"/api-reference/sdk/python/utils"},{"title":null,"href":"/api-reference/sdk/python/exceptions"}]},{"title":"Legacy","icon":"clock-rotate-left","href":"/archive/python-sdk-legacy/index"}]},{"group":"JavaScript SDK","icon":"js","pages":[{"title":"JavaScript SDK Reference","sidebarTitle":"Reference","icon":"book","href":"/api-reference/sdk/javascript/api-reference"}]}]}]}]},"title":"Create Tool - Fish Audio","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","Page-R3M_BF4L.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}