an HTTP endpoint an agent can use. before_call tools run at the start of every call and fill variables from their outputs; during_call tools are handed to the model as functions it can invoke mid-call (their llmParams become the function’s arguments). {token} inside url, params, headers and body is filled from the model’s arguments, then the account’s variables, then the context params. credentials are write-only: send auth.token / auth.password here, and the API only ever reports hasSecret. name must match ^[A-Za-z][A-Za-z0-9_]*$ and be unique on the account.
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"rumik silk tts","description":"text-to-speech and voice agents api by rumik ai.","colors":{"primary":"#1a1815","light":"#F97316","dark":"#1a1815"},"logo":{"light":"https://mintcdn.com/rumikai/Hkofz1smkiOyCZdZ/logo/light.svg?fit=max\u0026auto=format\u0026n=Hkofz1smkiOyCZdZ\u0026q=85\u0026s=5788d761fd16a214f3782de900b3db32","dark":"https://mintcdn.com/rumikai/Hkofz1smkiOyCZdZ/logo/icon-dark.png?fit=max\u0026auto=format\u0026n=Hkofz1smkiOyCZdZ\u0026q=85\u0026s=5a8023f118ef3334556b83f251079545"},"favicon":"https://mintcdn.com/rumikai/Hkofz1smkiOyCZdZ/favicon.svg?fit=max\u0026auto=format\u0026n=Hkofz1smkiOyCZdZ\u0026q=85\u0026s=e7c9e923e83de9af4f3e875f45f375d4","appearance":{"default":"light"},"background":{"color":{"light":"#ffffff","dark":"#1a1815"}},"navbar":{"links":[{"href":"https://playground.rumik.ai","label":"try on playground"},{"href":"https://playground.rumik.ai/api-keys","label":"get an api key"}]},"footer":{"socials":{"website":"https://rumik.ai"}},"integrations":{"gtm":{"tagId":"GTM-MHCV6S7Z"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"rumikai","hasAudioNarration":false,"actualSubdomain":"rumikai","customDomains":["docs.rumik.ai"],"gitSource":{"type":"github","owner":"ira-rumik","repo":"api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"60c12872-fa02-41d9-b194-fe5a2a458788","liveDeploymentHistoryId":"6ac7a32036e1951fbe929141","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac7a32036e1951fbe929141"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ac7a32036e1951fbe929141","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"api reference","count":64},{"language":"default","tag":"documentation","count":25},{"language":"default","tag":"agents","count":13},{"language":"default","tag":"campaigns","count":10},{"language":"default","tag":"voice agents","count":8},{"language":"default","tag":"agents api","count":8},{"language":"default","tag":"phone numbers","count":8},{"language":"default","tag":"text-to-speech","count":7},{"language":"default","tag":"campaign audiences","count":7},{"language":"default","tag":"sip trunks","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root:not(.dark) nav#sidebar{background-color:#fff8e1}nav#sidebar a[href$=\"/prompting-muga\"] span{font-size:0;line-height:1.4}nav#sidebar a[href$=\"/prompting-muga\"] span::after{content:\"silk muga 1\";font-size:0.875rem}nav#sidebar a[href$=\"/prompting-mulberry\"] span{font-size:0;line-height:1.4}nav#sidebar a[href$=\"/prompting-mulberry\"] span::after{content:\"silk mulberry 1.5\";font-size:0.875rem}:root:not(.dark) #content-container a.link:not(.nav-tabs-item){color:rgba(0, 0, 0, 0.5)}:root:not(.dark) #content-container a.link:not(.nav-tabs-item):hover{color:rgba(0, 0, 0, 0.8)}:root:not(.dark) #content-container svg.bg-primary{background-color:rgba(0, 0, 0, 0.5)}:root:not(.dark) #content-container .eyebrow{color:rgba(0, 0, 0, 0.5)}nav#sidebar>ul{background-color:transparent;border-top:1px solid rgba(0, 0, 0, 0.06)}.dark nav#sidebar>ul{border-top-color:rgba(255, 255, 255, 0.08)}#table-of-contents-layout span{text-transform:lowercase}#content-container :not(pre):not(td)>code:not(.block){white-space:nowrap}"}],"page":{"pagePath":"api-reference/tools/create-a-tool","slug":"/api-reference/tools/create-a-tool","pageMetadata":{"title":"create a tool","description":"an HTTP endpoint an agent can use. `before_call` tools run at the start of every call and fill variables from their `outputs`; `during_call` tools are handed to the model as functions it can invoke mid-call (their `llmParams` become the function's arguments). `{token}` inside `url`, `params`, `headers` and `body` is filled from the model's arguments, then the account's variables, then the context params. credentials are write-only: send `auth.token` / `auth.password` here, and the API only ever reports `hasSecret`. `name` must match `^[A-Za-z][A-Za-z0-9_]*$` and be unique on the account.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/tools","href":"/api-reference/tools/create-a-tool","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"an HTTP endpoint an agent can use. \", _jsx(_components.code, {\n children: \"before_call\"\n }), \" tools run at the start of every call and fill variables from their \", _jsx(_components.code, {\n children: \"outputs\"\n }), \"; \", _jsx(_components.code, {\n children: \"during_call\"\n }), \" tools are handed to the model as functions it can invoke mid-call (their \", _jsx(_components.code, {\n children: \"llmParams\"\n }), \" become the function’s arguments). \", _jsx(_components.code, {\n children: \"{token}\"\n }), \" inside \", _jsx(_components.code, {\n children: \"url\"\n }), \", \", _jsx(_components.code, {\n children: \"params\"\n }), \", \", _jsx(_components.code, {\n children: \"headers\"\n }), \" and \", _jsx(_components.code, {\n children: \"body\"\n }), \" is filled from the model’s arguments, then the account’s variables, then the context params. credentials are write-only: send \", _jsx(_components.code, {\n children: \"auth.token\"\n }), \" / \", _jsx(_components.code, {\n children: \"auth.password\"\n }), \" here, and the API only ever reports \", _jsx(_components.code, {\n children: \"hasSecret\"\n }), \". \", _jsx(_components.code, {\n children: \"name\"\n }), \" must match \", _jsx(_components.code, {\n children: \"^[A-Za-z][A-Za-z0-9_]*$\"\n }), \" and be unique on the account.\"]\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":{"title":"create a tool","description":"an HTTP endpoint an agent can use. `before_call` tools run at the start of every call and fill variables from their `outputs`; `during_call` tools are handed to the model as functions it can invoke mid-call (their `llmParams` become the function's arguments). `{token}` inside `url`, `params`, `headers` and `body` is filled from the model's arguments, then the account's variables, then the context params. credentials are write-only: send `auth.token` / `auth.password` here, and the API only ever reports `hasSecret`. `name` must match `^[A-Za-z][A-Za-z0-9_]*$` and be unique on the account.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/tools","href":"/api-reference/tools/create-a-tool","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createTool","summary":"create a tool","description":"an HTTP endpoint an agent can use. `before_call` tools run at the start of every call and fill variables from their `outputs`; `during_call` tools are handed to the model as functions it can invoke mid-call (their `llmParams` become the function's arguments). `{token}` inside `url`, `params`, `headers` and `body` is filled from the model's arguments, then the account's variables, then the context params. credentials are write-only: send `auth.token` / `auth.password` here, and the API only ever reports `hasSecret`. `name` must match `^[A-Za-z][A-Za-z0-9_]*$` and be unique on the account.","tags":["tools"],"requestBody":"35ac3b19-14ae-4bd6-b903-70746da9a2ad","responses":{"201":"aaca727e-3fa9-44ac-a522-85b799e2a132","401":"d94598c8-d3f4-4d9c-813a-a7203554e244","403":"d20c911f-9854-4831-8e54-903b57005bd6","409":"dda78495-5c23-45f8-8439-481756cbcd25","422":"da119ac1-5af4-4fa3-98c0-157eea577c4b","429":"18dfc9e6-b803-4b0c-808b-e272dc14b27d","503":"8f959381-289c-4e28-9fd2-12e9901f4d6f"},"method":"post","type":"path","servers":["edfca779-1059-49d1-9af9-655c0ea1c694"],"security":["75d29e17-6f55-405d-bd53-c001c54b4f18"],"path":"/v1/tools","baseUrlOptions":["https://silk-api.rumik.ai"],"title":"create a tool","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string","maxLength":64,"description":"`^[A-Za-z][A-Za-z0-9_]*$`, up to 64 characters, unique on the account. prompts attach the tool as `{{name}}`.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"description":{"type":"string","maxLength":1000,"minLength":1,"description":"what the tool does — for a `during_call` tool this is what the model reads to decide when to call it.","isRequired":true,"uniqueKey":"description","typeLabel":"string"},"kind":{"type":"string","enum":["before_call","during_call"],"title":"AgentToolKind","description":"`before_call` (runs at call start, feeds variables) or `during_call` (a function the model can invoke).","isRequired":true,"uniqueKey":"kind","typeLabel":"enum\u003cstring>"},"config":{"properties":{"action":{"type":"string","enum":["get","post","perform"],"title":"AgentToolAction","description":"`get` / `post` make an HTTP request; `perform` runs a built-in `performedAction` instead.","default":"get","uniqueKey":"config.action","typeLabel":"enum\u003cstring>"},"performedAction":{"type":"string","enum":["end_call","transfer_call"],"title":"AgentToolPerformedAction","description":"for `action: perform` — `end_call` or `transfer_call`.","default":"end_call","uniqueKey":"config.performedAction","typeLabel":"enum\u003cstring>"},"curl":{"type":"string","maxLength":16000,"default":"","description":"free-form note (the dashboard's curl paste); not executed.","uniqueKey":"config.curl","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"title":"AgentToolHttpMethod","default":"GET","description":"`GET` or `POST` (others are coerced to `GET`).","uniqueKey":"config.method","typeLabel":"enum\u003cstring>"},"url":{"type":"string","maxLength":2048,"default":"","description":"`http(s)://…`. may contain `{tokens}`.","uniqueKey":"config.url","typeLabel":"string"},"headers":{"items":{"properties":{"name":{"type":"string","maxLength":128,"isRequired":true,"uniqueKey":"config.headers.items.[INDEX].name","typeLabel":"string"},"value":{"type":"string","maxLength":2048,"default":"","uniqueKey":"config.headers.items.[INDEX].value","typeLabel":"string"}},"type":"object","required":["name"],"title":"ToolKeyValue","uniqueKey":"config.headers.items.[INDEX]","typeLabel":"ToolKeyValue · object"},"type":"array","maxItems":30,"description":"request headers; values may contain `{tokens}`. authorization-style headers are stripped — use `auth` instead.","uniqueKey":"config.headers","typeLabel":"ToolKeyValue · object[]"},"params":{"items":{"properties":{"name":{"type":"string","maxLength":128,"isRequired":true,"uniqueKey":"config.params.items.[INDEX].name","typeLabel":"string"},"value":{"type":"string","maxLength":2048,"default":"","uniqueKey":"config.params.items.[INDEX].value","typeLabel":"string"}},"type":"object","required":["name"],"title":"ToolKeyValue","uniqueKey":"config.params.items.[INDEX]","typeLabel":"ToolKeyValue · object"},"type":"array","maxItems":30,"description":"query parameters; values may contain `{tokens}`.","uniqueKey":"config.params","typeLabel":"ToolKeyValue · object[]"},"body":{"type":"string","maxLength":16000,"default":"","description":"request body for `POST`; may contain `{tokens}`.","uniqueKey":"config.body","typeLabel":"string"},"timeoutMs":{"type":"integer","maximum":30000,"minimum":100,"default":5000,"description":"100–30000, default 5000.","uniqueKey":"config.timeoutMs","typeLabel":"integer"},"waitForResponse":{"type":"boolean","default":true,"description":"for `during_call` tools: whether the model waits for the result before speaking.","uniqueKey":"config.waitForResponse","typeLabel":"boolean"},"auth":{"properties":{"type":{"type":"string","enum":["none","bearer","api_key","basic"],"title":"AgentToolAuthType","default":"none","description":"`none`, `bearer` (`Authorization: Bearer {token}`), `api_key` (`{headerName}: {token}`) or `basic` (`username` / `password`).","uniqueKey":"config.auth.type","typeLabel":"enum\u003cstring>"},"token":{"oneOf":[{"type":"string","description":"the secret for `bearer` / `api_key`. on update: omit to keep the stored one, empty string to clear.","maxLength":4096,"uniqueKey":"config.auth.token.oneOf.0","typeLabel":"string"},{"type":"null","description":"the secret for `bearer` / `api_key`. on update: omit to keep the stored one, empty string to clear.","uniqueKey":"config.auth.token.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.auth.token","typeLabel":"string | null"},"headerName":{"type":"string","maxLength":128,"default":"X-API-Key","description":"the header for `api_key`; default `X-API-Key`.","uniqueKey":"config.auth.headerName","typeLabel":"string"},"username":{"type":"string","maxLength":2048,"default":"","description":"for `basic`.","uniqueKey":"config.auth.username","typeLabel":"string"},"password":{"oneOf":[{"type":"string","description":"for `basic`. write-only.","maxLength":4096,"uniqueKey":"config.auth.password.oneOf.0","typeLabel":"string"},{"type":"null","description":"for `basic`. write-only.","uniqueKey":"config.auth.password.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.auth.password","typeLabel":"string | null"}},"type":"object","title":"ToolAuthInput","description":"the credential, write-only: `{type: none|bearer|api_key|basic, token, headerName, username, password}`.","uniqueKey":"config.auth","typeLabel":"ToolAuthInput · object"},"llmParams":{"items":{"properties":{"name":{"type":"string","maxLength":64,"isRequired":true,"uniqueKey":"config.llmParams.items.[INDEX].name","typeLabel":"string"},"id":{"type":"string","maxLength":64,"default":"","uniqueKey":"config.llmParams.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","enum":["string","number","integer","boolean"],"title":"AgentToolParamType","description":"JSON-Schema scalar types a model-supplied argument can be declared as.","default":"string","uniqueKey":"config.llmParams.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"default":"","uniqueKey":"config.llmParams.items.[INDEX].description","typeLabel":"string"},"required":{"type":"boolean","default":true,"uniqueKey":"config.llmParams.items.[INDEX].required","typeLabel":"boolean"}},"type":"object","required":["name"],"title":"ToolLlmParam","uniqueKey":"config.llmParams.items.[INDEX]","typeLabel":"ToolLlmParam · object"},"type":"array","maxItems":20,"description":"for `during_call` tools: the arguments the model supplies. each becomes a `{name}` token.","uniqueKey":"config.llmParams","typeLabel":"ToolLlmParam · object[]"},"outputs":{"items":{"properties":{"name":{"type":"string","maxLength":65,"default":"","uniqueKey":"config.outputs.items.[INDEX].name","typeLabel":"string"},"path":{"type":"string","maxLength":256,"default":"","uniqueKey":"config.outputs.items.[INDEX].path","typeLabel":"string"}},"type":"object","title":"ToolOutput","description":"One value the tool exposes: ``name`` is the JSON key found anywhere in\nthe response (written ``$name`` in the dashboard); ``path`` optionally pins\nit to a dotted location instead. A blank name is a row left empty.","uniqueKey":"config.outputs.items.[INDEX]","typeLabel":"ToolOutput · object"},"type":"array","maxItems":20,"description":"values the tool exposes: each `name` is a JSON key looked for anywhere in the response; `path` pins it to one dotted location instead. variables read them via `toolOutput`.","uniqueKey":"config.outputs","typeLabel":"ToolOutput · object[]"},"output":{"oneOf":[{"type":"object","title":"ToolLegacyOutput","description":"The single-output shape older clients and rows use (``type`` = path,\n``data`` = ``$variable``). Accepted on input and folded into ``outputs``.","properties":{"type":{"type":"string","maxLength":256,"default":"","uniqueKey":"config.output.oneOf.0.type","typeLabel":"string"},"data":{"type":"string","maxLength":65,"default":"","uniqueKey":"config.output.oneOf.0.data","typeLabel":"string"}},"uniqueKey":"config.output.oneOf.0","typeLabel":"ToolLegacyOutput · object"},{"type":"null","uniqueKey":"config.output.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.output","typeLabel":"ToolLegacyOutput · object | null"}},"type":"object","title":"ToolConfigInput","description":"the HTTP call to make.","uniqueKey":"config","typeLabel":"ToolConfigInput · object"}},"additionalProperties":false,"type":"object","required":["name","description","kind"],"title":"ToolCreateRequest","uniqueKey":"","typeLabel":"ToolCreateRequest · object"},"examples":{"default":{"title":"default","value":{"name":"lookup_account","description":"looks the caller's account up by phone number","kind":"before_call","config":{"action":"get","method":"GET","url":"https://api.example.com/v1/accounts","params":[{"name":"phone","value":"{phone_number}"}],"headers":[{"name":"Accept","value":"application/json"}],"auth":{"type":"bearer","token":"sk-…"},"timeoutMs":3000,"outputs":[{"name":"firstName","path":""},{"name":"plan","path":"account.plan"}]}}}},"exampleType":"examples"}},"required":true,"exampleType":"examples"},"responses":{"aaca727e-3fa9-44ac-a522-85b799e2a132":{"description":"created.","content":{"application/json":{"schema":{"properties":{"id":{"type":"string","description":"the tool's id (`default-…` for built-ins).","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"description":{"type":"string","isRequired":true,"uniqueKey":"description","typeLabel":"string"},"kind":{"type":"string","enum":["before_call","during_call"],"title":"AgentToolKind","description":"When in a call's life the agent reaches for the tool.","isRequired":true,"uniqueKey":"kind","typeLabel":"enum\u003cstring>"},"config":{"properties":{"action":{"type":"string","enum":["get","post","perform"],"title":"AgentToolAction","description":"What the tool does when it runs. ``perform`` is a platform action.","isRequired":true,"uniqueKey":"config.action","typeLabel":"enum\u003cstring>"},"performedAction":{"type":"string","enum":["end_call","transfer_call"],"title":"AgentToolPerformedAction","description":"The platform actions a ``perform`` tool can carry out.","isRequired":true,"uniqueKey":"config.performedAction","typeLabel":"enum\u003cstring>"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"title":"AgentToolHttpMethod","isRequired":true,"uniqueKey":"config.method","typeLabel":"enum\u003cstring>"},"url":{"type":"string","isRequired":true,"uniqueKey":"config.url","typeLabel":"string"},"headers":{"items":{"properties":{"name":{"type":"string","maxLength":128,"isRequired":true,"uniqueKey":"config.headers.items.[INDEX].name","typeLabel":"string"},"value":{"type":"string","maxLength":2048,"default":"","uniqueKey":"config.headers.items.[INDEX].value","typeLabel":"string"}},"type":"object","required":["name"],"title":"ToolKeyValue","uniqueKey":"config.headers.items.[INDEX]","typeLabel":"ToolKeyValue · object"},"type":"array","isRequired":true,"uniqueKey":"config.headers","typeLabel":"ToolKeyValue · object[]"},"params":{"items":{"properties":{"name":{"type":"string","maxLength":128,"isRequired":true,"uniqueKey":"config.params.items.[INDEX].name","typeLabel":"string"},"value":{"type":"string","maxLength":2048,"default":"","uniqueKey":"config.params.items.[INDEX].value","typeLabel":"string"}},"type":"object","required":["name"],"title":"ToolKeyValue","uniqueKey":"config.params.items.[INDEX]","typeLabel":"ToolKeyValue · object"},"type":"array","isRequired":true,"uniqueKey":"config.params","typeLabel":"ToolKeyValue · object[]"},"body":{"type":"string","isRequired":true,"uniqueKey":"config.body","typeLabel":"string"},"timeoutMs":{"type":"integer","isRequired":true,"uniqueKey":"config.timeoutMs","typeLabel":"integer"},"waitForResponse":{"type":"boolean","isRequired":true,"uniqueKey":"config.waitForResponse","typeLabel":"boolean"},"auth":{"properties":{"type":{"type":"string","enum":["none","bearer","api_key","basic"],"title":"AgentToolAuthType","default":"none","uniqueKey":"config.auth.type","typeLabel":"enum\u003cstring>"},"headerName":{"type":"string","default":"X-API-Key","uniqueKey":"config.auth.headerName","typeLabel":"string"},"username":{"type":"string","default":"","uniqueKey":"config.auth.username","typeLabel":"string"},"hasSecret":{"type":"boolean","default":false,"description":"whether a credential is stored. the credential itself is never returned.","uniqueKey":"config.auth.hasSecret","typeLabel":"boolean"}},"type":"object","title":"ToolAuth","description":"Read side: never the secret, only whether one is stored.\n\nServer-constructed, so the camelCase wire names are ``serialization_alias``\n(the constructor keeps the real field names) — as the other read models do.","isRequired":true,"uniqueKey":"config.auth","typeLabel":"ToolAuth · object"},"llmParams":{"items":{"properties":{"name":{"type":"string","maxLength":64,"isRequired":true,"uniqueKey":"config.llmParams.items.[INDEX].name","typeLabel":"string"},"id":{"type":"string","maxLength":64,"default":"","uniqueKey":"config.llmParams.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","enum":["string","number","integer","boolean"],"title":"AgentToolParamType","description":"JSON-Schema scalar types a model-supplied argument can be declared as.","default":"string","uniqueKey":"config.llmParams.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":500,"default":"","uniqueKey":"config.llmParams.items.[INDEX].description","typeLabel":"string"},"required":{"type":"boolean","default":true,"uniqueKey":"config.llmParams.items.[INDEX].required","typeLabel":"boolean"}},"type":"object","required":["name"],"title":"ToolLlmParam","uniqueKey":"config.llmParams.items.[INDEX]","typeLabel":"ToolLlmParam · object"},"type":"array","isRequired":true,"uniqueKey":"config.llmParams","typeLabel":"ToolLlmParam · object[]"},"outputs":{"items":{"properties":{"name":{"type":"string","maxLength":65,"default":"","uniqueKey":"config.outputs.items.[INDEX].name","typeLabel":"string"},"path":{"type":"string","maxLength":256,"default":"","uniqueKey":"config.outputs.items.[INDEX].path","typeLabel":"string"}},"type":"object","title":"ToolOutput","description":"One value the tool exposes: ``name`` is the JSON key found anywhere in\nthe response (written ``$name`` in the dashboard); ``path`` optionally pins\nit to a dotted location instead. A blank name is a row left empty.","uniqueKey":"config.outputs.items.[INDEX]","typeLabel":"ToolOutput · object"},"type":"array","isRequired":true,"uniqueKey":"config.outputs","typeLabel":"ToolOutput · object[]"},"curl":{"type":"string","default":"","uniqueKey":"config.curl","typeLabel":"string"}},"type":"object","required":["action","performedAction","method","url","headers","params","body","timeoutMs","waitForResponse","auth","llmParams","outputs"],"title":"ToolConfig","description":"Server-constructed (``serialization_alias``), see :class:`AgentToolAuthView`.","isRequired":true,"uniqueKey":"config","typeLabel":"ToolConfig · object"},"isDefault":{"type":"boolean","default":false,"description":"true for the platform's built-in tools, which cannot be edited or deleted.","uniqueKey":"isDefault","typeLabel":"boolean"},"createdAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","uniqueKey":"createdAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time> | null"},"updatedAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","uniqueKey":"updatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"updatedAt","typeLabel":"string\u003cdate-time> | null"}},"type":"object","required":["id","name","description","kind","config"],"title":"Tool","description":"a tool as stored. the credential is never returned.","uniqueKey":"","typeLabel":"Tool · object"},"examples":{"default":{"title":"default","value":{"id":"019f8e32-4d60-7f71-ac8d-9e0f1a2b3c4d","name":"lookup_account","description":"looks the caller's account up by phone number","kind":"before_call","config":{"action":"get","performedAction":"end_call","curl":"","method":"GET","url":"https://api.example.com/v1/accounts","headers":[{"name":"Accept","value":"application/json"}],"params":[{"name":"phone","value":"{phone_number}"}],"body":"","timeoutMs":3000,"waitForResponse":true,"auth":{"type":"bearer","headerName":"X-API-Key","username":"","hasSecret":true},"llmParams":[],"outputs":[{"name":"firstName","path":""},{"name":"plan","path":"account.plan"}]},"isDefault":false,"createdAt":"2026-09-11T10:00:00Z","updatedAt":"2026-09-11T10:00:00Z"}}},"exampleType":"examples"}},"exampleType":"examples"},"d94598c8-d3f4-4d9c-813a-a7203554e244":{"description":"`unauthorized` — key missing, malformed, unknown, revoked or expired.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"human-readable error message.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"machine-readable error code.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"unauthorized":{"title":"unauthorized","value":{"error":"Invalid API key","code":"unauthorized"}}},"exampleType":"examples"}},"exampleType":"examples"},"d20c911f-9854-4831-8e54-903b57005bd6":{"description":"`forbidden_scope` — the key was created without the `agent` scope.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"human-readable error message.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"machine-readable error code.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"forbidden_scope":{"title":"forbidden_scope","value":{"error":"This API key lacks the 'agent' scope","code":"forbidden_scope"}}},"exampleType":"examples"}},"exampleType":"examples"},"dda78495-5c23-45f8-8439-481756cbcd25":{"description":"`agent_tool_name_taken` — another tool already has this name (case-insensitive). `agent_tool_name_reserved` — the name belongs to a built-in tool. `agent_tool_limit_exceeded` — the account already has 50 tools.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"human-readable error message.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"machine-readable error code.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"agent_tool_name_taken":{"title":"agent_tool_name_taken","value":{"error":"A tool with this name already exists","code":"agent_tool_name_taken"}},"agent_tool_name_reserved":{"title":"agent_tool_name_reserved","value":{"error":"This name belongs to a built-in tool","code":"agent_tool_name_reserved"}},"agent_tool_limit_exceeded":{"title":"agent_tool_limit_exceeded","value":{"error":"You've reached the limit of tools for this account","code":"agent_tool_limit_exceeded"}}},"exampleType":"examples"}},"exampleType":"examples"},"da119ac1-5af4-4fa3-98c0-157eea577c4b":{"description":"`agent_tool_invalid` — the config is not runnable — for example an HTTP tool with no `http(s)://` URL. `invalid_request` — a field is missing or malformed. `details` lists every failing field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"human-readable error message.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"machine-readable error code.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"agent_tool_invalid":{"title":"agent_tool_invalid","value":{"error":"The tool configuration is invalid","code":"agent_tool_invalid"}},"invalid_request":{"title":"invalid_request","value":{"error":"body.toNumber: must be an E.164 phone number, e.g. +14155551234","code":"invalid_request","details":[{"loc":"body.toNumber","message":"must be an E.164 phone number, e.g. +14155551234"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"18dfc9e6-b803-4b0c-808b-e272dc14b27d":{"description":"`rate_limited` — the key's per-minute budget is spent. `Retry-After` says how long to wait; the body carries `limit` and `current`.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"human-readable error message.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"machine-readable error code.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"rate_limited":{"title":"rate_limited","value":{"error":"Rate limit exceeded","code":"rate_limited","limit":100,"current":101}}},"exampleType":"examples"}},"headers":{"Retry-After":{"description":"seconds to wait before retrying (per-key rate limit only).","schema":{"type":"integer"}}},"exampleType":"examples"},"8f959381-289c-4e28-9fd2-12e9901f4d6f":{"description":"`agent_tool_secrets_not_configured` — credentials cannot be stored on this deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"human-readable error message.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"machine-readable error code.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"agent_tool_secrets_not_configured":{"title":"agent_tool_secrets_not_configured","value":{"error":"Tool credentials cannot be stored on this server","code":"agent_tool_secrets_not_configured"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"75d29e17-6f55-405d-bd53-c001c54b4f18":{"bearerAuth":{"type":"http","scheme":"bearer","description":"your rumik api key, e.g. `rk_live_...`. create one in the rumik dashboard.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"edfca779-1059-49d1-9af9-655c0ea1c694":{"url":"https://silk-api.rumik.ai","description":"production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"your rumik api key, e.g. `rk_live_...`. create one in the rumik dashboard.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"your rumik api key, e.g. `rk_live_...`. create one in the rumik dashboard.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"rumikai","siteName":"rumik silk tts","title":"create a tool - rumik silk tts","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-08T14:05:26.101Z","originalFileLocation":"api-reference/tools/create-a-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=\"light\"}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=\"an HTTP endpoint an agent can use. before_call tools run at the start of every call and fill variables from their outputs; during_call tools are handed to the model as functions it can invoke mid-call (their llmParams become the function\u0026#x27;s arguments). {token} inside url, params, headers and body is filled from the model\u0026#x27;s arguments, then the account\u0026#x27;s variables, then the context params. credentials are write-only: send auth.token / auth.password here, and the API only ever reports hasSecret. name must match ^A-Za-z*$ and be unique on the account.\">\u003cmeta data-mint-head name=\"application-name\" content=\"rumik silk tts\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/rumikai/vDSpHLyd-SIvwRcd/_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/rumikai/vDSpHLyd-SIvwRcd/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/rumikai/vDSpHLyd-SIvwRcd/_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/rumikai/vDSpHLyd-SIvwRcd/_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/rumikai/vDSpHLyd-SIvwRcd/_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/rumikai/vDSpHLyd-SIvwRcd/_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/rumikai/vDSpHLyd-SIvwRcd/_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/rumikai/vDSpHLyd-SIvwRcd/_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/rumikai/vDSpHLyd-SIvwRcd/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"create a tool - rumik silk tts\">\u003cmeta data-mint-head property=\"og:description\" content=\"an HTTP endpoint an agent can use. before_call tools run at the start of every call and fill variables from their outputs; during_call tools are handed to the model as functions it can invoke mid-call (their llmParams become the function\u0026#x27;s arguments). {token} inside url, params, headers and body is filled from the model\u0026#x27;s arguments, then the account\u0026#x27;s variables, then the context params. credentials are write-only: send auth.token / auth.password here, and the API only ever reports hasSecret. name must match ^A-Za-z*$ and be unique on the account.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"rumik silk tts\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.rumik.ai/api-reference/tools/create-a-tool\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://rumikai.mintlify.app/_mintlify/api/og/v2?division=tools\u0026amp;title=create+a+tool\u0026amp;description=an+HTTP+endpoint+an+agent+can+use.+%60before_call%60+tools+run+at+the+start+of+every+call+and+fill+variables+from+their+%60outputs%60%3B+%60during_call%60+tools+are+handed+to\u0026amp;theme=bf0a9de5ab3f43dea1c7542c\u0026amp;signature=d74b82edc35e8a354840962e08a2c8e3afbe551f45417791acc22603d573d48d\">\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 a tool - rumik silk tts\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"an HTTP endpoint an agent can use. before_call tools run at the start of every call and fill variables from their outputs; during_call tools are handed to the model as functions it can invoke mid-call (their llmParams become the function\u0026#x27;s arguments). {token} inside url, params, headers and body is filled from the model\u0026#x27;s arguments, then the account\u0026#x27;s variables, then the context params. credentials are write-only: send auth.token / auth.password here, and the API only ever reports hasSecret. name must match ^A-Za-z*$ and be unique on the account.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://rumikai.mintlify.app/_mintlify/api/og/v2?division=tools\u0026amp;title=create+a+tool\u0026amp;description=an+HTTP+endpoint+an+agent+can+use.+%60before_call%60+tools+run+at+the+start+of+every+call+and+fill+variables+from+their+%60outputs%60%3B+%60during_call%60+tools+are+handed+to\u0026amp;theme=bf0a9de5ab3f43dea1c7542c\u0026amp;signature=d74b82edc35e8a354840962e08a2c8e3afbe551f45417791acc22603d573d48d\">\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/rumikai/vDSpHLyd-SIvwRcd/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"rumik silk tts\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1a1815\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.rumik.ai/api-reference/tools/create-a-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-a-tool.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.rumik.ai/#organization\",\"name\":\"rumik silk tts\",\"url\":\"https://docs.rumik.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/rumikai/Hkofz1smkiOyCZdZ/logo/light.svg?fit=max\u0026auto=format\u0026n=Hkofz1smkiOyCZdZ\u0026q=85\u0026s=5788d761fd16a214f3782de900b3db32\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.rumik.ai#website\",\"name\":\"rumik silk tts\",\"url\":\"https://docs.rumik.ai\",\"publisher\":{\"@id\":\"https://docs.rumik.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.rumik.ai/api-reference/tools/create-a-tool#webpage\",\"url\":\"https://docs.rumik.ai/api-reference/tools/create-a-tool\",\"name\":\"create a tool\",\"description\":\"an HTTP endpoint an agent can use. before_call tools run at the start of every call and fill variables from their outputs; during_call tools are handed to the model as functions it can invoke mid-call (their llmParams become the function's arguments). {token} inside url, params, headers and body is filled from the model's arguments, then the account's variables, then the context params. credentials are write-only: send auth.token / auth.password here, and the API only ever reports hasSecret. name must match ^A-Za-z*$ and be unique on the account.\",\"dateModified\":\"2026-10-08T14:05:26.101Z\",\"isPartOf\":{\"@id\":\"https://docs.rumik.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.rumik.ai/api-reference/tools/create-a-tool#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.rumik.ai/api-reference/tools/create-a-tool#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"api reference\",\"item\":\"https://docs.rumik.ai/api-reference/speech/synthesize-speech\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"tools\",\"item\":\"https://docs.rumik.ai/api-reference/tools/list-tools\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"create a tool\",\"item\":\"https://docs.rumik.ai/api-reference/tools/create-a-tool\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.rumik.ai/api-reference/tools/create-a-tool#apireference\",\"headline\":\"create a tool\",\"name\":\"create a tool\",\"description\":\"an HTTP endpoint an agent can use. before_call tools run at the start of every call and fill variables from their outputs; during_call tools are handed to the model as functions it can invoke mid-call (their llmParams become the function's arguments). {token} inside url, params, headers and body is filled from the model's arguments, then the account's variables, then the context params. credentials are write-only: send auth.token / auth.password here, and the API only ever reports hasSecret. name must match ^A-Za-z*$ and be unique on the account.\",\"url\":\"https://docs.rumik.ai/api-reference/tools/create-a-tool\",\"mainEntityOfPage\":{\"@id\":\"https://docs.rumik.ai/api-reference/tools/create-a-tool#webpage\"},\"dateModified\":\"2026-10-08T14:05:26.101Z\",\"publisher\":{\"@id\":\"https://docs.rumik.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.rumik.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"rumik silk tts\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"rumik silk tts","nav":{"global":null,"groups":[{"group":"documentation","pages":[{"group":"get started","pages":[{"title":"overview","href":"/index"},{"title":"quickstart","href":"/quickstart"},{"group":"pricing","pages":[{"title":"pay as you go","href":"/pricing/pay-as-you-go"},{"title":"unlimited","href":"/pricing/unlimited"}]}]},{"group":"text-to-speech","pages":[{"title":"silk muga 1","href":"/muga"},{"title":"silk mulberry 1.5","href":"/mulberry"},{"group":"prompting guide","pages":[{"title":"prompting silk muga 1","sidebarTitle":"prompting for muga 1","href":"/prompting-muga"},{"title":"prompting silk mulberry 1.5","sidebarTitle":"prompting for mulberry 1.5","href":"/prompting-mulberry"},{"title":"numbers, ids \u0026 dates","sidebarTitle":"numbers, ids \u0026 dates","href":"/normalization"}]},{"title":"audio formats","href":"/audio-formats"},{"title":"stream in real time","href":"/streaming"}]},{"group":"voice agents","pages":[{"title":"voice agents","href":"/voice-agents"},{"title":"web call","href":"/web-call"},{"title":"register a call","href":"/register-call"},{"title":"realtime socket","href":"/realtime-agent"},{"title":"limits","href":"/agent-limits"}]},{"group":"vision agents","pages":[{"title":"vision agents","href":"/vision-agents"}]},{"group":"agents api","pages":[{"title":"agents api","href":"/agents-api"},{"title":"manage agents","href":"/manage-agents"},{"title":"voices and languages","href":"/voices"},{"title":"variables and tools","href":"/variables-and-tools"},{"title":"outbound calls","href":"/outbound-calls"},{"title":"phone numbers","href":"/phone-numbers"},{"title":"sip trunks","href":"/sip-trunks"},{"title":"campaigns","href":"/campaigns"}]}]},{"group":"sdk","pages":[{"group":"python sdk","pages":[{"title":"python sdk","sidebarTitle":"introduction","href":"/sdk/introduction"},{"title":"quickstart","sidebarTitle":"quickstart","href":"/sdk/quickstart"},{"title":"synthesis","sidebarTitle":"synthesis","href":"/sdk/synthesis"},{"title":"errors and configuration","sidebarTitle":"errors \u0026 config","href":"/sdk/errors"},{"title":"sdk reference","sidebarTitle":"api reference","href":"/sdk/api-reference"}]}]},{"group":"integrations","pages":[{"title":"build a voice agent with pipecat","sidebarTitle":"pipecat","href":"/pipecat"},{"title":"build a voice agent with livekit","sidebarTitle":"livekit","href":"/livekit"},{"title":"coding-agent skill","href":"/agent-skill"}]},{"group":"cookbook","pages":[{"title":"cookbook","sidebarTitle":"overview","href":"/cookbook/index"},{"title":"build a voice agent with pipecat","sidebarTitle":"voice agent · pipecat","href":"/cookbook/voice-agent-pipecat"},{"title":"build a voice agent with livekit","sidebarTitle":"voice agent · livekit","href":"/cookbook/voice-agent-livekit"},{"title":"pipecat pipeline over livekit transport","sidebarTitle":"pipecat + livekit transport","href":"/cookbook/voice-agent-pipecat-livekit"}]},{"group":"api reference","pages":[{"group":"speech","pages":[{"title":"synthesize speech","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/tts","href":"/api-reference/speech/synthesize-speech"},{"title":"synthesize speech as json","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/tts/json","href":"/api-reference/speech/synthesize-speech-as-json"},{"title":"create a streaming session","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/tts/ws-connect","href":"/api-reference/speech/create-a-streaming-session"}]},{"group":"voice agents","pages":[{"title":"start a web call","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webcall","href":"/api-reference/voice-agents/start-a-web-call"},{"title":"register a call","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/register-call","href":"/api-reference/voice-agents/register-a-call"},{"title":"get concurrency limits","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/agent/limits","href":"/api-reference/voice-agents/get-concurrency-limits"}]},{"group":"agents","pages":[{"title":"list agents","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/agents","href":"/api-reference/agents/list-agents"},{"title":"create an agent","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/agents","href":"/api-reference/agents/create-an-agent"},{"title":"list templates","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/agents/templates","href":"/api-reference/agents/list-templates"},{"title":"get an agent","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/agents/{agent_ref}","href":"/api-reference/agents/get-an-agent"},{"title":"delete an agent","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/agents/{agent_ref}","href":"/api-reference/agents/delete-an-agent"},{"title":"update an agent","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/agents/{agent_ref}","href":"/api-reference/agents/update-an-agent"},{"title":"deploy an agent","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/agents/{agent_ref}/deploy","href":"/api-reference/agents/deploy-an-agent"},{"title":"list versions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/agents/{agent_ref}/versions","href":"/api-reference/agents/list-versions"},{"title":"get the draft","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/agents/{agent_ref}/versions/draft","href":"/api-reference/agents/get-the-draft"},{"title":"discard the draft","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/agents/{agent_ref}/versions/draft","href":"/api-reference/agents/discard-the-draft"},{"title":"get a version","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/agents/{agent_ref}/versions/{version_number}","href":"/api-reference/agents/get-a-version"},{"title":"delete a version","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/agents/{agent_ref}/versions/{version_number}","href":"/api-reference/agents/delete-a-version"},{"title":"roll back to a version","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/agents/{agent_ref}/versions/{version_number}/activate","href":"/api-reference/agents/roll-back-to-a-version"}]},{"group":"calls","pages":[{"title":"list calls","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/calls","href":"/api-reference/calls/list-calls"},{"title":"place an outbound call","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/calls","href":"/api-reference/calls/place-an-outbound-call"},{"title":"get a call","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/calls/{call_id}","href":"/api-reference/calls/get-a-call"}]},{"group":"voices","pages":[{"title":"list voices and languages","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/voices","href":"/api-reference/voices/list-voices-and-languages"}]},{"group":"tools","pages":[{"title":"list tools","description":"the account's tools (`items`), the built-in ones (`defaults`, e.g. `end_call`) and the context params every tool can template on (`contextParams`: `{phone_number}`, `{user_id}`, `{agent_id}`, `{call_id}`).","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/tools","href":"/api-reference/tools/list-tools"},{"title":"create a tool","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/tools","href":"/api-reference/tools/create-a-tool"},{"title":"get a tool","description":"one tool. the credential is never returned.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/tools/{tool_id}","href":"/api-reference/tools/get-a-tool"},{"title":"delete a tool","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/tools/{tool_id}","href":"/api-reference/tools/delete-a-tool"},{"title":"update a tool","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/tools/{tool_id}","href":"/api-reference/tools/update-a-tool"}]},{"group":"variables","pages":[{"title":"list variables","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/variables","href":"/api-reference/variables/list-variables"},{"title":"create a variable","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/variables","href":"/api-reference/variables/create-a-variable"},{"title":"get a variable","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/variables/{variable_id}","href":"/api-reference/variables/get-a-variable"},{"title":"delete a variable","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/variables/{variable_id}","href":"/api-reference/variables/delete-a-variable"},{"title":"update a variable","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/variables/{variable_id}","href":"/api-reference/variables/update-a-variable"}]},{"group":"sip trunks","pages":[{"title":"list sip trunks","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/sip-trunks","href":"/api-reference/sip-trunks/list-sip-trunks"},{"title":"register a sip trunk","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/sip-trunks","href":"/api-reference/sip-trunks/register-a-sip-trunk"},{"title":"get the origination uri","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/sip-trunks/origination-uri","href":"/api-reference/sip-trunks/get-the-origination-uri"},{"title":"get a sip trunk","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/sip-trunks/{trunk_id}","href":"/api-reference/sip-trunks/get-a-sip-trunk"},{"title":"remove a sip trunk","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/sip-trunks/{trunk_id}","href":"/api-reference/sip-trunks/remove-a-sip-trunk"},{"title":"assign an agent to a sip trunk","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/sip-trunks/{trunk_id}/assign","href":"/api-reference/sip-trunks/assign-an-agent-to-a-sip-trunk"}]},{"group":"phone numbers","pages":[{"title":"search available numbers","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/phone-numbers/available","href":"/api-reference/phone-numbers/search-available-numbers"},{"title":"get rental requirements","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/phone-numbers/requirements","href":"/api-reference/phone-numbers/get-rental-requirements"},{"title":"list rented numbers","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/phone-numbers","href":"/api-reference/phone-numbers/list-rented-numbers"},{"title":"rent a number","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/phone-numbers","href":"/api-reference/phone-numbers/rent-a-number"},{"title":"get a rented number","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/phone-numbers/{number_id}","href":"/api-reference/phone-numbers/get-a-rented-number"},{"title":"resubmit kyc","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/phone-numbers/{number_id}/resubmit","href":"/api-reference/phone-numbers/resubmit-kyc"},{"title":"connect a number to an agent","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/phone-numbers/{number_id}/agent","href":"/api-reference/phone-numbers/connect-a-number-to-an-agent"},{"title":"release a number","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/phone-numbers/{number_id}/release","href":"/api-reference/phone-numbers/release-a-number"}]},{"group":"campaign audiences","pages":[{"title":"preview a csv","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaign-audiences/preview","href":"/api-reference/campaign-audiences/preview-a-csv"},{"title":"list audiences","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaign-audiences","href":"/api-reference/campaign-audiences/list-audiences"},{"title":"upload an audience","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaign-audiences","href":"/api-reference/campaign-audiences/upload-an-audience"},{"title":"get an audience","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaign-audiences/{audience_id}","href":"/api-reference/campaign-audiences/get-an-audience"},{"title":"delete an audience","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/campaign-audiences/{audience_id}","href":"/api-reference/campaign-audiences/delete-an-audience"},{"title":"update an audience","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/campaign-audiences/{audience_id}","href":"/api-reference/campaign-audiences/update-an-audience"},{"title":"list an audience's contacts","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaign-audiences/{audience_id}/contacts","href":"/api-reference/campaign-audiences/list-an-audiences-contacts"}]},{"group":"campaigns","pages":[{"title":"list phone lines","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/phone-lines","href":"/api-reference/campaigns/list-phone-lines"},{"title":"list campaigns","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns","href":"/api-reference/campaigns/list-campaigns"},{"title":"create a campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns","href":"/api-reference/campaigns/create-a-campaign"},{"title":"get a campaign","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/{campaign_id}","href":"/api-reference/campaigns/get-a-campaign"},{"title":"delete a campaign","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/campaigns/{campaign_id}","href":"/api-reference/campaigns/delete-a-campaign"},{"title":"list a campaign's contacts","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/{campaign_id}/contacts","href":"/api-reference/campaigns/list-a-campaigns-contacts"},{"title":"list a campaign's calls","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/campaigns/{campaign_id}/calls","href":"/api-reference/campaigns/list-a-campaigns-calls"},{"title":"pause a campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns/{campaign_id}/pause","href":"/api-reference/campaigns/pause-a-campaign"},{"title":"resume a campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns/{campaign_id}/resume","href":"/api-reference/campaigns/resume-a-campaign"},{"title":"stop a campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/campaigns/{campaign_id}/stop","href":"/api-reference/campaigns/stop-a-campaign"}]}]}]},"basePath":"","title":"create a tool - rumik silk tts","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-BAvA99GL.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}