{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"PyAI Developers","description":"Build voice agents through the console or API, powered by Omni. Agents, Hear, Speak, Clone, Cast, and Dub documentation.","colors":{"primary":"#5B5BD6","light":"#8E8EF0","dark":"#3A3AB0"},"logo":{"light":"https://mintcdn.com/pyai/WdY9MU3V1Ll4Gm-R/logo/light.svg?fit=max\u0026auto=format\u0026n=WdY9MU3V1Ll4Gm-R\u0026q=85\u0026s=c47abcf1c2ebb1a5b3d736c8048fe048","dark":"https://mintcdn.com/pyai/WdY9MU3V1Ll4Gm-R/logo/dark.svg?fit=max\u0026auto=format\u0026n=WdY9MU3V1Ll4Gm-R\u0026q=85\u0026s=27b4f2ab467e5a0d91c0f24c4d191765"},"favicon":"https://mintcdn.com/pyai/G4w3mSmcZ1PP4hMU/favicon.svg?fit=max\u0026auto=format\u0026n=G4w3mSmcZ1PP4hMU\u0026q=85\u0026s=b2a603e1ab6b02d3ea6fcc051f224e1c","appearance":{"default":"system"},"navbar":{"links":[{"href":"https://api.pyai.com/openapi.json","label":"OpenAPI spec"},{"href":"https://status.pyai.com","label":"Status"}],"primary":{"type":"button","label":"Choose a path","href":"/choose-your-path"}},"footer":{"socials":{"website":"https://pyai.com","x":"https://x.com/getpyai"}},"search":{"prompt":"Search the PyAI docs"},"seo":{"indexing":"all"},"contextual":{"options":["copy","view","chatgpt","claude","download-spec","grok","cursor","aistudio","perplexity","vscode"],"display":"header"},"interaction":{"drilldown":true},"markdown":{"schema":true},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"pyai","hasAudioNarration":false,"actualSubdomain":"pyai","customDomains":["docs.pyai.com"],"gitSource":{"type":"github","owner":"atomsai","repo":"pyai-platform-backend","deployBranch":"main","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"12a4fb84-aa68-4edc-9901-c01777ec7393","liveDeploymentHistoryId":"6ae19fa19297755be19eb616","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae19fa19297755be19eb616"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae1c523661bff0c6e728f57","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"API reference","count":199},{"language":"default","tag":"Documentation","count":82},{"language":"default","tag":"Telephony","count":38},{"language":"default","tag":"Agents","count":33},{"language":"default","tag":"Integrations","count":27},{"language":"default","tag":"Knowledge Bases","count":14},{"language":"default","tag":"Get started","count":13},{"language":"default","tag":"Trace","count":12},{"language":"default","tag":"WhatsApp","count":12},{"language":"default","tag":"Dub","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"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":"turbopuffer-dual-write","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},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/telephony/route-a-number-to-an-agent","slug":"/api-reference/telephony/route-a-number-to-an-agent","pageMetadata":{"title":"Route a number to an agent","description":"Bind the number to an `agent_id` (or pass `null` to unassign) so inbound calls open that agent's Omni session. Requires the `telephony:manage` scope.","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/numbers/{id}/assign","href":"/api-reference/telephony/route-a-number-to-an-agent","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: [\"Bind the number to an \", _jsx(_components.code, {\n children: \"agent_id\"\n }), \" (or pass \", _jsx(_components.code, {\n children: \"null\"\n }), \" to unassign) so inbound calls open that agent’s Omni session. Requires the \", _jsx(_components.code, {\n children: \"telephony:manage\"\n }), \" scope.\"]\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":"Route a number to an agent","description":"Bind the number to an `agent_id` (or pass `null` to unassign) so inbound calls open that agent's Omni session. Requires the `telephony:manage` scope.","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/numbers/{id}/assign","href":"/api-reference/telephony/route-a-number-to-an-agent","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Telephony"],"summary":"Route a number to an agent","description":"Bind the number to an `agent_id` (or pass `null` to unassign) so inbound calls open that agent's Omni session. Requires the `telephony:manage` scope.","operationId":"assignPhoneNumber","parameters":["08f0528b-853d-40e6-a5bc-a4081b9b9e4e"],"requestBody":"866b04f9-e5f4-413e-b93e-a153fd69bd46","responses":{"200":"67c20f2c-9549-48ed-b5bc-b41f04618cfe","401":"8cf4f92a-c40b-4e86-b58e-c8b7fa2f9690","404":"4ecfb717-d8a9-4c37-81d8-f0e5bfad32ed"},"method":"post","type":"path","servers":["0ec3a5f5-8471-4041-8e01-12cfeb17ea9d"],"security":["8fef4c78-11e3-47d3-85f4-d66b250b7ccf","ba0f4d3b-c001-406b-aa6e-8db0d6eba5f5"],"path":"/v1/telephony/numbers/{id}/assign","baseUrlOptions":["https://api.pyai.com"],"title":"Route a number to an agent","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"08f0528b-853d-40e6-a5bc-a4081b9b9e4e":{"name":"id","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"agent_id":{"oneOf":[{"type":"string","description":"Agent to bind, or null to unassign.","uniqueKey":"agent_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Agent to bind, or null to unassign.","uniqueKey":"agent_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_id","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"agent_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"67c20f2c-9549-48ed-b5bc-b41f04618cfe":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","example":"telephony.number","uniqueKey":"object","typeLabel":"string"},"id":{"type":"string","example":"pn_...","uniqueKey":"id","typeLabel":"string"},"phone_number":{"type":"string","example":"+14155550123","description":"E.164.","uniqueKey":"phone_number","typeLabel":"string"},"country":{"type":"string","example":"US","uniqueKey":"country","typeLabel":"string"},"area_code":{"oneOf":[{"type":"string","example":"415","uniqueKey":"area_code.oneOf.0","typeLabel":"string"},{"type":"null","example":"415","uniqueKey":"area_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"area_code","typeLabel":"string | null"},"capabilities":{"type":"object","properties":{"voice":{"type":"boolean","uniqueKey":"capabilities.voice","typeLabel":"boolean"},"sms":{"type":"boolean","uniqueKey":"capabilities.sms","typeLabel":"boolean"}},"uniqueKey":"capabilities","typeLabel":"object"},"agent_id":{"oneOf":[{"type":"string","description":"Agent that answers inbound calls to this number.","uniqueKey":"agent_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Agent that answers inbound calls to this number.","uniqueKey":"agent_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_id","typeLabel":"string | null"},"recording":{"type":"boolean","description":"Whether PyAI recording is enabled for the number.","uniqueKey":"recording","typeLabel":"boolean"},"monthly_cost_cents":{"type":"integer","description":"PyAI monthly rental; zero for a connected customer-owned number.","uniqueKey":"monthly_cost_cents","typeLabel":"integer"},"connection_id":{"type":"string","description":"Connection for an outbound-only customer-owned number.","uniqueKey":"connection_id","typeLabel":"string"},"inbound_managed":{"type":"boolean","description":"False for customer-owned numbers; their existing incoming-call and messaging routing is preserved.","uniqueKey":"inbound_managed","typeLabel":"boolean"},"status":{"type":"string","enum":["active","released"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"created_at":{"type":"integer","description":"Unix ms.","uniqueKey":"created_at","typeLabel":"integer"},"released_at":{"oneOf":[{"type":"integer","description":"Unix ms.","uniqueKey":"released_at.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Unix ms.","uniqueKey":"released_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"released_at","typeLabel":"integer | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"telephony.number","id":"pn_...","phone_number":"+14155550123","country":"US","area_code":"415","capabilities":{"voice":true,"sms":true},"agent_id":"\u003cstring>","recording":true,"monthly_cost_cents":123,"connection_id":"\u003cstring>","inbound_managed":true,"status":"active","created_at":123,"released_at":123}}},"exampleType":"generated"}},"exampleType":"generated"},"8cf4f92a-c40b-4e86-b58e-c8b7fa2f9690":{"description":"Missing or invalid API key (`code: unauthorized`)","content":{"application/json":{"schema":{"type":"object","description":"OpenAI-compatible error envelope returned by the gateway data plane (401/402/403/429). Control-plane request/resource errors use Problem (application/problem+json) instead.","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","description":"Error category, e.g. rate_limit_error.","uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","description":"Stable, machine-readable error code. Branch on this rather than the human `message`.","enum":["invalid_request_error","invalid_session_label","unauthorized","forbidden","origin_not_allowed","credit_exhausted","key_budget_exceeded","insufficient_quota","rate_limit_exceeded","concurrency_limit_exceeded","daily_cap_exceeded"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"param":{"oneOf":[{"type":"string","description":"Offending parameter when applicable, else null.","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","description":"Offending parameter when applicable, else null.","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"message":"\u003cstring>","type":"\u003cstring>","code":"invalid_request_error","param":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"4ecfb717-d8a9-4c37-81d8-f0e5bfad32ed":{"description":"Resource not found (`code: not_found`)","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 7807 problem+json returned by the control plane (request-validation and resource errors such as 400/404/409). The stable code is the last path segment of `type`.","required":["title","status"],"properties":{"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"type":{"type":"string","description":"Problem type URI; ends with the stable code.","uniqueKey":"type","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"},"request_id":{"type":"string","uniqueKey":"request_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"title":"\u003cstring>","status":123,"type":"\u003cstring>","detail":"\u003cstring>","request_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"8fef4c78-11e3-47d3-85f4-d66b250b7ccf":{"apiKey":{"type":"http","scheme":"bearer","description":"Use `Authorization: Bearer pyai_live_...` (or `pyai_test_...`).","scopes":[],"schemeName":"apiKey"}},"ba0f4d3b-c001-406b-aa6e-8db0d6eba5f5":{"xApiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Header alias for bearer auth on HTTP endpoints. WebSocket auth uses the subprotocol pair `pyai.v1, pyai-key.\u003cAPI_KEY>`.","scopes":[],"schemeName":"xApiKey"}}},"servers":{"0ec3a5f5-8471-4041-8e01-12cfeb17ea9d":{"url":"https://api.pyai.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Use `Authorization: Bearer pyai_live_...` (or `pyai_test_...`).","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Use `Authorization: Bearer pyai_live_...` (or `pyai_test_...`).","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"Header alias for bearer auth on HTTP endpoints. WebSocket auth uses the subprotocol pair `pyai.v1, pyai-key.\u003cAPI_KEY>`.","scopes":[],"schemeName":"xApiKey"},"schema":{"title":"x-api-key","type":"string","description":"Header alias for bearer auth on HTTP endpoints. WebSocket auth uses the subprotocol pair `pyai.v1, pyai-key.\u003cAPI_KEY>`.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"xApiKey","name":"x-api-key"}],"title":"xApiKey"}]},"originalFileLocation":"https://api.pyai.com/openapi.json"},"subdomain":"pyai","siteName":"PyAI Developers","title":"Route a number to an agent - PyAI Developers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T07:09:30.313Z","originalFileLocation":"api-reference/telephony/route-a-number-to-an-agent.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=\"Bind the number to an agent_id (or pass null to unassign) so inbound calls open that agent\u0026#x27;s Omni session. Requires the telephony:manage scope.\">\u003cmeta data-mint-head name=\"application-name\" content=\"PyAI Developers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/pyai/TcdC0S0vFDaCWV2B/_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/pyai/TcdC0S0vFDaCWV2B/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/pyai/TcdC0S0vFDaCWV2B/_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/pyai/TcdC0S0vFDaCWV2B/_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/pyai/TcdC0S0vFDaCWV2B/_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/pyai/TcdC0S0vFDaCWV2B/_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/pyai/TcdC0S0vFDaCWV2B/_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/pyai/TcdC0S0vFDaCWV2B/_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/pyai/TcdC0S0vFDaCWV2B/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Route a number to an agent - PyAI Developers\">\u003cmeta data-mint-head property=\"og:description\" content=\"Bind the number to an agent_id (or pass null to unassign) so inbound calls open that agent\u0026#x27;s Omni session. Requires the telephony:manage scope.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"PyAI Developers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.pyai.com/api-reference/telephony/route-a-number-to-an-agent\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://pyai.mintlify.app/_mintlify/api/og/v2?division=Telephony\u0026amp;title=Route+a+number+to+an+agent\u0026amp;description=Bind+the+number+to+an+%60agent_id%60+%28or+pass+%60null%60+to+unassign%29+so+inbound+calls+open+that+agent%27s+Omni+session.+Requires+the+%60telephony%3Amanage%60+scope.\u0026amp;theme=345b4136ed2cb0b69fa46bb0\u0026amp;signature=33e867c1c3b7fe81eb4e028c7746e6894d52f85c1bb41c169feea27ee065ef89\">\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=\"Route a number to an agent - PyAI Developers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Bind the number to an agent_id (or pass null to unassign) so inbound calls open that agent\u0026#x27;s Omni session. Requires the telephony:manage scope.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://pyai.mintlify.app/_mintlify/api/og/v2?division=Telephony\u0026amp;title=Route+a+number+to+an+agent\u0026amp;description=Bind+the+number+to+an+%60agent_id%60+%28or+pass+%60null%60+to+unassign%29+so+inbound+calls+open+that+agent%27s+Omni+session.+Requires+the+%60telephony%3Amanage%60+scope.\u0026amp;theme=345b4136ed2cb0b69fa46bb0\u0026amp;signature=33e867c1c3b7fe81eb4e028c7746e6894d52f85c1bb41c169feea27ee065ef89\">\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/pyai/TcdC0S0vFDaCWV2B/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"PyAI Developers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5B5BD6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.pyai.com/api-reference/telephony/route-a-number-to-an-agent\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/telephony/route-a-number-to-an-agent.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.pyai.com/#organization\",\"name\":\"PyAI Developers\",\"url\":\"https://docs.pyai.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/pyai/WdY9MU3V1Ll4Gm-R/logo/light.svg?fit=max\u0026auto=format\u0026n=WdY9MU3V1Ll4Gm-R\u0026q=85\u0026s=c47abcf1c2ebb1a5b3d736c8048fe048\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.pyai.com#website\",\"name\":\"PyAI Developers\",\"url\":\"https://docs.pyai.com\",\"publisher\":{\"@id\":\"https://docs.pyai.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.pyai.com/api-reference/telephony/route-a-number-to-an-agent#webpage\",\"url\":\"https://docs.pyai.com/api-reference/telephony/route-a-number-to-an-agent\",\"name\":\"Route a number to an agent\",\"description\":\"Bind the number to an agent_id (or pass null to unassign) so inbound calls open that agent's Omni session. Requires the telephony:manage scope.\",\"dateModified\":\"2026-10-28T07:09:30.313Z\",\"isPartOf\":{\"@id\":\"https://docs.pyai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.pyai.com/api-reference/telephony/route-a-number-to-an-agent#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.pyai.com/api-reference/telephony/route-a-number-to-an-agent#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Telephony\",\"item\":\"https://docs.pyai.com/api-reference/telephony/list-number-compliance-cases\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Route a number to an agent\",\"item\":\"https://docs.pyai.com/api-reference/telephony/route-a-number-to-an-agent\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.pyai.com/api-reference/telephony/route-a-number-to-an-agent#apireference\",\"headline\":\"Route a number to an agent\",\"name\":\"Route a number to an agent\",\"description\":\"Bind the number to an agent_id (or pass null to unassign) so inbound calls open that agent's Omni session. Requires the telephony:manage scope.\",\"url\":\"https://docs.pyai.com/api-reference/telephony/route-a-number-to-an-agent\",\"mainEntityOfPage\":{\"@id\":\"https://docs.pyai.com/api-reference/telephony/route-a-number-to-an-agent#webpage\"},\"dateModified\":\"2026-10-28T07:09:30.313Z\",\"publisher\":{\"@id\":\"https://docs.pyai.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.pyai.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"PyAI Developers\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"PyAI Developers","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/quickstart"}]},{"tab":"API reference","href":"/api-reference","groups":[{"group":"Omni","pages":[{"title":"Read the machine-readable Omni frame contract","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /omni-frames.json","href":"/api-reference/omni/read-the-machine-readable-omni-frame-contract"},{"title":"List Omni call records","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/omni/calls","href":"/api-reference/omni/list-omni-call-records"},{"title":"Get an Omni call record","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/omni/calls/{call_id}","href":"/api-reference/omni/get-an-omni-call-record"},{"title":"Download an Omni call recording","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/omni/calls/{call_id}/recording","href":"/api-reference/omni/download-an-omni-call-recording"},{"title":"Get an Omni call summary","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/omni/calls/{call_id}/summary","href":"/api-reference/omni/get-an-omni-call-summary"},{"title":"Get an Omni call transcript","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/omni/calls/{call_id}/transcript","href":"/api-reference/omni/get-an-omni-call-transcript"},{"title":"Mint an ephemeral Omni session token","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/omni/sessions","href":"/api-reference/omni/mint-an-ephemeral-omni-session-token"},{"title":"Open an Omni voice-agent session (WebSocket)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/omni","href":"/api-reference/omni/open-an-omni-voice-agent-session-websocket"}]},{"group":"MCP","pages":[{"title":"Discover PyAI MCP authorization","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /.well-known/oauth-protected-resource","href":"/api-reference/mcp/discover-pyai-mcp-authorization"},{"title":"Discover authorization for the MCP endpoint","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /.well-known/oauth-protected-resource/mcp","href":"/api-reference/mcp/discover-authorization-for-the-mcp-endpoint"},{"title":"Discover transcription and call-records connector authorization","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /.well-known/oauth-protected-resource/mcp/transcription","href":"/api-reference/mcp/discover-transcription-and-call-records-connector-authorization"},{"title":"Discover OAuth endpoints and S256 PKCE support","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /.well-known/oauth-authorization-server","href":"/api-reference/mcp/discover-oauth-endpoints-and-s256-pkce-support"},{"title":"Register an MCP OAuth public client","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/mcp/register","href":"/api-reference/mcp/register-an-mcp-oauth-public-client"},{"title":"Start browser OAuth consent","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /auth/mcp/authorize","href":"/api-reference/mcp/start-browser-oauth-consent"},{"title":"Exchange an authorization code or rotate a refresh token","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/mcp/token","href":"/api-reference/mcp/exchange-an-authorization-code-or-rotate-a-refresh-token"},{"title":"Revoke an MCP OAuth connection using a token","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/mcp/revoke","href":"/api-reference/mcp/revoke-an-mcp-oauth-connection-using-a-token"},{"title":"Transcription and existing call-records MCP endpoint","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /mcp/transcription","href":"/api-reference/mcp/transcription-and-existing-call-records-mcp-endpoint"},{"title":"PyAI MCP Streamable HTTP endpoint","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /mcp","href":"/api-reference/mcp/pyai-mcp-streamable-http-endpoint"}]},{"group":"Cast","pages":[{"title":"Poll a Cast narration render","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/cast/render_jobs/{job_id}","href":"/api-reference/cast/poll-a-cast-narration-render"},{"title":"Download completed Cast narration","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/cast/render_jobs/{job_id}/audio","href":"/api-reference/cast/download-completed-cast-narration"},{"title":"Get live Cast capabilities","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/cast/capabilities","href":"/api-reference/cast/get-live-cast-capabilities"},{"title":"Auto-direct a script","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/cast/direct","href":"/api-reference/cast/auto-direct-a-script"},{"title":"Preview one directed line","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/cast/speech","href":"/api-reference/cast/preview-one-directed-line"},{"title":"Create an asynchronous Cast render","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/cast/render_jobs","href":"/api-reference/cast/create-an-asynchronous-cast-render"}]},{"group":"Integrations","pages":[{"title":"Start a Vercel connection","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/vercel/start","href":"/api-reference/integrations/start-a-vercel-connection"},{"title":"Verify the Vercel authorization callback","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/vercel/exchange","href":"/api-reference/integrations/verify-the-vercel-authorization-callback"},{"title":"Read your existing Vercel connection","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /auth/vercel/configuration/{configurationId}","href":"/api-reference/integrations/read-your-existing-vercel-connection"},{"title":"Read Vercel connection status","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /auth/vercel/requests/{id}","href":"/api-reference/integrations/read-vercel-connection-status"},{"title":"List authorized Vercel projects","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /auth/vercel/requests/{id}/projects","href":"/api-reference/integrations/list-authorized-vercel-projects"},{"title":"Create and install a scoped PyAI project key","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/vercel/requests/{id}/connect","href":"/api-reference/integrations/create-and-install-a-scoped-pyai-project-key"},{"title":"Revoke this integration key and remove its environment variable","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/vercel/requests/{id}/disconnect","href":"/api-reference/integrations/revoke-this-integration-key-and-remove-its-environment-variable"},{"title":"Receive a signed Vercel lifecycle event","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/vercel/webhook","href":"/api-reference/integrations/receive-a-signed-vercel-lifecycle-event"},{"title":"List integration events","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/integrations/events","href":"/api-reference/integrations/list-integration-events"},{"title":"Subscribe a Zapier REST hook","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/integrations/zapier/hooks","href":"/api-reference/integrations/subscribe-a-zapier-rest-hook"},{"title":"Unsubscribe a Zapier REST hook","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/integrations/zapier/hooks/{id}","href":"/api-reference/integrations/unsubscribe-a-zapier-rest-hook"}]},{"group":"Dub","pages":[{"title":"Read editable dubbing passages","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/dub/jobs/{job_id}/editor","href":"/api-reference/dub/read-editable-dubbing-passages"},{"title":"Save transcript, translation and pronunciation edits","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json patch /v1/dub/jobs/{job_id}/editor","href":"/api-reference/dub/save-transcript-translation-and-pronunciation-edits"},{"title":"Regenerate selected passages as a new dub","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/dub/jobs/{job_id}/revisions","href":"/api-reference/dub/regenerate-selected-passages-as-a-new-dub"},{"title":"Export original or translated subtitles","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/dub/jobs/{job_id}/subtitles.{format}","href":"/api-reference/dub/export-original-or-translated-subtitles"},{"title":"Load the original audio for comparison","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/dub/jobs/{job_id}/source","href":"/api-reference/dub/load-the-original-audio-for-comparison"},{"title":"Dubbing availability and languages","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /healthz/dub","href":"/api-reference/dub/dubbing-availability-and-languages"},{"title":"Create a dubbing job","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/dub","href":"/api-reference/dub/create-a-dubbing-job"},{"title":"Get dubbing job status","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/dub/jobs/{job_id}","href":"/api-reference/dub/get-dubbing-job-status"},{"title":"Download dubbed audio","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/dub/jobs/{job_id}/audio","href":"/api-reference/dub/download-dubbed-audio"},{"title":"Download a dubbed video output","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/dub/jobs/{job_id}/video","href":"/api-reference/dub/download-a-dubbed-video-output"}]},{"group":"Trace","pages":[{"title":"Review an uploaded or pasted transcript","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /orgs/{orgId}/trace/uploads/{id}","href":"/api-reference/trace/review-an-uploaded-or-pasted-transcript"},{"title":"Get Trace config for an agent (or the org default)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/trace/config","href":"/api-reference/trace/get-trace-config-for-an-agent-or-the-org-default"},{"title":"Set Trace config for an agent (or the org default)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /v1/trace/config","href":"/api-reference/trace/set-trace-config-for-an-agent-or-the-org-default"},{"title":"List rule packs","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/trace/rule-packs","href":"/api-reference/trace/list-rule-packs"},{"title":"Upload a custom rule pack","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/trace/rule-packs","href":"/api-reference/trace/upload-a-custom-rule-pack"},{"title":"Get a rule pack","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/trace/rule-packs/{id}","href":"/api-reference/trace/get-a-rule-pack"},{"title":"List scanned interactions (scorecards)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/trace/interactions","href":"/api-reference/trace/list-scanned-interactions-scorecards"},{"title":"Get an interaction (the evidence view)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/trace/interactions/{id}","href":"/api-reference/trace/get-an-interaction-the-evidence-view"},{"title":"List violations (findings)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/trace/violations","href":"/api-reference/trace/list-violations-findings"},{"title":"List Tier-2 semantic findings","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/trace/findings","href":"/api-reference/trace/list-tier-2-semantic-findings"},{"title":"Compliance exposure summary","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/trace/exposure","href":"/api-reference/trace/compliance-exposure-summary"},{"title":"Export a privacy-minimized evidence snapshot","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/trace/evidence-snapshot","href":"/api-reference/trace/export-a-privacy-minimized-evidence-snapshot"}]},{"group":"Console creations","pages":[{"title":"Preview current creation rates","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /projects/{projectId}/studio/pricing/{product}","href":"/api-reference/console-creations/preview-current-creation-rates"},{"title":"Get background creation progress","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /projects/{projectId}/creation-jobs/{id}","href":"/api-reference/console-creations/get-background-creation-progress"},{"title":"Start a durable Speech or Transcription job","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /projects/{projectId}/creation-jobs/{id}","href":"/api-reference/console-creations/start-a-durable-speech-or-transcription-job"},{"title":"Restore a background transcription's original recording","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /projects/{projectId}/creation-jobs/{id}/input","href":"/api-reference/console-creations/restore-a-background-transcriptions-original-recording"},{"title":"Regenerate Dubbing passages and save the revision to My work","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /projects/{projectId}/dub/library/{id}/revisions","href":"/api-reference/console-creations/regenerate-dubbing-passages-and-save-the-revision-to-my-work"}]},{"group":"Identity","pages":[{"title":"Review a CLI login request","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /auth/cli/device","href":"/api-reference/identity/review-a-cli-login-request"},{"title":"Start browser login for the CLI","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/cli/device","href":"/api-reference/identity/start-browser-login-for-the-cli"},{"title":"Approve CLI access to a project","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/cli/device/approve","href":"/api-reference/identity/approve-cli-access-to-a-project"},{"title":"Deny a CLI login request","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/cli/device/deny","href":"/api-reference/identity/deny-a-cli-login-request"},{"title":"Poll and exchange an approved CLI login","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/cli/device/token","href":"/api-reference/identity/poll-and-exchange-an-approved-cli-login"},{"title":"Create an account and organization","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/signup","href":"/api-reference/identity/create-an-account-and-organization"},{"title":"Introspect the calling key (whoami)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/me","href":"/api-reference/identity/introspect-the-calling-key-whoami"}]},{"group":"Call Integrations","pages":[{"title":"Receive Aircall call events","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /public/integrations/calls/aircall/events","href":"/api-reference/call-integrations/receive-aircall-call-events"},{"title":"Receive Dialpad call events","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /public/integrations/calls/dialpad/events","href":"/api-reference/call-integrations/receive-dialpad-call-events"},{"title":"Receive JustCall completed-call events","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /public/integrations/calls/justcall/events","href":"/api-reference/call-integrations/receive-justcall-completed-call-events"}]},{"group":"Sandbox","pages":[{"title":"Mint a sandbox key (no auth)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/sandbox/keys","href":"/api-reference/sandbox/mint-a-sandbox-key-no-auth"}]},{"group":"Startup Program","pages":[{"title":"Apply to PyAI for Startups (no auth)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/startup-program/applications","href":"/api-reference/startup-program/apply-to-pyai-for-startups-no-auth"}]},{"group":"Models","pages":[{"title":"List available models","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/models","href":"/api-reference/models/list-available-models"}]},{"group":"Speech To Text (Hear)","pages":[{"title":"Transcribe audio","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/audio/transcriptions","href":"/api-reference/speech-to-text-hear/transcribe-audio"},{"title":"Stream transcription (WebSocket)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/audio/transcriptions/stream","href":"/api-reference/speech-to-text-hear/stream-transcription-websocket"},{"title":"Get stored Hear vocabulary","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/hear/vocabulary","href":"/api-reference/speech-to-text-hear/get-stored-hear-vocabulary"},{"title":"Set stored Hear vocabulary","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /v1/hear/vocabulary","href":"/api-reference/speech-to-text-hear/set-stored-hear-vocabulary"}]},{"group":"Text To Speech (Speak)","pages":[{"title":"Synthesize speech","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/audio/speech","href":"/api-reference/text-to-speech-speak/synthesize-speech"},{"title":"List voices","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/voices","href":"/api-reference/text-to-speech-speak/list-voices"},{"title":"Get a stock voice","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/voices/{id}","href":"/api-reference/text-to-speech-speak/get-a-stock-voice"},{"title":"Delete a designed voice","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/voices/{id}","href":"/api-reference/text-to-speech-speak/delete-a-designed-voice"},{"title":"Design a voice from a prompt","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/voice/design","href":"/api-reference/text-to-speech-speak/design-a-voice-from-a-prompt"},{"title":"Get design candidates","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/voice/design/{id}","href":"/api-reference/text-to-speech-speak/get-design-candidates"},{"title":"Preview a designed-voice candidate","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/voice/design/{id}/preview/{candidate_id}","href":"/api-reference/text-to-speech-speak/preview-a-designed-voice-candidate"},{"title":"Save a designed voice","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/voice/design/{id}/save","href":"/api-reference/text-to-speech-speak/save-a-designed-voice"}]},{"group":"Agents","pages":[{"title":"List agent profiles","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/agents","href":"/api-reference/agents/list-agent-profiles"},{"title":"Create an agent profile","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/agents","href":"/api-reference/agents/create-an-agent-profile"},{"title":"Get an agent","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/agents/{id}","href":"/api-reference/agents/get-an-agent"},{"title":"Update an agent","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/agents/{id}","href":"/api-reference/agents/update-an-agent"},{"title":"Delete an agent","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/agents/{id}","href":"/api-reference/agents/delete-an-agent"},{"title":"Bind tools to an agent","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /v1/agents/{id}/tools","href":"/api-reference/agents/bind-tools-to-an-agent"},{"title":"List tools","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/tools","href":"/api-reference/agents/list-tools"},{"title":"Create or update a custom tool","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/tools","href":"/api-reference/agents/create-or-update-a-custom-tool"},{"title":"Get a tool","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/tools/{id}","href":"/api-reference/agents/get-a-tool"},{"title":"Update a tool","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/tools/{id}","href":"/api-reference/agents/update-a-tool"},{"title":"Delete a custom tool","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/tools/{id}","href":"/api-reference/agents/delete-a-custom-tool"},{"title":"Test a tool configuration","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/tools/{id}/test","href":"/api-reference/agents/test-a-tool-configuration"},{"title":"List recent tool calls","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/tools/calls","href":"/api-reference/agents/list-recent-tool-calls"},{"title":"Get webhook signing secret status","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/webhooks/signing-secret","href":"/api-reference/agents/get-webhook-signing-secret-status"},{"title":"Mint or rotate the webhook signing secret","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/webhooks/signing-secret","href":"/api-reference/agents/mint-or-rotate-the-webhook-signing-secret"},{"title":"Bind knowledge bases to an agent","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /v1/agents/{id}/knowledgebases","href":"/api-reference/agents/bind-knowledge-bases-to-an-agent"},{"title":"Resolve a hosted website widget","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /public/widgets/{publicId}","href":"/api-reference/agents/resolve-a-hosted-website-widget"},{"title":"Mint a hosted widget voice session","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /public/widgets/{publicId}/session","href":"/api-reference/agents/mint-a-hosted-widget-voice-session"}]},{"group":"Clone","pages":[{"title":"List cloned voices","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/voice/clones","href":"/api-reference/clone/list-cloned-voices"},{"title":"Create a cloned voice","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/voice/clones","href":"/api-reference/clone/create-a-cloned-voice"},{"title":"Delete a cloned voice","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/voice/clones/{id}","href":"/api-reference/clone/delete-a-cloned-voice"}]},{"group":"Transcription Jobs","pages":[{"title":"List transcription jobs","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/transcription/jobs","href":"/api-reference/transcription-jobs/list-transcription-jobs"},{"title":"Create an async transcription job","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/transcription/jobs","href":"/api-reference/transcription-jobs/create-an-async-transcription-job"},{"title":"Get a transcription job","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/transcription/jobs/{id}","href":"/api-reference/transcription-jobs/get-a-transcription-job"},{"title":"Cancel a transcription job","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/transcription/jobs/{id}","href":"/api-reference/transcription-jobs/cancel-a-transcription-job"}]},{"group":"Recap","pages":[{"title":"Get Recap config","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/recap/config","href":"/api-reference/recap/get-recap-config"},{"title":"Update Recap config","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /v1/recap/config","href":"/api-reference/recap/update-recap-config"},{"title":"Get Recap CRM config","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/recap/crm-config","href":"/api-reference/recap/get-recap-crm-config"},{"title":"Update Recap CRM config","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /v1/recap/crm-config","href":"/api-reference/recap/update-recap-crm-config"},{"title":"List recap records","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/recap/calls","href":"/api-reference/recap/list-recap-records"},{"title":"Get a recap record","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/recap/calls/{call_id}","href":"/api-reference/recap/get-a-recap-record"},{"title":"Manually trigger recap for a call","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/recap/calls/{call_id}","href":"/api-reference/recap/manually-trigger-recap-for-a-call"},{"title":"Correct transcript speaker roles","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/recap/calls/{call_id}/transcript/roles","href":"/api-reference/recap/correct-transcript-speaker-roles"}]},{"group":"AMD","pages":[{"title":"Answering-machine detection (WebSocket)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/amd/stream","href":"/api-reference/amd/answering-machine-detection-websocket"},{"title":"Get AMD config","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/amd/config","href":"/api-reference/amd/get-amd-config"},{"title":"Set AMD config","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/amd/config","href":"/api-reference/amd/set-amd-config"},{"title":"List AMD decisions","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/amd/calls","href":"/api-reference/amd/list-amd-decisions"},{"title":"Get an AMD decision","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/amd/calls/{call_id}","href":"/api-reference/amd/get-an-amd-decision"}]},{"group":"Interpretation","pages":[{"title":"Open a two-person live interpretation session","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/audio/interpretations/stream","href":"/api-reference/interpretation/open-a-two-person-live-interpretation-session"},{"title":"Mint a browser interpretation token","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/audio/interpretations/sessions","href":"/api-reference/interpretation/mint-a-browser-interpretation-token"},{"title":"Create a customer call archive","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/audio/interpretations/recordings","href":"/api-reference/interpretation/create-a-customer-call-archive"},{"title":"Upload one party recording","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/interpretation-recordings/{recording_id}/audio","href":"/api-reference/interpretation/upload-one-party-recording"},{"title":"Save transcripts and finalize a call archive","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /auth/interpretation-recordings/{recording_id}/complete","href":"/api-reference/interpretation/save-transcripts-and-finalize-a-call-archive"},{"title":"List saved Translation calls","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/audio/interpretations/calls","href":"/api-reference/interpretation/list-saved-translation-calls"},{"title":"Read a saved Translation call","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/audio/interpretations/calls/{call_id}","href":"/api-reference/interpretation/read-a-saved-translation-call"},{"title":"Read original and translated transcripts","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/audio/interpretations/calls/{call_id}/transcript","href":"/api-reference/interpretation/read-original-and-translated-transcripts"},{"title":"Read Translation call and transfer events","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/audio/interpretations/calls/{call_id}/events","href":"/api-reference/interpretation/read-translation-call-and-transfer-events"},{"title":"Play or download a Translation recording","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/audio/interpretations/calls/{call_id}/recording","href":"/api-reference/interpretation/play-or-download-a-translation-recording"}]},{"group":"Knowledge Bases","pages":[{"title":"List knowledge bases","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/knowledgebases","href":"/api-reference/knowledge-bases/list-knowledge-bases"},{"title":"Create a knowledge base","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/knowledgebases","href":"/api-reference/knowledge-bases/create-a-knowledge-base"},{"title":"List org-default KB bindings","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/knowledgebases/default","href":"/api-reference/knowledge-bases/list-org-default-kb-bindings"},{"title":"Set org-default KB bindings","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /v1/knowledgebases/default","href":"/api-reference/knowledge-bases/set-org-default-kb-bindings"},{"title":"Get a knowledge base (with documents)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/knowledgebases/{id}","href":"/api-reference/knowledge-bases/get-a-knowledge-base-with-documents"},{"title":"Delete a knowledge base","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/knowledgebases/{id}","href":"/api-reference/knowledge-bases/delete-a-knowledge-base"},{"title":"Rename a knowledge base","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json patch /v1/knowledgebases/{id}","href":"/api-reference/knowledge-bases/rename-a-knowledge-base"},{"title":"List documents in a knowledge base","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/knowledgebases/{id}/documents","href":"/api-reference/knowledge-bases/list-documents-in-a-knowledge-base"},{"title":"Add a document (file, URL, or text)","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/knowledgebases/{id}/documents","href":"/api-reference/knowledge-bases/add-a-document-file-url-or-text"},{"title":"Crawl a public website into a knowledge base","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/knowledgebases/{id}/crawls","href":"/api-reference/knowledge-bases/crawl-a-public-website-into-a-knowledge-base"},{"title":"Remove a document","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/knowledgebases/{id}/documents/{docId}","href":"/api-reference/knowledge-bases/remove-a-document"},{"title":"Edit a pasted-text document","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json patch /v1/knowledgebases/{id}/documents/{docId}","href":"/api-reference/knowledge-bases/edit-a-pasted-text-document"},{"title":"Inspect a document's extracted content","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/knowledgebases/{id}/documents/{docId}/content","href":"/api-reference/knowledge-bases/inspect-a-documents-extracted-content"},{"title":"Retry document ingestion","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/knowledgebases/{id}/documents/{docId}/retry","href":"/api-reference/knowledge-bases/retry-document-ingestion"}]},{"group":"Telephony","pages":[{"title":"List number compliance cases","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/compliance-cases","href":"/api-reference/telephony/list-number-compliance-cases"},{"title":"Start a number compliance or porting case","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance-cases","href":"/api-reference/telephony/start-a-number-compliance-or-porting-case"},{"title":"Get a number compliance case","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/compliance-cases/{id}","href":"/api-reference/telephony/get-a-number-compliance-case"},{"title":"Compute the current blocking checklist","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance-cases/{id}/checklist","href":"/api-reference/telephony/compute-the-current-blocking-checklist"},{"title":"Create a short-lived document upload grant","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance-cases/{id}/uploads:grant","href":"/api-reference/telephony/create-a-short-lived-document-upload-grant"},{"title":"Register document upload metadata","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance-cases/{id}/uploads","href":"/api-reference/telephony/register-document-upload-metadata"},{"title":"Create a short-lived clean-document download grant","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance-cases/{id}/uploads/{uploadId}/download:grant","href":"/api-reference/telephony/create-a-short-lived-clean-document-download-grant"},{"title":"Run document extraction","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance-cases/{id}/extractions","href":"/api-reference/telephony/run-document-extraction"},{"title":"Correct an extracted field","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance-cases/{id}/corrections","href":"/api-reference/telephony/correct-an-extracted-field"},{"title":"Sign a required attestation","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance-cases/{id}/attestations","href":"/api-reference/telephony/sign-a-required-attestation"},{"title":"Human-approve and submit for network review","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance-cases/{id}/submit","href":"/api-reference/telephony/human-approve-and-submit-for-network-review"},{"title":"Cancel a number compliance case","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance-cases/{id}/cancel","href":"/api-reference/telephony/cancel-a-number-compliance-case"},{"title":"List normalized network status","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/compliance-cases/{id}/network-operations","href":"/api-reference/telephony/list-normalized-network-status"},{"title":"Search available numbers","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/available","href":"/api-reference/telephony/search-available-numbers"},{"title":"List your numbers","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/numbers","href":"/api-reference/telephony/list-your-numbers"},{"title":"Provision (buy) a number","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/numbers","href":"/api-reference/telephony/provision-buy-a-number"},{"title":"Read a saved number order","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/number-orders/{id}","href":"/api-reference/telephony/read-a-saved-number-order"},{"title":"Confirm a saved number order","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/number-orders/{id}/reconcile","href":"/api-reference/telephony/confirm-a-saved-number-order"},{"title":"Read an explicit managed inbound binding","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/numbers/{id}/inbound-binding","href":"/api-reference/telephony/read-an-explicit-managed-inbound-binding"},{"title":"Set an explicit managed inbound binding","description":"Compare-and-swap the number binding with expected_version (initially 0). Enable with project_id, agent_id, agent_release_id and agent_profile_sha256: SHA-256 of recursively key-sorted JSON for the full public Agent GET resource (array order retained). The profile must have no greeting variants or business tools. Explicit indexed knowledge requires agent_knowledge_receipt with exact owned document/source/index digests; organization inheritance and hidden context remain unsupported. The receipt is frozen with the binding and rechecked before answer and media admission. admission_mode=client waits up to 12 seconds before answer; platform accepts with a 120-second cap. Ordinary connected-number binding only reads already canonical carrier routing. Explicit activate_carrier_route=true with a stable carrier_operation_id captures encrypted prior routing before changing only this verified-owned carrier number's voice/status callbacks. Pending/unknown operations return 202, block new admissions and must be resumed with the same original request; GET exposes the immutable desired binding and original expected_version. Roll back with enabled=false, rollback_carrier_route=true, the same operation ID and current expected_version; routing is restored only if it still matches the operation's captured desired or prior hash. External drift is held unknown without overwrite. Existing admitted calls retain frozen authority. No number acquisition occurs.","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /v1/telephony/numbers/{id}/inbound-binding","href":"/api-reference/telephony/set-an-explicit-managed-inbound-binding"},{"title":"Route a number to an agent","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/numbers/{id}/assign","href":"/api-reference/telephony/route-a-number-to-an-agent"},{"title":"Release a number","description":"Release the managed number (stops the monthly rental). Idempotent. Requires the `telephony:manage` scope.","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/telephony/numbers/{id}","href":"/api-reference/telephony/release-a-number"},{"title":"Get outbound compliance policy","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/compliance/policy","href":"/api-reference/telephony/get-outbound-compliance-policy"},{"title":"Configure outbound compliance policy","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json put /v1/telephony/compliance/policy","href":"/api-reference/telephony/configure-outbound-compliance-policy"},{"title":"Record destination consent","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance/consents","href":"/api-reference/telephony/record-destination-consent"},{"title":"Suppress an outbound destination","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/compliance/suppressions","href":"/api-reference/telephony/suppress-an-outbound-destination"},{"title":"List caller identity readiness","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/compliance/caller-identities","href":"/api-reference/telephony/list-caller-identity-readiness"},{"title":"Create a managed human calling session","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/browser-sessions","href":"/api-reference/telephony/create-a-managed-human-calling-session"},{"title":"Start a human call transfer","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/calls/{id}/transfers","href":"/api-reference/telephony/start-a-human-call-transfer"},{"title":"Complete a connected warm transfer","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/calls/{id}/transfers/{transfer_id}/complete","href":"/api-reference/telephony/complete-a-connected-warm-transfer"},{"title":"Cancel a warm transfer","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/calls/{id}/transfers/{transfer_id}/cancel","href":"/api-reference/telephony/cancel-a-warm-transfer"},{"title":"Read a private human-call recording","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/calls/{id}/recording","href":"/api-reference/telephony/read-a-private-human-call-recording"},{"title":"Erase a human-call recording","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/telephony/calls/{id}/recording","href":"/api-reference/telephony/erase-a-human-call-recording"},{"title":"List telephony calls","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/calls","href":"/api-reference/telephony/list-telephony-calls"},{"title":"Start an outbound agent call","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/calls","href":"/api-reference/telephony/start-an-outbound-agent-call"},{"title":"Decide a pending inbound admission","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/calls/{id}/admission","href":"/api-reference/telephony/decide-a-pending-inbound-admission"},{"title":"Request call termination","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/telephony/calls/{id}/hangup","href":"/api-reference/telephony/request-call-termination"},{"title":"Get an outbound call","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/telephony/calls/{id}","href":"/api-reference/telephony/get-an-outbound-call"}]},{"group":"WhatsApp","pages":[{"title":"List your WhatsApp numbers","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/whatsapp/numbers","href":"/api-reference/whatsapp/list-your-whatsapp-numbers"},{"title":"Register a WhatsApp Business number","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/whatsapp/numbers","href":"/api-reference/whatsapp/register-a-whatsapp-business-number"},{"title":"Get a WhatsApp number","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/whatsapp/numbers/{id}","href":"/api-reference/whatsapp/get-a-whatsapp-number"},{"title":"Release a WhatsApp number","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json delete /v1/whatsapp/numbers/{id}","href":"/api-reference/whatsapp/release-a-whatsapp-number"},{"title":"Route a WhatsApp number to an agent","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/whatsapp/numbers/{id}/assign","href":"/api-reference/whatsapp/route-a-whatsapp-number-to-an-agent"},{"title":"Enable or disable calling on a WhatsApp number","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/whatsapp/numbers/{id}/calling","href":"/api-reference/whatsapp/enable-or-disable-calling-on-a-whatsapp-number"},{"title":"Check call permission for a user","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/whatsapp/call-permissions","href":"/api-reference/whatsapp/check-call-permission-for-a-user"},{"title":"Ask a user for permission to call them","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/whatsapp/call-permissions","href":"/api-reference/whatsapp/ask-a-user-for-permission-to-call-them"},{"title":"List WhatsApp calls","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/whatsapp/calls","href":"/api-reference/whatsapp/list-whatsapp-calls"},{"title":"Place a WhatsApp call","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/whatsapp/calls","href":"/api-reference/whatsapp/place-a-whatsapp-call"},{"title":"Get a WhatsApp call","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/whatsapp/calls/{id}","href":"/api-reference/whatsapp/get-a-whatsapp-call"},{"title":"Hang up a WhatsApp call","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json post /v1/whatsapp/calls/{id}/terminate","href":"/api-reference/whatsapp/hang-up-a-whatsapp-call"}]}]}]},"basePath":"","title":"Route a number to an agent - PyAI Developers","buildId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","deploymentId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B5zPa4Vr.js","utils-CVjrr8Yd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DTgURWzl.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DxTHtkdZ.js","snippetPresets-Cx47o5Vx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-4Fr6y9N_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Dq2ElbEk.js","shallow-BfYl9r69.js","getApiPlaygroundDisplay-Ch3xc7i1.js","CodeSnippet-BsBxuJ1v.js","CodeSnippets-CetzeDL8.js","Page-CYZot51e.js","getPastedJson-BxPKFSJx.js","icon-o0J1Ochb.js","MethodPill-Du3usO5m.js","DuplicateIcon-DJypyMzl.js","createIcon-YMA6N8KJ.js","DynamicMarkdown-CWvhfcZc.js","SectionHeading-BdLVaXCd.js","axios-vUo_bRtp.js","Markdown-C4Ez6OeV.js","clsx-DptzKFCt.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Dt1IougW.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CZ6Wt2Vb.js"]}