Prepare a real-time voice conversation with an AI Agent.
Returns a WebSocket URL and a ready-made start message. Open a WebSocket
connection to the returned url, send start_message as the first frame,
then stream audio back and forth.
This REST flow depends on Redis to issue a short-lived REST-to-WebSocket
handoff token. During a Redis incident, clients that can construct their
own start message may use the direct WebSocket flow below with a raw
API key.
You can also skip this endpoint and connect directly:
wss://api.datagrid.com/ws/voice?token=YOUR_API_KEY
WebSocket Protocol:
Once connected, send a JSON message with type: "start" and the session parameters as the payload.
The server responds with type: "started" containing the session and conversation IDs,
followed by type: "ready" when the agent is ready to receive audio.
Audio Format:
Client → Server: 16-bit mono PCM at 16kHz, base64-encoded
Server → Client: 16-bit mono PCM at 24kHz, base64-encoded
Message Types:
Client: start, audio, stop, interrupt, end_turn, text
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
agent_id
string | null
The ID of the agent to use for a direct-agent voice conversation. Ignored when voice_mode is orchestrator.
voice_mode
enum<string> | null
Controls whether the session uses the voice orchestrator, with delegation tools, or talks directly to a specific agent. Defaults to orchestrator when agent_id is omitted and direct_agent when agent_id is provided.
Available options:
orchestrator,
direct_agent
allow_delegation
boolean | null
Orchestrator sessions only: set false to disable specialist delegation tools for the session. Ignored for direct-agent sessions.
conversation_id
string | null
The ID of an existing conversation to continue. If not provided, a new conversation will be created. If the id cannot be resolved, the session start fails with the conversation_not_found error code rather than silently creating a new conversation.
config
object | null
Override the agent config for this voice session.
Only prompt overrides are supported — voice sessions always use Gemini Live,
so LLM model, agent model, planning prompt, and tool settings are not applicable.
Prompt overrides fully replace the agent's stored values for this session only
and are never persisted; empty or whitespace-only values are treated as omitted.
Show child attributes
file_ids
string[] | null
Array of file IDs to attach to the voice conversation.
secret_ids
string[] | null
Array of secret IDs to include in the context.
knowledge_ids
string[] | null
Array of knowledge IDs to make accessible to the agent.
page_ids
string[] | null
Array of page IDs to make accessible to the agent. The page and all knowledge under it will be accessible.
user
object | null
Override user information for this voice session.
Show child attributes
initial_context
string | null
Optional context text for the voice session. When provided, the AI will start by briefly explaining this content before listening for user input.
Maximum string length: 2000
initial_message
string | null
Optional initial user message. When provided, the system greeting is skipped and the AI responds directly to this text (e.g. a suggested prompt). Takes precedence over initial_context.
Maximum string length: 2000
ephemeral
boolean | null
default:false
When true, the session is ephemeral and will not save messages to conversation history.
voice_config
object | null
Voice session configuration options.
Show child attributes
discard_if_empty
boolean | null
default:false
When true and this session creates a brand-new conversation (no conversation_id was provided), that conversation is discarded if the session ends without any message ever being sent. Has no effect when continuing an existing conversation. Disabled by default.
Response
Voice session prepared
object
enum<string>
required
Object type discriminator.
Available options:
voice.session
url
string
required
WebSocket URL to connect to. Includes the authentication token as a query parameter.
agent_id
string
required
The resolved agent ID. If no agent was specified in the request, this is the default agent.
start_message
object
required
Ready-made JSON message to send as the first WebSocket frame after connecting. Contains type: "start" and a payload with all session parameters.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Datagrid AI","colors":{"primary":"#000000","light":"#ffbc4d","dark":"#ffbc4d"},"logo":{"light":"https://mintcdn.com/datagrid/3IQk8fJ69KvSFDfU/images/datagrid-logo-light.svg?fit=max\u0026auto=format\u0026n=3IQk8fJ69KvSFDfU\u0026q=85\u0026s=c4274428e9b371bf09005fa9db0ed804","dark":"https://mintcdn.com/datagrid/3IQk8fJ69KvSFDfU/images/datagrid-logo-dark.svg?fit=max\u0026auto=format\u0026n=3IQk8fJ69KvSFDfU\u0026q=85\u0026s=2ef6295f04b1f337c487f26665adc131","href":"https://datagrid.com/"},"favicon":"https://mintcdn.com/datagrid/3IQk8fJ69KvSFDfU/favicon.svg?fit=max\u0026auto=format\u0026n=3IQk8fJ69KvSFDfU\u0026q=85\u0026s=347899b9390b1be995b97d69e8f3e053","api":{"openapi":"datagrid-ai-open-api.yaml","playground":{"display":"interactive"},"examples":{"languages":["python","javascript","bash"]},"mdx":{"server":"https://api.datagrid.com"}},"background":{"decoration":"windows"},"navbar":{"links":[{"href":"mailto:support@datagrid.com","label":"Support"}],"primary":{"type":"button","label":"Get your API Key","href":"https://app.datagrid.com/chats?at=chats\u0026st=api_keys\u0026redirect_url=chats?at=chats%26st=api_keys"}},"footer":{"socials":{"github":"https://github.com/DatagridAI","linkedin":"https://linkedin.com/company/Datagrid-AI","slack":"https://join.slack.com/t/datagrid-users/shared_invite/zt-2tl2omd78-qO8zHN5_sK39_lRsyZA4Dg"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Get your API Key","icon":"code","href":"https://app.datagrid.com/chats?at=chats\u0026st=api_keys\u0026redirect_url=chats?at=chats%26st=api_keys"},{"anchor":"Join us on Slack","icon":"slack","href":"https://join.slack.com/t/datagrid-users/shared_invite/zt-2tl2omd78-qO8zHN5_sK39_lRsyZA4Dg"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"datagrid","hasAudioNarration":false,"actualSubdomain":"datagrid","customDomains":["developers.datagrid.com"],"gitSource":{"type":"github","owner":"toriclabs","repo":"main","deployBranch":"mintlify-prod-docs","contentDirectory":"docs/datagrid-ai","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af637f7015ac6c4e84b3151","clientVersion":"0.0.4128","searchFilterCounts":[{"language":"default","tag":"API Reference","count":177},{"language":"default","tag":"Knowledge","count":20},{"language":"default","tag":"Organization","count":19},{"language":"default","tag":"Channels","count":16},{"language":"default","tag":"Skills","count":12},{"language":"default","tag":"Agents","count":9},{"language":"default","tag":"Converse","count":9},{"language":"default","tag":"MCP Servers - Beta","count":8},{"language":"default","tag":"Batch Predictions","count":7},{"language":"default","tag":"Data Views","count":7}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"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":"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":"editor-metadata","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},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".token{text-wrap:auto}"}],"page":{"pagePath":"api-reference/voice/start-voice-session","slug":"/api-reference/voice/start-voice-session","pageMetadata":{"openapi":"post /voice","title":"Start voice session","description":"Prepare a real-time voice conversation with an AI Agent.\n\nReturns a WebSocket URL and a ready-made `start` message. Open a WebSocket\nconnection to the returned `url`, send `start_message` as the first frame,\nthen stream audio back and forth.\n\nThis REST flow depends on Redis to issue a short-lived REST-to-WebSocket\nhandoff token. During a Redis incident, clients that can construct their\nown `start` message may use the direct WebSocket flow below with a raw\nAPI key.\n\nYou can also skip this endpoint and connect directly:\n`wss://api.datagrid.com/ws/voice?token=YOUR_API_KEY`\n\n**WebSocket Protocol:**\n\nOnce connected, send a JSON message with `type: \"start\"` and the session parameters as the payload.\nThe server responds with `type: \"started\"` containing the session and conversation IDs,\nfollowed by `type: \"ready\"` when the agent is ready to receive audio.\n\n**Audio Format:**\n- Client → Server: 16-bit mono PCM at 16kHz, base64-encoded\n- Server → Client: 16-bit mono PCM at 24kHz, base64-encoded\n\n**Message Types:**\n- Client: `start`, `audio`, `stop`, `interrupt`, `end_turn`, `text`\n- Server: `started`, `ready`, `audio`, `tool_call`, `interrupted`, `error`, `transcript`, `citation`, `ended`\n","href":"/api-reference/voice/start-voice-session"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Prepare a real-time voice conversation with an AI Agent.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Returns a WebSocket URL and a ready-made \", _jsx(_components.code, {\n children: \"start\"\n }), \" message. Open a WebSocket\\nconnection to the returned \", _jsx(_components.code, {\n children: \"url\"\n }), \", send \", _jsx(_components.code, {\n children: \"start_message\"\n }), \" as the first frame,\\nthen stream audio back and forth.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"This REST flow depends on Redis to issue a short-lived REST-to-WebSocket\\nhandoff token. During a Redis incident, clients that can construct their\\nown \", _jsx(_components.code, {\n children: \"start\"\n }), \" message may use the direct WebSocket flow below with a raw\\nAPI key.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"You can also skip this endpoint and connect directly:\\n\", _jsx(_components.code, {\n children: \"wss://api.datagrid.com/ws/voice?token=YOUR_API_KEY\"\n })]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"WebSocket Protocol:\"\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Once connected, send a JSON message with \", _jsx(_components.code, {\n children: \"type: \\\"start\\\"\"\n }), \" and the session parameters as the payload.\\nThe server responds with \", _jsx(_components.code, {\n children: \"type: \\\"started\\\"\"\n }), \" containing the session and conversation IDs,\\nfollowed by \", _jsx(_components.code, {\n children: \"type: \\\"ready\\\"\"\n }), \" when the agent is ready to receive audio.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Audio Format:\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Client → Server: 16-bit mono PCM at 16kHz, base64-encoded\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Server → Client: 16-bit mono PCM at 24kHz, base64-encoded\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Message Types:\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Client: \", _jsx(_components.code, {\n children: \"start\"\n }), \", \", _jsx(_components.code, {\n children: \"audio\"\n }), \", \", _jsx(_components.code, {\n children: \"stop\"\n }), \", \", _jsx(_components.code, {\n children: \"interrupt\"\n }), \", \", _jsx(_components.code, {\n children: \"end_turn\"\n }), \", \", _jsx(_components.code, {\n children: \"text\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Server: \", _jsx(_components.code, {\n children: \"started\"\n }), \", \", _jsx(_components.code, {\n children: \"ready\"\n }), \", \", _jsx(_components.code, {\n children: \"audio\"\n }), \", \", _jsx(_components.code, {\n children: \"tool_call\"\n }), \", \", _jsx(_components.code, {\n children: \"interrupted\"\n }), \", \", _jsx(_components.code, {\n children: \"error\"\n }), \", \", _jsx(_components.code, {\n children: \"transcript\"\n }), \", \", _jsx(_components.code, {\n children: \"citation\"\n }), \", \", _jsx(_components.code, {\n children: \"ended\"\n })]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"post /voice","title":"Start voice session","description":"Prepare a real-time voice conversation with an AI Agent.\n\nReturns a WebSocket URL and a ready-made `start` message. Open a WebSocket\nconnection to the returned `url`, send `start_message` as the first frame,\nthen stream audio back and forth.\n\nThis REST flow depends on Redis to issue a short-lived REST-to-WebSocket\nhandoff token. During a Redis incident, clients that can construct their\nown `start` message may use the direct WebSocket flow below with a raw\nAPI key.\n\nYou can also skip this endpoint and connect directly:\n`wss://api.datagrid.com/ws/voice?token=YOUR_API_KEY`\n\n**WebSocket Protocol:**\n\nOnce connected, send a JSON message with `type: \"start\"` and the session parameters as the payload.\nThe server responds with `type: \"started\"` containing the session and conversation IDs,\nfollowed by `type: \"ready\"` when the agent is ready to receive audio.\n\n**Audio Format:**\n- Client → Server: 16-bit mono PCM at 16kHz, base64-encoded\n- Server → Client: 16-bit mono PCM at 24kHz, base64-encoded\n\n**Message Types:**\n- Client: `start`, `audio`, `stop`, `interrupt`, `end_turn`, `text`\n- Server: `started`, `ready`, `audio`, `tool_call`, `interrupted`, `error`, `transcript`, `citation`, `ended`\n","href":"/api-reference/voice/start-voice-session"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/datagrid/63000a1b04510866/tools/jest.config.js"],"openApiReferenceData":{"operation":{"summary":"Start voice session","operationId":"Voice.startSession","description":"Prepare a real-time voice conversation with an AI Agent.\n\nReturns a WebSocket URL and a ready-made `start` message. Open a WebSocket\nconnection to the returned `url`, send `start_message` as the first frame,\nthen stream audio back and forth.\n\nThis REST flow depends on Redis to issue a short-lived REST-to-WebSocket\nhandoff token. During a Redis incident, clients that can construct their\nown `start` message may use the direct WebSocket flow below with a raw\nAPI key.\n\nYou can also skip this endpoint and connect directly:\n`wss://api.datagrid.com/ws/voice?token=YOUR_API_KEY`\n\n**WebSocket Protocol:**\n\nOnce connected, send a JSON message with `type: \"start\"` and the session parameters as the payload.\nThe server responds with `type: \"started\"` containing the session and conversation IDs,\nfollowed by `type: \"ready\"` when the agent is ready to receive audio.\n\n**Audio Format:**\n- Client → Server: 16-bit mono PCM at 16kHz, base64-encoded\n- Server → Client: 16-bit mono PCM at 24kHz, base64-encoded\n\n**Message Types:**\n- Client: `start`, `audio`, `stop`, `interrupt`, `end_turn`, `text`\n- Server: `started`, `ready`, `audio`, `tool_call`, `interrupted`, `error`, `transcript`, `citation`, `ended`\n","tags":["Voice"],"requestBody":"f3352f26-581a-457e-b73b-c18342284145","responses":{"200":"a6faa9b0-93c0-4ec9-bc99-d72e83f9fc0f","429":"4da2d8c2-cc8e-4355-88c5-f2919f6c9f3a"},"method":"post","type":"path","servers":["fe65afd8-3284-4593-87fa-0e209d579a65"],"security":["7df5ed29-011e-4a43-be82-757e1c8bebff"],"path":"/voice","baseUrlOptions":["https://api.datagrid.com/v1"],"title":"Start voice session","codeSamples":[],"requestExampleLanguages":["python","javascript","bash"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"agent_id":{"oneOf":[{"type":"string","description":"The ID of the agent to use for a direct-agent voice conversation. Ignored when voice_mode is orchestrator.","uniqueKey":"agent_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The ID of the agent to use for a direct-agent voice conversation. Ignored when voice_mode is orchestrator.","uniqueKey":"agent_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_id","typeLabel":"string | null"},"voice_mode":{"oneOf":[{"type":"string","description":"Controls whether the session uses the voice orchestrator, with delegation tools, or talks directly to a specific agent. Defaults to orchestrator when agent_id is omitted and direct_agent when agent_id is provided.","enum":["orchestrator","direct_agent"],"uniqueKey":"voice_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Controls whether the session uses the voice orchestrator, with delegation tools, or talks directly to a specific agent. Defaults to orchestrator when agent_id is omitted and direct_agent when agent_id is provided.","enum":["orchestrator","direct_agent"],"uniqueKey":"voice_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_mode","typeLabel":"enum\u003cstring> | null"},"allow_delegation":{"oneOf":[{"type":"boolean","description":"Orchestrator sessions only: set false to disable specialist delegation tools for the session. Ignored for direct-agent sessions.","uniqueKey":"allow_delegation.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Orchestrator sessions only: set false to disable specialist delegation tools for the session. Ignored for direct-agent sessions.","uniqueKey":"allow_delegation.oneOf.1","typeLabel":"null"}],"uniqueKey":"allow_delegation","typeLabel":"boolean | null"},"conversation_id":{"oneOf":[{"type":"string","description":"The ID of an existing conversation to continue. If not provided, a new conversation will be created. If the id cannot be resolved, the session start fails with the `conversation_not_found` error code rather than silently creating a new conversation.","uniqueKey":"conversation_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The ID of an existing conversation to continue. If not provided, a new conversation will be created. If the id cannot be resolved, the session start fails with the `conversation_not_found` error code rather than silently creating a new conversation.","uniqueKey":"conversation_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"conversation_id","typeLabel":"string | null"},"config":{"oneOf":[{"type":"object","description":"Override the agent config for this voice session.\nOnly prompt overrides are supported — voice sessions always use Gemini Live,\nso LLM model, agent model, planning prompt, and tool settings are not applicable.\nPrompt overrides fully replace the agent's stored values for this session only\nand are never persisted; empty or whitespace-only values are treated as omitted.\n","properties":{"system_prompt":{"oneOf":[{"type":"string","description":"Directs your AI Agent's operational behavior during the voice session. Replaces the agent's stored system prompt for this session only.","maxLength":20000,"uniqueKey":"config.oneOf.0.system_prompt.oneOf.0","typeLabel":"string"},{"type":"null","description":"Directs your AI Agent's operational behavior during the voice session. Replaces the agent's stored system prompt for this session only.","maxLength":20000,"uniqueKey":"config.oneOf.0.system_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.0.system_prompt","typeLabel":"string | null"},"custom_prompt":{"oneOf":[{"type":"string","description":"Custom instructions for the AI Agent during the voice session.","maxLength":20000,"uniqueKey":"config.oneOf.0.custom_prompt.oneOf.0","typeLabel":"string"},{"type":"null","description":"Custom instructions for the AI Agent during the voice session.","maxLength":20000,"uniqueKey":"config.oneOf.0.custom_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.0.custom_prompt","typeLabel":"string | null"},"voice_prompt":{"oneOf":[{"type":"string","description":"Voice-specific instructions (tone, pacing, speaking style). Replaces the agent's stored voice instructions for this session only. Not persisted.","maxLength":20000,"uniqueKey":"config.oneOf.0.voice_prompt.oneOf.0","typeLabel":"string"},{"type":"null","description":"Voice-specific instructions (tone, pacing, speaking style). Replaces the agent's stored voice instructions for this session only. Not persisted.","maxLength":20000,"uniqueKey":"config.oneOf.0.voice_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.0.voice_prompt","typeLabel":"string | null"}},"uniqueKey":"config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Override the agent config for this voice session.\nOnly prompt overrides are supported — voice sessions always use Gemini Live,\nso LLM model, agent model, planning prompt, and tool settings are not applicable.\nPrompt overrides fully replace the agent's stored values for this session only\nand are never persisted; empty or whitespace-only values are treated as omitted.\n","properties":{"system_prompt":{"oneOf":[{"type":"string","description":"Directs your AI Agent's operational behavior during the voice session. Replaces the agent's stored system prompt for this session only.","maxLength":20000},{"type":"null","description":"Directs your AI Agent's operational behavior during the voice session. Replaces the agent's stored system prompt for this session only.","maxLength":20000}]},"custom_prompt":{"oneOf":[{"type":"string","description":"Custom instructions for the AI Agent during the voice session.","maxLength":20000},{"type":"null","description":"Custom instructions for the AI Agent during the voice session.","maxLength":20000}]},"voice_prompt":{"oneOf":[{"type":"string","description":"Voice-specific instructions (tone, pacing, speaking style). Replaces the agent's stored voice instructions for this session only. Not persisted.","maxLength":20000},{"type":"null","description":"Voice-specific instructions (tone, pacing, speaking style). Replaces the agent's stored voice instructions for this session only. Not persisted.","maxLength":20000}]}},"uniqueKey":"config.oneOf.1","typeLabel":"null"}],"uniqueKey":"config","typeLabel":"object | null"},"file_ids":{"oneOf":[{"type":"array","description":"Array of file IDs to attach to the voice conversation.","items":{"type":"string","uniqueKey":"file_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"file_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"Array of file IDs to attach to the voice conversation.","items":{"type":"string"},"uniqueKey":"file_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"file_ids","typeLabel":"string[] | null"},"secret_ids":{"oneOf":[{"type":"array","description":"Array of secret IDs to include in the context.","items":{"type":"string","uniqueKey":"secret_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"secret_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"Array of secret IDs to include in the context.","items":{"type":"string"},"uniqueKey":"secret_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"secret_ids","typeLabel":"string[] | null"},"knowledge_ids":{"oneOf":[{"type":"array","description":"Array of knowledge IDs to make accessible to the agent.","items":{"type":"string","uniqueKey":"knowledge_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"knowledge_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"Array of knowledge IDs to make accessible to the agent.","items":{"type":"string"},"uniqueKey":"knowledge_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"knowledge_ids","typeLabel":"string[] | null"},"page_ids":{"oneOf":[{"type":"array","description":"Array of page IDs to make accessible to the agent. The page and all knowledge under it will be accessible.","items":{"type":"string","uniqueKey":"page_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"page_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"Array of page IDs to make accessible to the agent. The page and all knowledge under it will be accessible.","items":{"type":"string"},"uniqueKey":"page_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"page_ids","typeLabel":"string[] | null"},"user":{"oneOf":[{"type":"object","description":"Override user information for this voice session.","properties":{"first_name":{"oneOf":[{"type":"string","description":"Override the user's first name for this converse call.","uniqueKey":"user.oneOf.0.first_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Override the user's first name for this converse call.","uniqueKey":"user.oneOf.0.first_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"user.oneOf.0.first_name","typeLabel":"string | null"},"last_name":{"oneOf":[{"type":"string","description":"Override the user's last name for this converse call.","uniqueKey":"user.oneOf.0.last_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Override the user's last name for this converse call.","uniqueKey":"user.oneOf.0.last_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"user.oneOf.0.last_name","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","description":"Override the user's email for this converse call.","uniqueKey":"user.oneOf.0.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"Override the user's email for this converse call.","uniqueKey":"user.oneOf.0.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"user.oneOf.0.email","typeLabel":"string | null"}},"uniqueKey":"user.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"user.oneOf.1","typeLabel":"null"}],"uniqueKey":"user","typeLabel":"object | null"},"initial_context":{"oneOf":[{"type":"string","description":"Optional context text for the voice session. When provided, the AI will start by briefly explaining this content before listening for user input.","maxLength":2000,"uniqueKey":"initial_context.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional context text for the voice session. When provided, the AI will start by briefly explaining this content before listening for user input.","maxLength":2000,"uniqueKey":"initial_context.oneOf.1","typeLabel":"null"}],"uniqueKey":"initial_context","typeLabel":"string | null"},"initial_message":{"oneOf":[{"type":"string","description":"Optional initial user message. When provided, the system greeting is skipped and the AI responds directly to this text (e.g. a suggested prompt). Takes precedence over initial_context.","maxLength":2000,"uniqueKey":"initial_message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional initial user message. When provided, the system greeting is skipped and the AI responds directly to this text (e.g. a suggested prompt). Takes precedence over initial_context.","maxLength":2000,"uniqueKey":"initial_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"initial_message","typeLabel":"string | null"},"ephemeral":{"oneOf":[{"type":"boolean","description":"When true, the session is ephemeral and will not save messages to conversation history.","default":false,"uniqueKey":"ephemeral.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"When true, the session is ephemeral and will not save messages to conversation history.","default":false,"uniqueKey":"ephemeral.oneOf.1","typeLabel":"null"}],"uniqueKey":"ephemeral","typeLabel":"boolean | null"},"voice_config":{"oneOf":[{"type":"object","description":"Voice session configuration options.","properties":{"turn_end_mode":{"oneOf":[{"type":"string","enum":["server","client"],"default":"server","description":"Controls how user audio turns close. 'server' uses the existing RMS and silence timer. 'client' disables that timer and requires an explicit end_turn message after each utterance.","uniqueKey":"voice_config.oneOf.0.turn_end_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["server","client"],"default":"server","description":"Controls how user audio turns close. 'server' uses the existing RMS and silence timer. 'client' disables that timer and requires an explicit end_turn message after each utterance.","uniqueKey":"voice_config.oneOf.0.turn_end_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config.oneOf.0.turn_end_mode","typeLabel":"enum\u003cstring> | null"},"voice_preset":{"oneOf":[{"type":"string","description":"Voice preset to use (e.g., 'sage', 'nova', 'spark'). If not provided, uses the agent's configured voice preset or the default.","uniqueKey":"voice_config.oneOf.0.voice_preset.oneOf.0","typeLabel":"string"},{"type":"null","description":"Voice preset to use (e.g., 'sage', 'nova', 'spark'). If not provided, uses the agent's configured voice preset or the default.","uniqueKey":"voice_config.oneOf.0.voice_preset.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config.oneOf.0.voice_preset","typeLabel":"string | null"},"language":{"oneOf":[{"type":"string","description":"BCP-47 tag for the client's locale (e.g. 'en-US'). Used as the transcription language hint when the agent has no configured language; without it the provider detects the language per utterance and can transcribe speech in an unexpected script. The agent's configured language takes precedence.","uniqueKey":"voice_config.oneOf.0.language.oneOf.0","typeLabel":"string"},{"type":"null","description":"BCP-47 tag for the client's locale (e.g. 'en-US'). Used as the transcription language hint when the agent has no configured language; without it the provider detects the language per utterance and can transcribe speech in an unexpected script. The agent's configured language takes precedence.","uniqueKey":"voice_config.oneOf.0.language.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config.oneOf.0.language","typeLabel":"string | null"},"silence_commit_ms":{"oneOf":[{"type":"number","description":"Duration of silence (no agent audio) in milliseconds before auto-committing a segment. Default: 30000 (30 seconds).","uniqueKey":"voice_config.oneOf.0.silence_commit_ms.oneOf.0","typeLabel":"number"},{"type":"null","description":"Duration of silence (no agent audio) in milliseconds before auto-committing a segment. Default: 30000 (30 seconds).","uniqueKey":"voice_config.oneOf.0.silence_commit_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config.oneOf.0.silence_commit_ms","typeLabel":"number | null"},"segment_max_duration_ms":{"oneOf":[{"type":"number","description":"Maximum duration in milliseconds of a buffered segment before force-commit. Default: 180000 (3 minutes).","uniqueKey":"voice_config.oneOf.0.segment_max_duration_ms.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum duration in milliseconds of a buffered segment before force-commit. Default: 180000 (3 minutes).","uniqueKey":"voice_config.oneOf.0.segment_max_duration_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config.oneOf.0.segment_max_duration_ms","typeLabel":"number | null"},"silence_discard_ratio":{"oneOf":[{"type":"number","description":"Discard a segment if this fraction (0-1) of its audio is silence. Default: 0.9 (90% silence threshold).","uniqueKey":"voice_config.oneOf.0.silence_discard_ratio.oneOf.0","typeLabel":"number"},{"type":"null","description":"Discard a segment if this fraction (0-1) of its audio is silence. Default: 0.9 (90% silence threshold).","uniqueKey":"voice_config.oneOf.0.silence_discard_ratio.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config.oneOf.0.silence_discard_ratio","typeLabel":"number | null"},"input_transcription":{"oneOf":[{"type":"boolean","description":"Enable transcription of user input audio. Default: true.","uniqueKey":"voice_config.oneOf.0.input_transcription.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Enable transcription of user input audio. Default: true.","uniqueKey":"voice_config.oneOf.0.input_transcription.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config.oneOf.0.input_transcription","typeLabel":"boolean | null"},"output_transcription":{"oneOf":[{"type":"boolean","description":"Enable transcription of agent output audio. Default: true.","uniqueKey":"voice_config.oneOf.0.output_transcription.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Enable transcription of agent output audio. Default: true.","uniqueKey":"voice_config.oneOf.0.output_transcription.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config.oneOf.0.output_transcription","typeLabel":"boolean | null"},"silence_timeout":{"oneOf":[{"type":"boolean","description":"When true, the server closes the connection after the client has been continuously sending audio frames below the speech-detection threshold for 60 seconds. Frames are still required — a fully muted microphone (no frames sent) pauses the countdown. Disabled by default.","uniqueKey":"voice_config.oneOf.0.silence_timeout.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"When true, the server closes the connection after the client has been continuously sending audio frames below the speech-detection threshold for 60 seconds. Frames are still required — a fully muted microphone (no frames sent) pauses the countdown. Disabled by default.","uniqueKey":"voice_config.oneOf.0.silence_timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config.oneOf.0.silence_timeout","typeLabel":"boolean | null"},"silent_start":{"oneOf":[{"type":"boolean","description":"When true, skip the launch greeting and start directly in listening mode. Disabled by default.","uniqueKey":"voice_config.oneOf.0.silent_start.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"When true, skip the launch greeting and start directly in listening mode. Disabled by default.","uniqueKey":"voice_config.oneOf.0.silent_start.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config.oneOf.0.silent_start","typeLabel":"boolean | null"}},"uniqueKey":"voice_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Voice session configuration options.","properties":{"turn_end_mode":{"oneOf":[{"type":"string","enum":["server","client"],"default":"server","description":"Controls how user audio turns close. 'server' uses the existing RMS and silence timer. 'client' disables that timer and requires an explicit end_turn message after each utterance."},{"type":"null","enum":["server","client"],"default":"server","description":"Controls how user audio turns close. 'server' uses the existing RMS and silence timer. 'client' disables that timer and requires an explicit end_turn message after each utterance."}]},"voice_preset":{"oneOf":[{"type":"string","description":"Voice preset to use (e.g., 'sage', 'nova', 'spark'). If not provided, uses the agent's configured voice preset or the default."},{"type":"null","description":"Voice preset to use (e.g., 'sage', 'nova', 'spark'). If not provided, uses the agent's configured voice preset or the default."}]},"language":{"oneOf":[{"type":"string","description":"BCP-47 tag for the client's locale (e.g. 'en-US'). Used as the transcription language hint when the agent has no configured language; without it the provider detects the language per utterance and can transcribe speech in an unexpected script. The agent's configured language takes precedence."},{"type":"null","description":"BCP-47 tag for the client's locale (e.g. 'en-US'). Used as the transcription language hint when the agent has no configured language; without it the provider detects the language per utterance and can transcribe speech in an unexpected script. The agent's configured language takes precedence."}]},"silence_commit_ms":{"oneOf":[{"type":"number","description":"Duration of silence (no agent audio) in milliseconds before auto-committing a segment. Default: 30000 (30 seconds)."},{"type":"null","description":"Duration of silence (no agent audio) in milliseconds before auto-committing a segment. Default: 30000 (30 seconds)."}]},"segment_max_duration_ms":{"oneOf":[{"type":"number","description":"Maximum duration in milliseconds of a buffered segment before force-commit. Default: 180000 (3 minutes)."},{"type":"null","description":"Maximum duration in milliseconds of a buffered segment before force-commit. Default: 180000 (3 minutes)."}]},"silence_discard_ratio":{"oneOf":[{"type":"number","description":"Discard a segment if this fraction (0-1) of its audio is silence. Default: 0.9 (90% silence threshold)."},{"type":"null","description":"Discard a segment if this fraction (0-1) of its audio is silence. Default: 0.9 (90% silence threshold)."}]},"input_transcription":{"oneOf":[{"type":"boolean","description":"Enable transcription of user input audio. Default: true."},{"type":"null","description":"Enable transcription of user input audio. Default: true."}]},"output_transcription":{"oneOf":[{"type":"boolean","description":"Enable transcription of agent output audio. Default: true."},{"type":"null","description":"Enable transcription of agent output audio. Default: true."}]},"silence_timeout":{"oneOf":[{"type":"boolean","description":"When true, the server closes the connection after the client has been continuously sending audio frames below the speech-detection threshold for 60 seconds. Frames are still required — a fully muted microphone (no frames sent) pauses the countdown. Disabled by default."},{"type":"null","description":"When true, the server closes the connection after the client has been continuously sending audio frames below the speech-detection threshold for 60 seconds. Frames are still required — a fully muted microphone (no frames sent) pauses the countdown. Disabled by default."}]},"silent_start":{"oneOf":[{"type":"boolean","description":"When true, skip the launch greeting and start directly in listening mode. Disabled by default."},{"type":"null","description":"When true, skip the launch greeting and start directly in listening mode. Disabled by default."}]}},"uniqueKey":"voice_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_config","typeLabel":"object | null"},"discard_if_empty":{"oneOf":[{"type":"boolean","description":"When true and this session creates a brand-new conversation (no conversation_id was provided), that conversation is discarded if the session ends without any message ever being sent. Has no effect when continuing an existing conversation. Disabled by default.","default":false,"uniqueKey":"discard_if_empty.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"When true and this session creates a brand-new conversation (no conversation_id was provided), that conversation is discarded if the session ends without any message ever being sent. Has no effect when continuing an existing conversation. Disabled by default.","default":false,"uniqueKey":"discard_if_empty.oneOf.1","typeLabel":"null"}],"uniqueKey":"discard_if_empty","typeLabel":"boolean | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"agent_id":"\u003cstring>","allow_delegation":true,"conversation_id":"\u003cstring>","config":{"system_prompt":"\u003cstring>","custom_prompt":"\u003cstring>","voice_prompt":"\u003cstring>"},"file_ids":["\u003cstring>"],"secret_ids":["\u003cstring>"],"knowledge_ids":["\u003cstring>"],"page_ids":["\u003cstring>"],"user":{"first_name":"\u003cstring>","last_name":"\u003cstring>","email":"\u003cstring>"},"initial_context":"\u003cstring>","initial_message":"\u003cstring>","ephemeral":false,"voice_config":{"turn_end_mode":"server","voice_preset":"\u003cstring>","language":"\u003cstring>","silence_commit_ms":123,"segment_max_duration_ms":123,"silence_discard_ratio":123,"input_transcription":true,"output_transcription":true,"silence_timeout":true,"silent_start":true},"discard_if_empty":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"a6faa9b0-93c0-4ec9-bc99-d72e83f9fc0f":{"description":"Voice session prepared","content":{"application/json":{"schema":{"type":"object","required":["object","url","agent_id","start_message"],"properties":{"object":{"type":"string","description":"Object type discriminator.","enum":["voice.session"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"WebSocket URL to connect to. Includes the authentication token as a query parameter.","isRequired":true,"uniqueKey":"url","typeLabel":"string"},"agent_id":{"type":"string","description":"The resolved agent ID. If no agent was specified in the request, this is the default agent.","isRequired":true,"uniqueKey":"agent_id","typeLabel":"string"},"start_message":{"type":"object","description":"Ready-made JSON message to send as the first WebSocket frame after connecting. Contains `type: \"start\"` and a `payload` with all session parameters.","isRequired":true,"uniqueKey":"start_message","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"voice.session","url":"\u003cstring>","agent_id":"\u003cstring>","start_message":{}}}},"exampleType":"generated"}},"headers":{"X-Daily-Credit-Cap-Remaining":{"description":"Credits left before the account's daily credit cap (set in Control Tower) is reached, rounded up. `0` means the cap has been reached; the daily cap does not block requests. Present only when a daily cap is configured.","schema":{"type":"integer","example":600}},"X-Monthly-Credit-Cap-Remaining":{"description":"Credits left before the account's monthly credit cap (set in Control Tower) is reached, rounded up. At `0`, credit-consuming requests return `402` until the next calendar month. Present only when a monthly cap is configured.","schema":{"type":"integer","example":15000}}},"exampleType":"generated"},"4da2d8c2-cc8e-4355-88c5-f2919f6c9f3a":{"description":"Rate limit exceeded. The request has been throttled because the rate limit for this endpoint has been reached. Check the `Retry-After` response header and retry after the specified number of seconds.","content":{"application/json":{"schema":{"type":"object","description":"Returned when the rate limit is exceeded. Rate limits are enforced per teamspace, endpoint path, and HTTP method over a 60-second sliding window. Each endpoint may have its own limit — check the X-RateLimit-Limit response header for the effective value.","required":["error","message","retryable","status_code"],"properties":{"status_code":{"type":"integer","description":"The HTTP status code (429).","isRequired":true,"uniqueKey":"status_code","typeLabel":"integer"},"error":{"type":"string","enum":["rate_limit_exceeded"],"description":"The error code identifying this as a rate limit error.","isRequired":true,"uniqueKey":"error","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"A human-readable error message.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"retryable":{"type":"boolean","description":"Whether the request can be retried after a delay.","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"statusCode":{"type":"integer","deprecated":true,"description":"Deprecated. Use status_code instead.","uniqueKey":"statusCode","typeLabel":"integer"},"mitigation":{"type":"string","description":"Suggested action to resolve the error.","uniqueKey":"mitigation","typeLabel":"string"},"details":{"type":"object","properties":{"reason":{"type":"string","description":"A detailed explanation of why the rate limit was exceeded.","uniqueKey":"details.reason","typeLabel":"string"}},"uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status_code":123,"error":"rate_limit_exceeded","message":"\u003cstring>","retryable":true,"statusCode":123,"mitigation":"\u003cstring>","details":{"reason":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"7df5ed29-011e-4a43-be82-757e1c8bebff":{"BearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"fe65afd8-3284-4593-87fa-0e209d579a65":{"url":"https://api.datagrid.com/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"datagrid-ai-open-api.yaml"},"subdomain":"datagrid","siteName":"Datagrid AI","title":"Start voice session - Datagrid AI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-07T12:31:50.482Z","originalFileLocation":"api-reference/voice/start-voice-session.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=\"Prepare a real-time voice conversation with an AI Agent. Returns a WebSocket URL and a ready-made start message. Open a WebSocket connection to the returned url, send start_message as the first frame, then stream audio back and forth. This REST flow depends on Redis to issue a short-lived REST-to-WebSocket handoff token. During a Redis incident, clients that can construct their own start message may use the direct WebSocket flow below with a raw API key. You can also skip this endpoint and connect directly: wss://api.datagrid.com/ws/voice?token=YOUR_API_KEY WebSocket Protocol: Once connected, send a JSON message with type: \u0026quot;start\u0026quot; and the session parameters as the payload. The server responds with type: \u0026quot;started\u0026quot; containing the session and conversation IDs, followed by type: \u0026quot;ready\u0026quot; when the agent is ready to receive audio. Audio Format: - Client → Server: 16-bit mono PCM at 16kHz, base64-encoded - Server → Client: 16-bit mono PCM at 24kHz, base64-encoded Message Types: - Client: start, audio, stop, interrupt, end_turn, text - Server: started, ready, audio, tool_call, interrupted, error, transcript, citation, ended\">\u003cmeta data-mint-head name=\"application-name\" content=\"Datagrid AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/datagrid/rhNSAymIRcJFenDe/_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/datagrid/rhNSAymIRcJFenDe/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/datagrid/rhNSAymIRcJFenDe/_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/datagrid/rhNSAymIRcJFenDe/_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/datagrid/rhNSAymIRcJFenDe/_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/datagrid/rhNSAymIRcJFenDe/_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/datagrid/rhNSAymIRcJFenDe/_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/datagrid/rhNSAymIRcJFenDe/_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/datagrid/rhNSAymIRcJFenDe/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Start voice session - Datagrid AI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Prepare a real-time voice conversation with an AI Agent. Returns a WebSocket URL and a ready-made start message. Open a WebSocket connection to the returned url, send start_message as the first frame, then stream audio back and forth. This REST flow depends on Redis to issue a short-lived REST-to-WebSocket handoff token. During a Redis incident, clients that can construct their own start message may use the direct WebSocket flow below with a raw API key. You can also skip this endpoint and connect directly: wss://api.datagrid.com/ws/voice?token=YOUR_API_KEY WebSocket Protocol: Once connected, send a JSON message with type: \u0026quot;start\u0026quot; and the session parameters as the payload. The server responds with type: \u0026quot;started\u0026quot; containing the session and conversation IDs, followed by type: \u0026quot;ready\u0026quot; when the agent is ready to receive audio. Audio Format: - Client → Server: 16-bit mono PCM at 16kHz, base64-encoded - Server → Client: 16-bit mono PCM at 24kHz, base64-encoded Message Types: - Client: start, audio, stop, interrupt, end_turn, text - Server: started, ready, audio, tool_call, interrupted, error, transcript, citation, ended\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Datagrid AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.datagrid.com/api-reference/voice/start-voice-session\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://datagrid.mintlify.site/_mintlify/api/og/v2?division=Voice\u0026amp;title=Start+voice+session\u0026amp;description=Prepare+a+real-time+voice+conversation+with+an+AI+Agent.%0A%0AReturns+a+WebSocket+URL+and+a+ready-made+%60start%60+message.+Open+a+WebSocket%0Aconnection+to+the+returned+\u0026amp;theme=06bd8f76b3fa654bb45ee804\u0026amp;signature=6c41965482dce3380004d8c62ea78c15228cdd16bfdef662416aab9cf621a3b2\">\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=\"Start voice session - Datagrid AI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Prepare a real-time voice conversation with an AI Agent. Returns a WebSocket URL and a ready-made start message. Open a WebSocket connection to the returned url, send start_message as the first frame, then stream audio back and forth. This REST flow depends on Redis to issue a short-lived REST-to-WebSocket handoff token. During a Redis incident, clients that can construct their own start message may use the direct WebSocket flow below with a raw API key. You can also skip this endpoint and connect directly: wss://api.datagrid.com/ws/voice?token=YOUR_API_KEY WebSocket Protocol: Once connected, send a JSON message with type: \u0026quot;start\u0026quot; and the session parameters as the payload. The server responds with type: \u0026quot;started\u0026quot; containing the session and conversation IDs, followed by type: \u0026quot;ready\u0026quot; when the agent is ready to receive audio. Audio Format: - Client → Server: 16-bit mono PCM at 16kHz, base64-encoded - Server → Client: 16-bit mono PCM at 24kHz, base64-encoded Message Types: - Client: start, audio, stop, interrupt, end_turn, text - Server: started, ready, audio, tool_call, interrupted, error, transcript, citation, ended\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://datagrid.mintlify.site/_mintlify/api/og/v2?division=Voice\u0026amp;title=Start+voice+session\u0026amp;description=Prepare+a+real-time+voice+conversation+with+an+AI+Agent.%0A%0AReturns+a+WebSocket+URL+and+a+ready-made+%60start%60+message.+Open+a+WebSocket%0Aconnection+to+the+returned+\u0026amp;theme=06bd8f76b3fa654bb45ee804\u0026amp;signature=6c41965482dce3380004d8c62ea78c15228cdd16bfdef662416aab9cf621a3b2\">\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/datagrid/rhNSAymIRcJFenDe/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Datagrid AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.datagrid.com/api-reference/voice/start-voice-session\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/voice/start-voice-session.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developers.datagrid.com/#organization\",\"name\":\"Datagrid AI\",\"url\":\"https://developers.datagrid.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/datagrid/3IQk8fJ69KvSFDfU/images/datagrid-logo-light.svg?fit=max\u0026auto=format\u0026n=3IQk8fJ69KvSFDfU\u0026q=85\u0026s=c4274428e9b371bf09005fa9db0ed804\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.datagrid.com#website\",\"name\":\"Datagrid AI\",\"url\":\"https://developers.datagrid.com\",\"publisher\":{\"@id\":\"https://developers.datagrid.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.datagrid.com/api-reference/voice/start-voice-session#webpage\",\"url\":\"https://developers.datagrid.com/api-reference/voice/start-voice-session\",\"name\":\"Start voice session\",\"description\":\"Prepare a real-time voice conversation with an AI Agent. Returns a WebSocket URL and a ready-made start message. Open a WebSocket connection to the returned url, send start_message as the first frame, then stream audio back and forth. This REST flow depends on Redis to issue a short-lived REST-to-WebSocket handoff token. During a Redis incident, clients that can construct their own start message may use the direct WebSocket flow below with a raw API key. You can also skip this endpoint and connect directly: wss://api.datagrid.com/ws/voice?token=YOUR_API_KEY WebSocket Protocol: Once connected, send a JSON message with type: \\\"start\\\" and the session parameters as the payload. The server responds with type: \\\"started\\\" containing the session and conversation IDs, followed by type: \\\"ready\\\" when the agent is ready to receive audio. Audio Format: - Client → Server: 16-bit mono PCM at 16kHz, base64-encoded - Server → Client: 16-bit mono PCM at 24kHz, base64-encoded Message Types: - Client: start, audio, stop, interrupt, end_turn, text - Server: started, ready, audio, tool_call, interrupted, error, transcript, citation, ended\",\"dateModified\":\"2026-10-07T12:31:50.482Z\",\"isPartOf\":{\"@id\":\"https://developers.datagrid.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.datagrid.com/api-reference/voice/start-voice-session#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.datagrid.com/api-reference/voice/start-voice-session#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Voice\",\"item\":\"https://developers.datagrid.com/api-reference/voice/voice\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Start voice session\",\"item\":\"https://developers.datagrid.com/api-reference/voice/start-voice-session\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.datagrid.com/api-reference/voice/start-voice-session#apireference\",\"headline\":\"Start voice session\",\"name\":\"Start voice session\",\"description\":\"Prepare a real-time voice conversation with an AI Agent. Returns a WebSocket URL and a ready-made start message. Open a WebSocket connection to the returned url, send start_message as the first frame, then stream audio back and forth. This REST flow depends on Redis to issue a short-lived REST-to-WebSocket handoff token. During a Redis incident, clients that can construct their own start message may use the direct WebSocket flow below with a raw API key. You can also skip this endpoint and connect directly: wss://api.datagrid.com/ws/voice?token=YOUR_API_KEY WebSocket Protocol: Once connected, send a JSON message with type: \\\"start\\\" and the session parameters as the payload. The server responds with type: \\\"started\\\" containing the session and conversation IDs, followed by type: \\\"ready\\\" when the agent is ready to receive audio. Audio Format: - Client → Server: 16-bit mono PCM at 16kHz, base64-encoded - Server → Client: 16-bit mono PCM at 24kHz, base64-encoded Message Types: - Client: start, audio, stop, interrupt, end_turn, text - Server: started, ready, audio, tool_call, interrupted, error, transcript, citation, ended\",\"url\":\"https://developers.datagrid.com/api-reference/voice/start-voice-session\",\"mainEntityOfPage\":{\"@id\":\"https://developers.datagrid.com/api-reference/voice/start-voice-session#webpage\"},\"dateModified\":\"2026-10-07T12:31:50.482Z\",\"publisher\":{\"@id\":\"https://developers.datagrid.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.datagrid.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Datagrid AI\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Datagrid AI\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/voice/start-voice-session.md","siteName":"Datagrid AI","nav":{"global":{"anchors":[{"anchor":"Get your API Key","icon":"code","href":"https://app.datagrid.com/chats?at=chats\u0026st=api_keys\u0026redirect_url=chats?at=chats%26st=api_keys"},{"anchor":"Join us on Slack","icon":"slack","href":"https://join.slack.com/t/datagrid-users/shared_invite/zt-2tl2omd78-qO8zHN5_sK39_lRsyZA4Dg"}]},"tabs":[{"tab":"API Reference","groups":[{"group":"Introduction","pages":[{"title":"Quickstart","href":"/introduction/quickstart"},{"title":"Connecting Agents to Apps","href":"/introduction/connections"},{"title":"Creating Data Views","href":"/introduction/data-views"},{"title":"Rate Limits","href":"/api-reference/rate-limits"},{"title":"Agent Server egress IPs","href":"/introduction/agent-server-egress-ips"}]},{"group":"Converse","pages":[{"title":"Getting started with Converse","href":"/api-reference/converse/converse-getting-started"},{"openapi":"post /converse","title":"Converse","href":"/api-reference/converse/converse"},{"title":"Converse Modes","href":"/api-reference/converse/modes"},{"title":"Knowledge and corpus","href":"/api-reference/converse/knowledge-and-corpus"},{"title":"Streaming","href":"/api-reference/converse/streaming"},{"title":"Structured Outputs","href":"/api-reference/converse/structured-outputs"},{"title":"File Inputs","href":"/api-reference/converse/file-inputs"},{"title":"MCP Servers (Beta)","href":"/api-reference/converse/mcp-servers"},{"title":"Long Running Calls","href":"/api-reference/converse/long-running-calls"}]},{"group":"Voice","pages":[{"title":"Voice Conversations","href":"/api-reference/voice/voice"},{"title":"iOS / Swift Integration","description":"Build a real-time voice assistant in an iOS app using the Datagrid Voice WebSocket API","href":"/api-reference/voice/ios-integration"},{"openapi":"post /voice","title":"Start voice session","href":"/api-reference/voice/start-voice-session"},{"openapi":"get /voice-orchestrator/tasks/{task_id}","title":"Retrieve voice orchestrator task","description":null,"href":"/api-reference/voice/retrieve-voice-orchestrator-task"},{"openapi":"get /voice-orchestrator/tasks","title":"List voice orchestrator tasks","href":"/api-reference/voice/list-voice-orchestrator-tasks"},{"openapi":"patch /voice-orchestrator/tasks/{task_id}/acknowledge","title":"Acknowledge voice orchestrator task","href":"/api-reference/voice/acknowledge-voice-orchestrator-task"},{"openapi":"patch /voice-orchestrator/tasks/{task_id}/cancel","title":"Cancel voice orchestrator task","href":"/api-reference/voice/cancel-voice-orchestrator-task"}]},{"group":"Identity","pages":[{"openapi":"get /identity","title":"Retrieve current identity","href":"/api-reference/identity/retrieve-current-identity"}]},{"group":"Agents","pages":[{"title":"Getting started with Agents","href":"/api-reference/agents/agents"},{"title":"Getting the most out of agents","href":"/api-reference/agents/agent-best-practices"},{"openapi":"post /agents","title":"Create agent","href":"/api-reference/agents/create-agent"},{"openapi":"get /agents/{agent_id}","title":"Retrieve agent","href":"/api-reference/agents/retrieve-agent"},{"openapi":"get /agents","title":"List agents","href":"/api-reference/agents/list-agents"},{"openapi":"patch /agents/{agent_id}","title":"Update agent","href":"/api-reference/agents/update-agent"},{"openapi":"delete /agents/{agent_id}","title":"Delete agent","href":"/api-reference/agents/delete-agent"},{"openapi":"post /agents/generate","title":"Generate agent from natural language","href":"/api-reference/agents/generate-agent-from-natural-language"},{"openapi":"post /agents/claim","title":"Claim a generated agent template","href":"/api-reference/agents/claim-a-generated-agent-template"}]},{"group":"Skills","pages":[{"openapi":"post /skills","title":"Create skill","href":"/api-reference/skills/create-skill"},{"openapi":"get /skills/{skill_id}","title":"Retrieve skill","href":"/api-reference/skills/retrieve-skill"},{"openapi":"get /skills","title":"List skills","href":"/api-reference/skills/list-skills"},{"openapi":"patch /skills/{skill_id}","title":"Update skill","href":"/api-reference/skills/update-skill"},{"openapi":"delete /skills/{skill_id}","title":"Delete skill","href":"/api-reference/skills/delete-skill"},{"openapi":"post /skills/{skill_id}/clone","title":"Clone skill","href":"/api-reference/skills/clone-skill"},{"openapi":"get /skills/builtin","title":"List built-in skill catalog","href":"/api-reference/skills/list-built-in-skill-catalog"},{"openapi":"post /skills/builtin/{builtin_key}/override","title":"Override built-in skill","href":"/api-reference/skills/override-built-in-skill"},{"openapi":"post /skills/builtin/{builtin_key}/reset","title":"Reset built-in skill override","href":"/api-reference/skills/reset-built-in-skill-override"},{"openapi":"post /skills/{skill_id}/promote","title":"Promote skill to company","href":"/api-reference/skills/promote-skill-to-company"},{"openapi":"post /skills/{skill_id}/demote","title":"Demote skill to private","href":"/api-reference/skills/demote-skill-to-private"},{"openapi":"post /skills/generate","title":"Generate skill drafts","href":"/api-reference/skills/generate-skill-drafts"}]},{"group":"Automations","pages":[{"openapi":"post /agents/{agent_id}/automations","title":"Create automation","href":"/api-reference/automations/create-automation"},{"openapi":"get /agents/{agent_id}/automations/{automation_id}","title":"Retrieve automation","href":"/api-reference/automations/retrieve-automation"},{"openapi":"get /agents/{agent_id}/automations","title":"List automations","href":"/api-reference/automations/list-automations"},{"openapi":"patch /agents/{agent_id}/automations/{automation_id}","title":"Update automation","href":"/api-reference/automations/update-automation"},{"openapi":"delete /agents/{agent_id}/automations/{automation_id}","title":"Delete automation","href":"/api-reference/automations/delete-automation"}]},{"group":"Knowledge","pages":[{"openapi":"post /knowledge","title":"Create knowledge","href":"/api-reference/knowledge/create-knowledge"},{"openapi":"post /knowledge/connect","title":"Create knowledge from connection","href":"/api-reference/knowledge/create-knowledge-from-connection"},{"openapi":"get /knowledge/{knowledge_id}","title":"Retrieve knowledge","href":"/api-reference/knowledge/retrieve-knowledge"},{"openapi":"get /knowledge","title":"List knowledge","href":"/api-reference/knowledge/list-knowledge"},{"openapi":"patch /knowledge/{knowledge_id}","title":"Update knowledge","href":"/api-reference/knowledge/update-knowledge"},{"openapi":"delete /knowledge/{knowledge_id}","title":"Delete knowledge","href":"/api-reference/knowledge/delete-knowledge"},{"openapi":"post /knowledge/{knowledge_id}/reindex","title":"Reindex knowledge","href":"/api-reference/knowledge/reindex-knowledge"},{"title":"Knowledge upload limits","href":"/knowledge/upload-limits"},{"group":"Tables","pages":[{"openapi":"get /tables/{table_id}","title":"Retrieve table","href":"/api-reference/tables/retrieve-table"},{"openapi":"get /tables","title":"List tables","href":"/api-reference/tables/list-tables"},{"openapi":"get /tables/{table_id}/records","title":"List records","href":"/api-reference/tables/list-records"},{"openapi":"get /tables/{table_id}/summaries","title":"List summaries","href":"/api-reference/tables/list-summaries"},{"title":"Replicating Tables","href":"/api-reference/tables/replicating-tables"}]},{"group":"Data Views","pages":[{"openapi":"post /data-views","title":"Create data view","href":"/api-reference/data-views/create-data-view"},{"openapi":"get /data-views","title":"List data views","href":"/api-reference/data-views/list-data-views"},{"openapi":"delete /data-views/{data_view_id}","title":"Delete data view","href":"/api-reference/data-views/delete-data-view"},{"openapi":"post /data-views/service-accounts","title":"Create service account","href":"/api-reference/data-views/create-service-account"},{"openapi":"get /data-views/service-accounts","title":"List service accounts","href":"/api-reference/data-views/list-service-accounts"},{"openapi":"delete /data-views/service-accounts/{service_account_id}","title":"Delete service account","href":"/api-reference/data-views/delete-service-account"},{"openapi":"get /data-views/service-accounts/{service_account_id}/credentials","title":"Get service account credentials","href":"/api-reference/data-views/get-service-account-credentials"}]}]},{"group":"Search","pages":[{"openapi":"get /search","title":"Search","href":"/api-reference/search/search"},{"openapi":"get /search/tree","title":"Search Tree","href":"/api-reference/search/search-tree"},{"openapi":"post /search/ai","title":"AI Search","href":"/api-reference/search/ai-search"}]},{"group":"Conversations","pages":[{"openapi":"post /conversations","title":"Create conversation","href":"/api-reference/conversations/create-conversation"},{"openapi":"get /conversations/{conversation_id}","title":"Retrieve conversation","href":"/api-reference/conversations/retrieve-conversation"},{"openapi":"get /conversations","title":"List conversations","href":"/api-reference/conversations/list-conversations"},{"openapi":"delete /conversations/{conversation_id}","title":"Delete conversation","href":"/api-reference/conversations/delete-conversation"},{"openapi":"patch /conversations/{conversation_id}","title":"Update conversation","href":"/api-reference/conversations/update-conversation"}]},{"group":"Messages","pages":[{"openapi":"get /conversations/{conversation_id}/messages/{message_id}","title":"Retrieve message","href":"/api-reference/conversations/retrieve-message"},{"openapi":"get /conversations/{conversation_id}/messages","title":"List messages","href":"/api-reference/conversations/list-messages"},{"openapi":"post /conversations/{conversation_id}/messages/{message_id}","title":"Submit message feedback","href":"/api-reference/conversations/submit-message-feedback"}]},{"group":"Connections","pages":[{"openapi":"post /connections","title":"Create connection","href":"/api-reference/connections/create-connection"},{"openapi":"get /connections/{connection_id}","title":"Retrieve connection","href":"/api-reference/connections/retrieve-connection"},{"openapi":"get /connections","title":"List connections","href":"/api-reference/connections/list-connections"},{"openapi":"patch /connections/{connection_id}","title":"Update connection","href":"/api-reference/connections/update-connection"},{"openapi":"delete /connections/{connection_id}","title":"Delete connection","href":"/api-reference/connections/delete-connection"}]},{"group":"Connection Providers","pages":[{"openapi":"post /connection-providers","title":"Create connection provider","href":"/api-reference/connection-providers/create-connection-provider"},{"openapi":"get /connection-providers/{connection_provider_id}","title":"Retrieve connection provider","href":"/api-reference/connection-providers/retrieve-connection-provider"},{"openapi":"get /connection-providers","title":"List connection providers","href":"/api-reference/connection-providers/list-connection-providers"},{"openapi":"patch /connection-providers/{connection_provider_id}","title":"Update connection provider","href":"/api-reference/connection-providers/update-connection-provider"},{"openapi":"delete /connection-providers/{connection_provider_id}","title":"Delete connection provider","href":"/api-reference/connection-providers/delete-connection-provider"}]},{"group":"Connectors","pages":[{"openapi":"get /connectors","title":"List connectors","href":"/api-reference/connectors/list-connectors"},{"openapi":"get /connectors/health","title":"Get connector health","href":"/api-reference/connectors/get-connector-health"}]},{"group":"Files","pages":[{"openapi":"post /files","title":"Create files","href":"/api-reference/files/create-files"},{"openapi":"get /files/{file_id}","title":"Retrieve file","href":"/api-reference/files/retrieve-file"},{"openapi":"get /files","title":"List files","href":"/api-reference/files/list-files"},{"openapi":"delete /files/{file_id}","title":"Delete file","href":"/api-reference/files/delete-file"},{"openapi":"get /files/{file_id}/content","title":"Retrieve file content","href":"/api-reference/files/retrieve-file-content"},{"openapi":"patch /files/{file_id}","title":"Update file","href":"/api-reference/files/update-file"}]},{"group":"Tools","pages":[{"openapi":"get /tools/{tool_name}","title":"Retrieve tool","href":"/api-reference/tools/retrieve-tool"},{"openapi":"get /tools","title":"List tools","href":"/api-reference/tools/list-tools"}]},{"group":"Models","pages":[{"openapi":"get /models","title":"List models","href":"/api-reference/models/list-models"}]},{"group":"Secrets","pages":[{"openapi":"post /secrets","title":"Create secret","href":"/api-reference/secrets/create-secret"},{"openapi":"get /secrets/{secret_id}","title":"Retrieve secret","href":"/api-reference/secrets/retrieve-secret"},{"openapi":"get /secrets","title":"List secrets","href":"/api-reference/secrets/list-secrets"},{"openapi":"delete /secrets/{secret_id}","title":"Delete secret","href":"/api-reference/secrets/delete-secret"}]},{"group":"Webhooks","pages":[{"title":"Webhooks overview","href":"/api-reference/webhooks/overview"},{"openapi":"post /webhooks","title":"Create webhook","href":"/api-reference/webhooks/create-webhook"},{"openapi":"get /webhooks/{webhook_id}","title":"Retrieve webhook","href":"/api-reference/webhooks/retrieve-webhook"},{"openapi":"get /webhooks","title":"List webhooks","href":"/api-reference/webhooks/list-webhooks"},{"openapi":"patch /webhooks/{webhook_id}","title":"Update webhook","href":"/api-reference/webhooks/update-webhook"},{"openapi":"delete /webhooks/{webhook_id}","title":"Delete webhook","href":"/api-reference/webhooks/delete-webhook"},{"openapi":"get /webhooks/active","title":"List active webhooks for event","href":"/api-reference/webhooks/list-active-webhooks-for-event"}]},{"group":"Memory","pages":[{"openapi":"post /user-memories","title":"Create User Memory","href":"/api-reference/memory/create-user-memory"},{"openapi":"get /user-memories","title":"List User Memory","href":"/api-reference/memory/list-user-memory"},{"openapi":"delete /user-memories/{user_memory_id}","title":"Delete User Memory","href":"/api-reference/memory/delete-user-memory"}]},{"group":"Pages","pages":[{"openapi":"post /pages","title":"Create page","href":"/api-reference/pages/create-page"},{"openapi":"get /pages/{page_id}","title":"Retrieve page","href":"/api-reference/pages/retrieve-page"},{"openapi":"get /pages","title":"List pages","href":"/api-reference/pages/list-pages"},{"openapi":"patch /pages/{page_id}","title":"Update page","href":"/api-reference/pages/update-page"},{"openapi":"delete /pages/{page_id}","title":"Delete page","href":"/api-reference/pages/delete-page"}]},{"group":"MCP Servers - Beta","pages":[{"title":"Overview","href":"/api-reference/mcp-servers/overview"},{"openapi":"post /organization/mcp-servers","title":"Create MCP server","href":"/api-reference/mcp-servers/create-mcp-server"},{"openapi":"get /organization/mcp-servers/{server_id}","title":"Retrieve MCP server","href":"/api-reference/mcp-servers/retrieve-mcp-server"},{"openapi":"get /organization/mcp-servers","title":"List MCP servers","href":"/api-reference/mcp-servers/list-mcp-servers"},{"openapi":"patch /organization/mcp-servers/{server_id}","title":"Update MCP server","href":"/api-reference/mcp-servers/update-mcp-server"},{"openapi":"delete /organization/mcp-servers/{server_id}","title":"Delete MCP server","href":"/api-reference/mcp-servers/delete-mcp-server"},{"openapi":"post /organization/mcp-servers/{server_id}/start-oauth","title":"Start MCP OAuth flow","href":"/api-reference/mcp-servers/start-mcp-oauth-flow"},{"openapi":"post /organization/mcp-servers/{server_id}/oauth-callback","title":"Complete MCP OAuth flow","href":"/api-reference/mcp-servers/complete-mcp-oauth-flow"}]},{"group":"Batch Predictions","pages":[{"title":"Batch Predictions overview","href":"/api-reference/batch-predictions/overview"},{"openapi":"post /batch-predictions","title":"Create batch prediction","href":"/api-reference/batch-predictions/create-batch-prediction"},{"openapi":"get /batch-predictions/{batch_prediction_id}","title":"Retrieve batch prediction","href":"/api-reference/batch-predictions/retrieve-batch-prediction"},{"openapi":"get /batch-predictions","title":"List batch predictions","href":"/api-reference/batch-predictions/list-batch-predictions"},{"openapi":"post /batch-predictions/{batch_prediction_id}/cancel","title":"Cancel batch prediction","href":"/api-reference/batch-predictions/cancel-batch-prediction"},{"openapi":"get /batch-predictions/{batch_prediction_id}/results","title":"Retrieve batch prediction results","href":"/api-reference/batch-predictions/retrieve-batch-prediction-results"},{"title":"Batch prediction errors","href":"/api-reference/batch-predictions/errors"}]},{"group":"Event Triggers","pages":[{"title":"Event Triggers overview","href":"/api-reference/event-triggers/overview"},{"openapi":"post /agents/{agent_id}/event-triggers","title":"Create event trigger","href":"/api-reference/event-triggers/create-event-trigger"},{"openapi":"get /agents/{agent_id}/event-triggers","title":"List event triggers","href":"/api-reference/event-triggers/list-event-triggers"},{"openapi":"patch /agents/{agent_id}/event-triggers/{trigger_id}","title":"Update event trigger","href":"/api-reference/event-triggers/update-event-trigger"},{"openapi":"delete /agents/{agent_id}/event-triggers/{trigger_id}","title":"Delete event trigger","href":"/api-reference/event-triggers/delete-event-trigger"}]},{"group":"Channels","pages":[{"openapi":"post /channels","title":"Create channel","href":"/api-reference/channels/create-channel"},{"openapi":"post /channels/{channel_id}/messages","title":"Create channel message","href":"/api-reference/channels/create-channel-message"},{"openapi":"post /channels/{channel_id}/threads/{thread_id}/messages","title":"Create thread message","href":"/api-reference/channels/create-thread-message"},{"openapi":"get /channels/{channel_id}","title":"Retrieve channel","href":"/api-reference/channels/retrieve-channel"},{"openapi":"get /channels/{channel_id}/threads/{thread_id}","title":"Retrieve channel thread","href":"/api-reference/channels/retrieve-channel-thread"},{"openapi":"get /channels","title":"List channels","href":"/api-reference/channels/list-channels"},{"openapi":"get /channels/{channel_id}/members","title":"List channel members","href":"/api-reference/channels/list-channel-members"},{"openapi":"get /channels/{channel_id}/messages","title":"List channel messages","href":"/api-reference/channels/list-channel-messages"},{"openapi":"get /channels/{channel_id}/threads","title":"List channel threads","href":"/api-reference/channels/list-channel-threads"},{"openapi":"get /channels/{channel_id}/threads/{thread_id}/messages","title":"List thread messages","href":"/api-reference/channels/list-thread-messages"},{"openapi":"patch /channels/{channel_id}","title":"Update channel","href":"/api-reference/channels/update-channel"},{"openapi":"post /channels/{channel_id}/members","title":"Add channel members","href":"/api-reference/channels/add-channel-members"},{"openapi":"delete /channels/{channel_id}/members/{member_id}","title":"Remove channel member","href":"/api-reference/channels/remove-channel-member"},{"openapi":"post /channels/{channel_id}/messages/{message_id}/threads","title":"Start a thread","href":"/api-reference/channels/start-a-thread"},{"openapi":"post /channels/{channel_id}/messages/{message_id}/reactions","title":"Add a message reaction","href":"/api-reference/channels/add-a-message-reaction"},{"openapi":"delete /channels/{channel_id}/messages/{message_id}/reactions/{reaction}","title":"Remove a message reaction","href":"/api-reference/channels/remove-a-message-reaction"}]},{"group":"Procore","pages":[{"openapi":"get /procore/companies","title":"List Procore companies","href":"/api-reference/procore/list-procore-companies"},{"openapi":"get /procore/companies/{company_id}/projects","title":"List Procore projects in a company","href":"/api-reference/procore/list-procore-projects-in-a-company"},{"openapi":"get /procore/companies/{company_id}/projects/{project_id}/connection","title":"Check whether a Procore project is connected to Procore AI","href":"/api-reference/procore/check-whether-a-procore-project-is-connected-to-procore-ai"}]},{"group":"Organization","pages":[{"group":"Credits","pages":[{"openapi":"get /organization/credits","title":"Get credits","href":"/api-reference/credits/get-credits"},{"openapi":"get /organization/reports/user-credits-consumption","title":"List user credit consumption","href":"/api-reference/credits/list-user-credit-consumption"},{"openapi":"get /organization/reports/consumption-breakdown","title":"List consumption breakdown","href":"/api-reference/credits/list-consumption-breakdown"}]},{"group":"Users","pages":[{"openapi":"get /organization/users/{user_id}","title":"Retrieve user","href":"/api-reference/users/retrieve-user"},{"openapi":"get /organization/users","title":"List users","href":"/api-reference/users/list-users"},{"openapi":"patch /organization/users/{user_id}","title":"Update user","href":"/api-reference/users/update-user"}]},{"group":"Teamspaces","pages":[{"openapi":"post /organization/teamspaces","title":"Create teamspace","href":"/api-reference/teamspaces/create-teamspace"},{"openapi":"get /organization/teamspaces/{teamspace_id}","title":"Retrieve teamspace","href":"/api-reference/teamspaces/retrieve-teamspace"},{"openapi":"get /organization/teamspaces","title":"List teamspaces","href":"/api-reference/teamspaces/list-teamspaces"},{"openapi":"patch /organization/teamspaces/{teamspace_id}","title":"Update teamspace","href":"/api-reference/teamspaces/update-teamspace"},{"title":"Scope Requests to a Teamspace","href":"/api-reference/teamspaces/scope-to-teamspace"}]},{"group":"Teamspace Invites","pages":[{"openapi":"post /organization/teamspaces/{teamspace_id}/invites","title":"Invite user to a teamspace","href":"/api-reference/teamspace-invites/invite-user-to-a-teamspace"},{"openapi":"get /organization/teamspaces/{teamspace_id}/invites/{invite_id}","title":"Retrieve teamspace invite","href":"/api-reference/teamspace-invites/retrieve-teamspace-invite"},{"openapi":"get /organization/teamspaces/{teamspace_id}/invites","title":"List teamspace invites","href":"/api-reference/teamspace-invites/list-teamspace-invites"},{"openapi":"delete /organization/teamspaces/{teamspace_id}/invites/{invite_id}","title":"Delete teamspace invite","href":"/api-reference/teamspace-invites/delete-teamspace-invite"}]},{"group":"Teamspace Users","pages":[{"openapi":"get /organization/teamspaces/{teamspace_id}/users/{user_id}","title":"Retrieve teamspace user","href":"/api-reference/teamspace-users/retrieve-teamspace-user"},{"openapi":"get /organization/teamspaces/{teamspace_id}/users","title":"List teamspace users","href":"/api-reference/teamspace-users/list-teamspace-users"},{"openapi":"patch /organization/teamspaces/{teamspace_id}/users/{user_id}","title":"Update teamspace user","href":"/api-reference/teamspace-users/update-teamspace-user"},{"openapi":"delete /organization/teamspaces/{teamspace_id}/users/{user_id}","title":"Delete teamspace user","href":"/api-reference/teamspace-users/delete-teamspace-user"}]}]}]},{"tab":"Connectors","pages":[{"title":"Connectors","href":"/connectors/all-connectors"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/2026-08"}]}]},"basePath":"","title":"Start voice session - Datagrid AI","buildId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","deploymentId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DbeN8Wo6.js","utils-CwSb5Doc.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BmREeM3N.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-AYjWerCj.js","snippetPresets-QD4ULQlp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-Digj5cjF.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CiHrzluR.js","shallow-D7h7pFGg.js","getApiPlaygroundDisplay-mlxkpAUf.js","CodeSnippet-D2rH5lZI.js","CodeSnippets-B53ulOaL.js","Page-CqcDm2To.js","getPastedJson-DxGeNMih.js","icon-BHbyrebp.js","MethodPill-C7F_KEEJ.js","DuplicateIcon-j3c5-73z.js","createIcon-OvCnyFqD.js","DynamicMarkdown-DpAS3GCb.js","SectionHeading-DMPpdrvW.js","axios-vUo_bRtp.js","Markdown-D7pDRguu.js","clsx-2_c6mSt_.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cu7_SikL.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ydqCcy4b.js"]}