Return the identity the gateway resolved for your key: key_id, org_id, project_id, environment (test/live), status, the granted scopes, and the rate-limit/credit posture. Any active key may call it (no special scope), so it is the fastest way to self-diagnose a 403 insufficient_scope (check scopes), a 402 credit_exhausted/key_budget_exceeded (check credit and key_budget_cents), or an org_suspended (org_status).
Per-key monthly spend cap (USD cents); null = no per-key budget. Hitting it is a 402 key_budget_exceeded.
{"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.4067","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/identity/introspect-the-calling-key-whoami","slug":"/api-reference/identity/introspect-the-calling-key-whoami","pageMetadata":{"title":"Introspect the calling key (whoami)","description":"Return the identity the gateway resolved for your key: `key_id`, `org_id`, `project_id`, environment (`test`/`live`), `status`, the granted `scopes`, and the rate-limit/credit posture. Any active key may call it (no special scope), so it is the fastest way to self-diagnose a `403 insufficient_scope` (check `scopes`), a `402 credit_exhausted`/`key_budget_exceeded` (check `credit` and `key_budget_cents`), or an `org_suspended` (`org_status`).","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/me","href":"/api-reference/identity/introspect-the-calling-key-whoami","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: [\"Return the identity the gateway resolved for your key: \", _jsx(_components.code, {\n children: \"key_id\"\n }), \", \", _jsx(_components.code, {\n children: \"org_id\"\n }), \", \", _jsx(_components.code, {\n children: \"project_id\"\n }), \", environment (\", _jsx(_components.code, {\n children: \"test\"\n }), \"/\", _jsx(_components.code, {\n children: \"live\"\n }), \"), \", _jsx(_components.code, {\n children: \"status\"\n }), \", the granted \", _jsx(_components.code, {\n children: \"scopes\"\n }), \", and the rate-limit/credit posture. Any active key may call it (no special scope), so it is the fastest way to self-diagnose a \", _jsx(_components.code, {\n children: \"403 insufficient_scope\"\n }), \" (check \", _jsx(_components.code, {\n children: \"scopes\"\n }), \"), a \", _jsx(_components.code, {\n children: \"402 credit_exhausted\"\n }), \"/\", _jsx(_components.code, {\n children: \"key_budget_exceeded\"\n }), \" (check \", _jsx(_components.code, {\n children: \"credit\"\n }), \" and \", _jsx(_components.code, {\n children: \"key_budget_cents\"\n }), \"), or an \", _jsx(_components.code, {\n children: \"org_suspended\"\n }), \" (\", _jsx(_components.code, {\n children: \"org_status\"\n }), \").\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Introspect the calling key (whoami)","description":"Return the identity the gateway resolved for your key: `key_id`, `org_id`, `project_id`, environment (`test`/`live`), `status`, the granted `scopes`, and the rate-limit/credit posture. Any active key may call it (no special scope), so it is the fastest way to self-diagnose a `403 insufficient_scope` (check `scopes`), a `402 credit_exhausted`/`key_budget_exceeded` (check `credit` and `key_budget_cents`), or an `org_suspended` (`org_status`).","deprecated":null,"version":null,"openapi":"https://api.pyai.com/openapi.json get /v1/me","href":"/api-reference/identity/introspect-the-calling-key-whoami","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Identity"],"summary":"Introspect the calling key (whoami)","description":"Return the identity the gateway resolved for your key: `key_id`, `org_id`, `project_id`, environment (`test`/`live`), `status`, the granted `scopes`, and the rate-limit/credit posture. Any active key may call it (no special scope), so it is the fastest way to self-diagnose a `403 insufficient_scope` (check `scopes`), a `402 credit_exhausted`/`key_budget_exceeded` (check `credit` and `key_budget_cents`), or an `org_suspended` (`org_status`).","operationId":"getMe","responses":{"200":"f963b4f4-1a7a-4aff-96e4-16a4448e8ab4","401":"cb010ba3-344b-4df1-9771-0c64e221b02c"},"method":"get","type":"path","servers":["0ec3a5f5-8471-4041-8e01-12cfeb17ea9d"],"security":["8fef4c78-11e3-47d3-85f4-d66b250b7ccf","ba0f4d3b-c001-406b-aa6e-8db0d6eba5f5"],"path":"/v1/me","baseUrlOptions":["https://api.pyai.com"],"title":"Introspect the calling key (whoami)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"responses":{"f963b4f4-1a7a-4aff-96e4-16a4448e8ab4":{"description":"The calling key's identity and limits.","content":{"application/json":{"schema":{"type":"object","description":"The identity the gateway resolved for the calling key, plus its enforced limits and credit posture. Returned by `GET /v1/me`.","properties":{"object":{"type":"string","example":"identity","uniqueKey":"object","typeLabel":"string"},"key_id":{"type":"string","example":"key_7f3a0b12","description":"The calling key's id.","uniqueKey":"key_id","typeLabel":"string"},"org_id":{"type":"string","example":"org_abc123","uniqueKey":"org_id","typeLabel":"string"},"project_id":{"type":"string","example":"proj_abc123","uniqueKey":"project_id","typeLabel":"string"},"env":{"type":"string","enum":["test","live"],"description":"Key environment. `test` keys run in the sandbox tier (daily unit cap, no credit gate).","uniqueKey":"env","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["active","revoked"],"description":"Key status.","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"org_status":{"type":"string","enum":["active","suspended"],"description":"Owning org status; `suspended` explains a 403 `org_suspended`.","uniqueKey":"org_status","typeLabel":"enum\u003cstring>"},"prompt_limit_characters":{"type":"integer","enum":[8000,32000],"description":"Current organization allowance for customer-authored agent instructions; platform guidance is excluded.","uniqueKey":"prompt_limit_characters","typeLabel":"enum\u003cinteger>"},"platform_guidance_allowed":{"type":"boolean","description":"This exact server credential is enrolled to publish separate integration setup guidance.","uniqueKey":"platform_guidance_allowed","typeLabel":"boolean"},"scopes":{"type":"array","items":{"type":"string","uniqueKey":"scopes.items.[INDEX]","typeLabel":"string"},"description":"Granted scopes. A missing scope here explains a 403 `insufficient_scope`.","example":["speak:synthesize","hear:transcribe"],"uniqueKey":"scopes","typeLabel":"string[]"},"expires_at":{"oneOf":[{"type":"integer","description":"Key expiry (Unix ms); null = non-expiring.","uniqueKey":"expires_at.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Key expiry (Unix ms); null = non-expiring.","uniqueKey":"expires_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"expires_at","typeLabel":"integer | null"},"plan":{"type":"string","example":"payg","description":"Billing plan id.","uniqueKey":"plan","typeLabel":"string"},"limits":{"type":"object","description":"Per-key gateway limits (what the edge actually enforces).","properties":{"rps":{"type":"integer","description":"Requests per second.","uniqueKey":"limits.rps","typeLabel":"integer"},"burst":{"type":"integer","description":"Token-bucket burst.","uniqueKey":"limits.burst","typeLabel":"integer"},"concurrency":{"type":"integer","description":"Max concurrent realtime sessions.","uniqueKey":"limits.concurrency","typeLabel":"integer"},"monthly_units":{"oneOf":[{"type":"integer","description":"Hard monthly metered-unit cap (hard-capped plans); null = metered/no hard cap.","uniqueKey":"limits.monthly_units.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Hard monthly metered-unit cap (hard-capped plans); null = metered/no hard cap.","uniqueKey":"limits.monthly_units.oneOf.1","typeLabel":"null"}],"uniqueKey":"limits.monthly_units","typeLabel":"integer | null"},"daily_unit_cap":{"oneOf":[{"type":"integer","description":"Sandbox/publishable per-day unit ceiling; present for `test` keys.","uniqueKey":"limits.daily_unit_cap.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Sandbox/publishable per-day unit ceiling; present for `test` keys.","uniqueKey":"limits.daily_unit_cap.oneOf.1","typeLabel":"null"}],"uniqueKey":"limits.daily_unit_cap","typeLabel":"integer | null"}},"uniqueKey":"limits","typeLabel":"object"},"credit":{"type":"object","description":"Prepaid-credit posture. Explains a 402 `credit_exhausted`.","properties":{"gated":{"type":"boolean","description":"True when this key is subject to the org prepaid-credit gate (live keys on an org with no active paid subscription).","uniqueKey":"credit.gated","typeLabel":"boolean"},"available_cents":{"type":"integer","description":"Available prepaid credit in USD cents (ledger balance plus this month's free grant when gated).","uniqueKey":"credit.available_cents","typeLabel":"integer"}},"uniqueKey":"credit","typeLabel":"object"},"key_budget_cents":{"oneOf":[{"type":"integer","description":"Per-key monthly spend cap (USD cents); null = no per-key budget. Hitting it is a 402 `key_budget_exceeded`.","uniqueKey":"key_budget_cents.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Per-key monthly spend cap (USD cents); null = no per-key budget. Hitting it is a 402 `key_budget_exceeded`.","uniqueKey":"key_budget_cents.oneOf.1","typeLabel":"null"}],"uniqueKey":"key_budget_cents","typeLabel":"integer | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"identity","key_id":"key_7f3a0b12","org_id":"org_abc123","project_id":"proj_abc123","env":"test","status":"active","org_status":"active","prompt_limit_characters":8000,"platform_guidance_allowed":true,"scopes":["speak:synthesize","hear:transcribe"],"expires_at":123,"plan":"payg","limits":{"rps":123,"burst":123,"concurrency":123,"monthly_units":123,"daily_unit_cap":123},"credit":{"gated":true,"available_cents":123},"key_budget_cents":123}}},"exampleType":"generated"}},"exampleType":"generated"},"cb010ba3-344b-4df1-9771-0c64e221b02c":{"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"}},"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":"Introspect the calling key (whoami) - PyAI Developers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T07:09:29.097Z","originalFileLocation":"api-reference/identity/introspect-the-calling-key-whoami.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=\"Return the identity the gateway resolved for your key: key_id, org_id, project_id, environment (test/live), status, the granted scopes, and the rate-limit/credit posture. Any active key may call it (no special scope), so it is the fastest way to self-diagnose a 403 insufficient_scope (check scopes), a 402 credit_exhausted/key_budget_exceeded (check credit and key_budget_cents), or an org_suspended (org_status).\">\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=\"Introspect the calling key (whoami) - PyAI Developers\">\u003cmeta data-mint-head property=\"og:description\" content=\"Return the identity the gateway resolved for your key: key_id, org_id, project_id, environment (test/live), status, the granted scopes, and the rate-limit/credit posture. Any active key may call it (no special scope), so it is the fastest way to self-diagnose a 403 insufficient_scope (check scopes), a 402 credit_exhausted/key_budget_exceeded (check credit and key_budget_cents), or an org_suspended (org_status).\">\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/identity/introspect-the-calling-key-whoami\">\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=Identity\u0026amp;title=Introspect+the+calling+key+%28whoami%29\u0026amp;description=Return+the+identity+the+gateway+resolved+for+your+key%3A+%60key_id%60%2C+%60org_id%60%2C+%60project_id%60%2C+environment+%28%60test%60%2F%60live%60%29%2C+%60status%60%2C+the+granted+%60scopes%60%2C+and+the+ra\u0026amp;theme=345b4136ed2cb0b69fa46bb0\u0026amp;signature=d47d221eb6f37c26e744e2a9ca1126dc3f7f2e51765eef5a719413445588ffc2\">\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=\"Introspect the calling key (whoami) - PyAI Developers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Return the identity the gateway resolved for your key: key_id, org_id, project_id, environment (test/live), status, the granted scopes, and the rate-limit/credit posture. Any active key may call it (no special scope), so it is the fastest way to self-diagnose a 403 insufficient_scope (check scopes), a 402 credit_exhausted/key_budget_exceeded (check credit and key_budget_cents), or an org_suspended (org_status).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://pyai.mintlify.app/_mintlify/api/og/v2?division=Identity\u0026amp;title=Introspect+the+calling+key+%28whoami%29\u0026amp;description=Return+the+identity+the+gateway+resolved+for+your+key%3A+%60key_id%60%2C+%60org_id%60%2C+%60project_id%60%2C+environment+%28%60test%60%2F%60live%60%29%2C+%60status%60%2C+the+granted+%60scopes%60%2C+and+the+ra\u0026amp;theme=345b4136ed2cb0b69fa46bb0\u0026amp;signature=d47d221eb6f37c26e744e2a9ca1126dc3f7f2e51765eef5a719413445588ffc2\">\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/identity/introspect-the-calling-key-whoami\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/identity/introspect-the-calling-key-whoami.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/identity/introspect-the-calling-key-whoami#webpage\",\"url\":\"https://docs.pyai.com/api-reference/identity/introspect-the-calling-key-whoami\",\"name\":\"Introspect the calling key (whoami)\",\"description\":\"Return the identity the gateway resolved for your key: key_id, org_id, project_id, environment (test/live), status, the granted scopes, and the rate-limit/credit posture. Any active key may call it (no special scope), so it is the fastest way to self-diagnose a 403 insufficient_scope (check scopes), a 402 credit_exhausted/key_budget_exceeded (check credit and key_budget_cents), or an org_suspended (org_status).\",\"dateModified\":\"2026-10-28T07:09:29.097Z\",\"isPartOf\":{\"@id\":\"https://docs.pyai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.pyai.com/api-reference/identity/introspect-the-calling-key-whoami#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.pyai.com/api-reference/identity/introspect-the-calling-key-whoami#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Identity\",\"item\":\"https://docs.pyai.com/api-reference/identity/review-a-cli-login-request\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introspect the calling key (whoami)\",\"item\":\"https://docs.pyai.com/api-reference/identity/introspect-the-calling-key-whoami\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.pyai.com/api-reference/identity/introspect-the-calling-key-whoami#apireference\",\"headline\":\"Introspect the calling key (whoami)\",\"name\":\"Introspect the calling key (whoami)\",\"description\":\"Return the identity the gateway resolved for your key: key_id, org_id, project_id, environment (test/live), status, the granted scopes, and the rate-limit/credit posture. Any active key may call it (no special scope), so it is the fastest way to self-diagnose a 403 insufficient_scope (check scopes), a 402 credit_exhausted/key_budget_exceeded (check credit and key_budget_cents), or an org_suspended (org_status).\",\"url\":\"https://docs.pyai.com/api-reference/identity/introspect-the-calling-key-whoami\",\"mainEntityOfPage\":{\"@id\":\"https://docs.pyai.com/api-reference/identity/introspect-the-calling-key-whoami#webpage\"},\"dateModified\":\"2026-10-28T07:09:29.097Z\",\"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","description":null,"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","description":"Receives `call.ended` and `call.comm_assets_generated`. The Aircall subscription token in the payload identifies and authenticates the connection. Dark unless call integrations and the Aircall provider gate are enabled.","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","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","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":"Introspect the calling key (whoami) - PyAI Developers","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"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","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.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"]}