Set stream to true, or omit it, to receive a Server-Sent Events response from POST /v1/run.Use the thread WebSocket when you want durable thread state plus live token, reasoning, source, and tool-output deltas.
Event names and payloads are produced by the active agent runtime and may vary by execution mode. Clients should parse SSE frames generically:
async function streamAgentRun() { const response = await fetch('https://api.runtools.ai/v1/run', { method: 'POST', headers: { 'X-API-Key': process.env.RUNTOOLS_API_KEY!, 'Content-Type': 'application/json', 'Accept': 'text/event-stream', }, body: JSON.stringify({ agent: 'code-assistant', prompt: 'Run the test suite.', stream: true, }), }); if (!response.body) throw new Error('No stream body'); const reader = response.body.getReader(); const decoder = new TextDecoder(); let buffer = ''; for (;;) { const { done, value } = await reader.read(); if (done) break; buffer += decoder.decode(value, { stream: true }); let boundary = buffer.indexOf('\n\n'); while (boundary !== -1) { const frame = buffer.slice(0, boundary); buffer = buffer.slice(boundary + 2); console.log(frame); boundary = buffer.indexOf('\n\n'); } }}
Common SSE categories include agent text deltas, tool calls, tool results, errors, and completion frames. The exact run stream payload is produced by the active runtime.
The initial frame is a snapshot with protocol_version: 1. Owners receive live content. Admin broader-view sockets receive a metadata-only snapshot when they are not the thread owner.Transient frames such as assistant_message_delta, assistant_thinking_delta, assistant_message_source, tool_call_started, tool_output_delta, and tool_call_completed are live-only. Final assistant_message, tool_call, and tool_result frames are durable thread events.
Thread API
See the full frame catalog and thread-event publish route.
Use stream: false when you only need the final result:
const result = await rt.agent.run('code-assistant', 'Run the tests.', { stream: false,});
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Runtools.ai","colors":{"primary":"#0f172a","light":"#f8fafc","dark":"#020617"},"logo":{"light":"https://mintcdn.com/runtools/w_g7vQbhuzfUXBfI/icon-main.png?fit=max\u0026auto=format\u0026n=w_g7vQbhuzfUXBfI\u0026q=85\u0026s=21a9915bb615a6efa8321adfdef521a9","dark":"https://mintcdn.com/runtools/w_g7vQbhuzfUXBfI/icon-white.png?fit=max\u0026auto=format\u0026n=w_g7vQbhuzfUXBfI\u0026q=85\u0026s=98ac80700d2a5c1af6778a43c7c9f588"},"favicon":"https://mintcdn.com/runtools/w_g7vQbhuzfUXBfI/icon-main.png?fit=max\u0026auto=format\u0026n=w_g7vQbhuzfUXBfI\u0026q=85\u0026s=21a9915bb615a6efa8321adfdef521a9","api":{},"background":{"color":{"light":"#f1f5f9","dark":"#000000"}},"search":{"prompt":"Search Runtools docs..."},"seo":{},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"runtools","hasAudioNarration":false,"actualSubdomain":"runtools","customDomains":["docs.runtools.ai"],"gitSource":{"type":"github","owner":"runtools-ai","repo":"runtools.ai","deployBranch":"master","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae947abd388ef32a6c56925:success","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"API Reference","count":221},{"language":"default","tag":"Documentation","count":25},{"language":"default","tag":"Sandboxes","count":20},{"language":"default","tag":"Projects","count":13},{"language":"default","tag":"RunMesh","count":12},{"language":"default","tag":"SDK","count":12},{"language":"default","tag":"TypeScript SDK","count":12},{"language":"default","tag":"Workspace files","count":12},{"language":"default","tag":"Agents","count":11},{"language":"default","tag":"Advanced","count":10}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"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":"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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/agents/stream","slug":"/api-reference/agents/stream","pageMetadata":{"title":"Stream Runs \u0026 Threads","api":"POST /v1/run","description":"Stream immediate run output with SSE and live thread frames with WebSockets","icon":"radio","href":"/api-reference/agents/stream"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Stream immediate run output with SSE and live thread frames with WebSockets\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{Card,CodeBlock,Heading}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Set `,_jsx(_components.code,{children:`stream`}),` to `,_jsx(_components.code,{children:`true`}),`, or omit it, to receive a Server-Sent Events response from `,_jsx(_components.code,{children:`POST /v1/run`}),`.`]}),`\n`,_jsx(_components.p,{children:`Use the thread WebSocket when you want durable thread state plus live token, reasoning, source, and tool-output deltas.`}),`\n`,_jsx(Heading,{level:`2`,id:`request`,children:`Request`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -N`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.runtools.ai/v1/run`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-API-Key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$RUNTOOLS_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Accept: text/event-stream\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"agent\": \"code-assistant\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"prompt\": \"Create a tiny TypeScript CLI.\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"stream\": true,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"threadId\": \"thr_docs_example\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Streaming responses include:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Content-Type: text/event-stream`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`X-Run-ID: \u003crun-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`X-Thread-ID: \u003cthread-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`event-shape`,children:`Event Shape`}),`\n`,_jsx(_components.p,{children:`Event names and payloads are produced by the active agent runtime and may vary by execution mode. Clients should parse SSE frames generically:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`35`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`35`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` streamAgentRun`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'https://api.runtools.ai/v1/run'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` method:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'POST'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-API-Key'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`RUNTOOLS_API_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'application/json'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Accept'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'text/event-stream'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` body:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`stringify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` agent:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'code-assistant'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` prompt:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Run the test suite.'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` stream:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`throw`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'No stream body'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` reader`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getReader`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` decoder`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` TextDecoder`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` buffer`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ''`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (;;) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`done`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` reader`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`read`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`done`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`break`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` buffer`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` decoder`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`decode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`stream:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` boundary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` buffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`indexOf`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` while`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`boundary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !==`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` -`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` frame`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` buffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`slice`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`boundary`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` buffer`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` buffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`slice`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`boundary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`frame`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` boundary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` buffer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`indexOf`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\n\\\\n`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Common SSE categories include agent text deltas, tool calls, tool results, errors, and completion frames. The exact run stream payload is produced by the active runtime.`}),`\n`,_jsx(Heading,{level:`2`,id:`thread-websocket`,children:`Thread WebSocket`}),`\n`,_jsx(_components.p,{children:`The WebSocket surface is the canonical live thread stream:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`wss://api.runtools.ai/v1/threads/{threadId}/events?api_key=\u003ckey>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`wss://api.runtools.ai/v1/threads/{threadId}/events?token=\u003csession-token>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`The initial frame is a `,_jsx(_components.code,{children:`snapshot`}),` with `,_jsx(_components.code,{children:`protocol_version: 1`}),`. Owners receive live content. Admin broader-view sockets receive a metadata-only snapshot when they are not the thread owner.`]}),`\n`,_jsxs(_components.p,{children:[`Transient frames such as `,_jsx(_components.code,{children:`assistant_message_delta`}),`, `,_jsx(_components.code,{children:`assistant_thinking_delta`}),`, `,_jsx(_components.code,{children:`assistant_message_source`}),`, `,_jsx(_components.code,{children:`tool_call_started`}),`, `,_jsx(_components.code,{children:`tool_output_delta`}),`, and `,_jsx(_components.code,{children:`tool_call_completed`}),` are live-only. Final `,_jsx(_components.code,{children:`assistant_message`}),`, `,_jsx(_components.code,{children:`tool_call`}),`, and `,_jsx(_components.code,{children:`tool_result`}),` frames are durable thread events.`]}),`\n`,_jsx(Card,{title:`Thread API`,icon:`book-open`,href:`/api-reference/threads`,children:_jsx(_components.p,{children:`See the full frame catalog and thread-event publish route.`})}),`\n`,_jsx(Heading,{level:`2`,id:`non-streaming-alternative`,children:`Non-Streaming Alternative`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`stream: false`}),` when you only need the final result:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` result`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` rt`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`agent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'code-assistant'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Run the tests.'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` stream:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Stream Runs \u0026 Threads","api":"POST /v1/run","description":"Stream immediate run output with SSE and live thread frames with WebSockets","icon":"radio","href":"/api-reference/agents/stream"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Request","slug":"request","depth":2,"children":[]},{"title":"Event Shape","slug":"event-shape","depth":2,"children":[]},{"title":"Thread WebSocket","slug":"thread-websocket","depth":2,"children":[]},{"title":"Non-Streaming Alternative","slug":"non-streaming-alternative","depth":2,"children":[]}],"codeExamples":{},"endpoint":{"title":"Stream Runs \u0026 Threads","path":"/v1/run","method":"post","request":{"security":[],"parameters":{"query":{},"header":{},"cookie":{},"path":{}},"body":{}},"response":{},"deprecated":false}},"jsLinks":[],"subdomain":"runtools","siteName":"Runtools.ai","title":"Stream Runs \u0026 Threads - Runtools.ai","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-04T21:09:28.502Z","originalFileLocation":"api-reference/agents/stream.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=\"Stream immediate run output with SSE and live thread frames with WebSockets\">\u003cmeta data-mint-head name=\"application-name\" content=\"Runtools.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/runtools/6hOqBMG5K3M7qmua/_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/runtools/6hOqBMG5K3M7qmua/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/runtools/6hOqBMG5K3M7qmua/_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/runtools/6hOqBMG5K3M7qmua/_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/runtools/6hOqBMG5K3M7qmua/_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/runtools/6hOqBMG5K3M7qmua/_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/runtools/6hOqBMG5K3M7qmua/_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/runtools/6hOqBMG5K3M7qmua/_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/runtools/6hOqBMG5K3M7qmua/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Stream Runs \u0026amp; Threads - Runtools.ai\">\u003cmeta data-mint-head property=\"og:description\" content=\"Stream immediate run output with SSE and live thread frames with WebSockets\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Runtools.ai\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.runtools.ai/api-reference/agents/stream\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://runtools.mintlify.site/_mintlify/api/og/v2?division=Agents\u0026amp;title=Stream+Runs+%26+Threads\u0026amp;description=Stream+immediate+run+output+with+SSE+and+live+thread+frames+with+WebSockets\u0026amp;theme=22347206e190c2fc55a9fc84\u0026amp;signature=9d30798908515180a0658020e4862f3f0ce9c5e026553bac51a449eb56a7c814\">\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=\"Stream Runs \u0026amp; Threads - Runtools.ai\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Stream immediate run output with SSE and live thread frames with WebSockets\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://runtools.mintlify.site/_mintlify/api/og/v2?division=Agents\u0026amp;title=Stream+Runs+%26+Threads\u0026amp;description=Stream+immediate+run+output+with+SSE+and+live+thread+frames+with+WebSockets\u0026amp;theme=22347206e190c2fc55a9fc84\u0026amp;signature=9d30798908515180a0658020e4862f3f0ce9c5e026553bac51a449eb56a7c814\">\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/runtools/6hOqBMG5K3M7qmua/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Runtools.ai\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0f172a\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.runtools.ai/api-reference/agents/stream\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/agents/stream.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.runtools.ai/#organization\",\"name\":\"Runtools.ai\",\"url\":\"https://docs.runtools.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/runtools/w_g7vQbhuzfUXBfI/icon-main.png?fit=max\u0026auto=format\u0026n=w_g7vQbhuzfUXBfI\u0026q=85\u0026s=21a9915bb615a6efa8321adfdef521a9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.runtools.ai#website\",\"name\":\"Runtools.ai\",\"url\":\"https://docs.runtools.ai\",\"publisher\":{\"@id\":\"https://docs.runtools.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.runtools.ai/api-reference/agents/stream#webpage\",\"url\":\"https://docs.runtools.ai/api-reference/agents/stream\",\"name\":\"Stream Runs \u0026 Threads\",\"description\":\"Stream immediate run output with SSE and live thread frames with WebSockets\",\"dateModified\":\"2026-07-04T21:09:28.502Z\",\"isPartOf\":{\"@id\":\"https://docs.runtools.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.runtools.ai/api-reference/agents/stream#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.runtools.ai/api-reference/agents/stream#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agents\",\"item\":\"https://docs.runtools.ai/api-reference/agents/create-runtime\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Stream Runs \u0026 Threads\",\"item\":\"https://docs.runtools.ai/api-reference/agents/stream\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.runtools.ai/api-reference/agents/stream#apireference\",\"headline\":\"Stream Runs \u0026 Threads\",\"name\":\"Stream Runs \u0026 Threads\",\"description\":\"Stream immediate run output with SSE and live thread frames with WebSockets\",\"url\":\"https://docs.runtools.ai/api-reference/agents/stream\",\"mainEntityOfPage\":{\"@id\":\"https://docs.runtools.ai/api-reference/agents/stream#webpage\"},\"dateModified\":\"2026-07-04T21:09:28.502Z\",\"publisher\":{\"@id\":\"https://docs.runtools.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.runtools.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Runtools.ai\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Runtools.ai\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/agents/stream.md","siteName":"Runtools.ai","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","icon":"terminal","groups":[{"group":"Overview","icon":"book-open","pages":[{"title":"API Overview","icon":"book","href":"/api-reference/overview"},{"title":"Authentication","icon":"key","href":"/api-reference/authentication"},{"title":"Billing","api":"GET /v1/billing/my-usage","icon":"credit-card","href":"/api-reference/billing"},{"title":"Activity","api":"GET /v1/activity","icon":"clock-rotate-left","href":"/api-reference/activity"},{"title":"Models","api":"GET /v1/models/available","icon":"brain","href":"/api-reference/models"}]},{"group":"Agents","icon":"robot","pages":[{"title":"Create Agent","api":"POST /v1/agents","icon":"robot","href":"/api-reference/agents/create-runtime"},{"title":"Deployments","icon":"box","href":"/api-reference/agents/create-deployment"},{"title":"Run Agent","api":"POST /v1/run","description":"Run an agent one-shot or in a persisted thread","icon":"play","href":"/api-reference/agents/run"},{"title":"Stream Runs \u0026 Threads","api":"POST /v1/run","icon":"radio","href":"/api-reference/agents/stream"},{"title":"Threads","api":"GET /v1/threads","description":"Read, update, delete, stream, and publish thread events","icon":"book-open","href":"/api-reference/threads"}]},{"group":"Sandboxes","icon":"server","pages":[{"title":"List Sandboxes","api":"GET /v1/sandboxes","icon":"list","href":"/api-reference/sandboxes/list"},{"title":"Create Sandbox","api":"POST /v1/sandboxes","icon":"square-plus","href":"/api-reference/sandboxes/create"},{"title":"Get Sandbox","api":"GET /v1/sandboxes/{id}","icon":"server","href":"/api-reference/sandboxes/get"},{"title":"Execute Command","api":"POST /v1/sandboxes/{id}/exec","icon":"terminal","href":"/api-reference/sandboxes/exec"},{"title":"Pause Sandbox","api":"POST /v1/sandboxes/{id}/pause","icon":"pause","href":"/api-reference/sandboxes/pause"},{"title":"Resume Sandbox","api":"POST /v1/sandboxes/{id}/resume","icon":"play","href":"/api-reference/sandboxes/resume"},{"title":"Delete Sandbox","api":"DELETE /v1/sandboxes/{id}","icon":"trash","href":"/api-reference/sandboxes/delete"}]},{"group":"Tools","icon":"wrench","pages":[{"title":"Search Tool Hub","api":"GET /v1/marketplace/search","icon":"search","href":"/api-reference/tools/search"},{"title":"List Tools","api":"GET /v1/tools","icon":"list","href":"/api-reference/tools/list"},{"title":"Install Tool","api":"POST /v1/tools/{slug}/install","icon":"download","href":"/api-reference/tools/install"},{"title":"Execute Tool","api":"POST /v1/tools/{slug}/execute","icon":"play","href":"/api-reference/tools/execute"}]},{"group":"Channels","icon":"signal-bars","pages":[{"title":"Channels","api":"GET /v1/agent-channels","icon":"signal-bars","href":"/api-reference/channels"}]},{"group":"Workspaces","icon":"folder-tree","pages":[{"title":"Manage Workspaces","api":"GET /v1/workspaces","icon":"folder-tree","href":"/api-reference/workspaces/manage"},{"title":"Workspace Files","api":"GET /v1/workspaces/{id}/files","icon":"folder-open","href":"/api-reference/workspaces/files"}]},{"group":"RunMesh","icon":"server","pages":[{"title":"RunMesh","api":"GET /v1/runmesh/nodes","icon":"server","href":"/api-reference/runmesh"}]},{"group":"Channels","pages":[{"title":"List agent channels","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agent-channels","href":"/api-reference/channels/list-agent-channels"},{"title":"Connect an agent channel","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agent-channels","href":"/api-reference/channels/connect-an-agent-channel"},{"title":"Register a channel webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agent-channels/{channelId}/register-webhook","href":"/api-reference/channels/register-a-channel-webhook"},{"title":"Get channel privacy","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agent-channels/{channelId}/privacy","href":"/api-reference/channels/get-channel-privacy"},{"title":"Update channel privacy","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/agent-channels/{channelId}/privacy","href":"/api-reference/channels/update-channel-privacy"},{"title":"Approve a channel access request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agent-channels/{channelId}/privacy/requests/{requestId}/approve","href":"/api-reference/channels/approve-a-channel-access-request"},{"title":"Deny a channel access request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agent-channels/{channelId}/privacy/requests/{requestId}/deny","href":"/api-reference/channels/deny-a-channel-access-request"},{"title":"Approve a known channel conversation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agent-channels/{channelId}/privacy/grants","href":"/api-reference/channels/approve-a-known-channel-conversation"},{"title":"Revoke channel access","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/agent-channels/{channelId}/privacy/grants/{grantId}","href":"/api-reference/channels/revoke-channel-access"}]},{"group":"Health","pages":[{"title":"Service liveness probe","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /health","href":"/api-reference/health/service-liveness-probe"},{"title":"Service readiness (DB connectivity)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /ready","href":"/api-reference/health/service-readiness-db-connectivity"}]},{"group":"Profile","pages":[{"title":"Get current user","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/me","href":"/api-reference/profile/get-current-user"},{"title":"Update current user","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/me","href":"/api-reference/profile/update-current-user"}]},{"group":"Organizations","pages":[{"title":"List user's organizations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations","href":"/api-reference/organizations/list-users-organizations"},{"title":"Create a new organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/organizations","href":"/api-reference/organizations/create-a-new-organization"},{"title":"Get the active organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/current","href":"/api-reference/organizations/get-the-active-organization"},{"title":"Get tool install policy","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/current/tool-policy","href":"/api-reference/organizations/get-tool-install-policy"},{"title":"Update tool install policy (admin only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/organizations/current/tool-policy","href":"/api-reference/organizations/update-tool-install-policy-admin-only"},{"title":"Get an organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}","href":"/api-reference/organizations/get-an-organization"},{"title":"Update organization name/settings (admin only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/organizations/{id}","href":"/api-reference/organizations/update-organization-namesettings-admin-only"},{"title":"List org members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/members","href":"/api-reference/organizations/list-org-members"}]},{"group":"Projects","pages":[{"title":"List org projects","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects","href":"/api-reference/projects/list-org-projects"},{"title":"Create a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects","href":"/api-reference/projects/create-a-project"},{"title":"Get a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}","href":"/api-reference/projects/get-a-project"},{"title":"Delete a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/projects/{id}","href":"/api-reference/projects/delete-a-project"},{"title":"Rename or update a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/projects/{id}","href":"/api-reference/projects/rename-or-update-a-project"},{"title":"List pinned agents for a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/agent-pins","href":"/api-reference/projects/list-pinned-agents-for-a-project"},{"title":"Replace pinned agents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/projects/{id}/agent-pins","href":"/api-reference/projects/replace-pinned-agents"},{"title":"List pinned sandboxes for a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/sandbox-pins","href":"/api-reference/projects/list-pinned-sandboxes-for-a-project"},{"title":"Replace pinned sandboxes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/projects/{id}/sandbox-pins","href":"/api-reference/projects/replace-pinned-sandboxes"},{"title":"List pinned workflows for a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/workflow-pins","href":"/api-reference/projects/list-pinned-workflows-for-a-project"},{"title":"Replace pinned workflows","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/projects/{id}/workflow-pins","href":"/api-reference/projects/replace-pinned-workflows"},{"title":"List all mixed pinned resources for a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/resource-pins","href":"/api-reference/projects/list-all-mixed-pinned-resources-for-a-project"},{"title":"Replace mixed pinned resources","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/projects/{id}/resource-pins","href":"/api-reference/projects/replace-mixed-pinned-resources"}]},{"group":"Sandboxes","pages":[{"title":"List sandboxes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sandboxes","href":"/api-reference/sandboxes/list-sandboxes"},{"title":"Create a sandbox","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sandboxes","href":"/api-reference/sandboxes/create-a-sandbox"},{"title":"Get a sandbox","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sandboxes/{id}","href":"/api-reference/sandboxes/get-a-sandbox"},{"title":"Delete a sandbox","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/sandboxes/{id}","href":"/api-reference/sandboxes/delete-a-sandbox"},{"title":"Update sandbox metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/sandboxes/{id}","href":"/api-reference/sandboxes/update-sandbox-metadata"},{"title":"Live sandbox stats","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sandboxes/{id}/stats","href":"/api-reference/sandboxes/live-sandbox-stats"},{"title":"Execute a command in a sandbox","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sandboxes/{id}/exec","href":"/api-reference/sandboxes/execute-a-command-in-a-sandbox"},{"title":"Mint a capability dev URL","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sandboxes/{id}/url","href":"/api-reference/sandboxes/mint-a-capability-dev-url"},{"title":"Pause a sandbox","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sandboxes/{id}/pause","href":"/api-reference/sandboxes/pause-a-sandbox"},{"title":"Resume a paused sandbox","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/sandboxes/{id}/resume","href":"/api-reference/sandboxes/resume-a-paused-sandbox"},{"title":"Get SSH connection info","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sandboxes/{id}/ssh","href":"/api-reference/sandboxes/get-ssh-connection-info"},{"title":"Get VNC connection info (desktop sandboxes)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sandboxes/{id}/vnc","href":"/api-reference/sandboxes/get-vnc-connection-info-desktop-sandboxes"},{"title":"Get sandbox logs (tail)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sandboxes/{id}/logs","href":"/api-reference/sandboxes/get-sandbox-logs-tail"}]},{"group":"Activity","pages":[{"title":"Sandbox activity events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/sandboxes/{id}/activity","href":"/api-reference/activity/sandbox-activity-events"},{"title":"Activity events scoped to a thread","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/threads/{threadId}/activity","href":"/api-reference/activity/activity-events-scoped-to-a-thread"},{"title":"Activity scoped to an install","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/installable-agents/installs/{installId}/activity","href":"/api-reference/activity/activity-scoped-to-an-install"},{"title":"Workspace activity events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{id}/activity","href":"/api-reference/activity/workspace-activity-events"},{"title":"Activity for a RunMesh device","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/runmesh/devices/{id}/activity","href":"/api-reference/activity/activity-for-a-runmesh-device"},{"title":"List customer activity events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/activity","href":"/api-reference/activity/list-customer-activity-events"},{"title":"Activity scoped to a tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/tools/{slug}/activity","href":"/api-reference/activity/activity-scoped-to-a-tool"}]},{"group":"Agents","pages":[{"title":"List agents in the org","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents","href":"/api-reference/agents/list-agents-in-the-org"},{"title":"Create or upsert an agent (by slug)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents","href":"/api-reference/agents/create-or-upsert-an-agent-by-slug"},{"title":"Get an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents/{slug}","href":"/api-reference/agents/get-an-agent"},{"title":"Delete an agent (soft delete)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/agents/{slug}","href":"/api-reference/agents/delete-an-agent-soft-delete"},{"title":"Update an agent (partial)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/agents/{slug}","href":"/api-reference/agents/update-an-agent-partial"},{"title":"Assign or change agent's linked sandbox","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/agents/{slug}/sandbox","href":"/api-reference/agents/assign-or-change-agents-linked-sandbox"}]},{"group":"Agent marketplace","pages":[{"title":"Publish or unpublish an agent (admin only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/agents/{slug}/publish","href":"/api-reference/agent-marketplace/publish-or-unpublish-an-agent-admin-only"},{"title":"Install a marketplace agent into the caller's org","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agents/{slug}/install","href":"/api-reference/agent-marketplace/install-a-marketplace-agent-into-the-callers-org"},{"title":"List published marketplace agents (public)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/agents/marketplace","href":"/api-reference/agent-marketplace/list-published-marketplace-agents-public"}]},{"group":"Agent runs","pages":[{"title":"List recent agent runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/run","href":"/api-reference/agent-runs/list-recent-agent-runs"},{"title":"Run an agent (streaming or one-shot)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/run","href":"/api-reference/agent-runs/run-an-agent-streaming-or-one-shot"},{"title":"Get an agent run by ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/run/{id}","href":"/api-reference/agent-runs/get-an-agent-run-by-id"},{"title":"Cancel an agent run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/run/{id}/cancel","href":"/api-reference/agent-runs/cancel-an-agent-run"},{"title":"List threads for an agent (legacy run-scoped path)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/run/threads","href":"/api-reference/agent-runs/list-threads-for-an-agent-legacy-run-scoped-path"},{"title":"Get a thread with messages (agent-scoped path)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/run/threads/{threadId}","href":"/api-reference/agent-runs/get-a-thread-with-messages-agent-scoped-path"},{"title":"Delete a thread (agent-scoped path)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/run/threads/{threadId}","href":"/api-reference/agent-runs/delete-a-thread-agent-scoped-path"}]},{"group":"Threads","pages":[{"title":"List threads","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/threads","href":"/api-reference/threads/list-threads"},{"title":"Get a thread snapshot","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/threads/{threadId}","href":"/api-reference/threads/get-a-thread-snapshot"},{"title":"Delete a thread (cascade)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/threads/{threadId}","href":"/api-reference/threads/delete-a-thread-cascade"},{"title":"Rename or archive a thread","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/threads/{threadId}","href":"/api-reference/threads/rename-or-archive-a-thread"},{"title":"List rollouts (run instances) for a thread","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/threads/{threadId}/rollouts","href":"/api-reference/threads/list-rollouts-run-instances-for-a-thread"},{"title":"List durable thread events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/threads/{threadId}/events","href":"/api-reference/threads/list-durable-thread-events"},{"title":"Append durable thread events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/threads/{threadId}/events","href":"/api-reference/threads/append-durable-thread-events"},{"title":"Manually compact a thread","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/threads/{threadId}/compact","href":"/api-reference/threads/manually-compact-a-thread"}]},{"group":"Installable agents","pages":[{"title":"List the installable-agent catalog","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/installable-agents","href":"/api-reference/installable-agents/list-the-installable-agent-catalog"},{"title":"List install records (active + recovering)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/installable-agents/installs","href":"/api-reference/installable-agents/list-install-records-active-+-recovering"},{"title":"Install an installable agent into a sandbox+workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/installable-agents/{slug}/install","href":"/api-reference/installable-agents/install-an-installable-agent-into-a-sandbox+workspace"},{"title":"Get an install record","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/installable-agents/installs/{installId}","href":"/api-reference/installable-agents/get-an-install-record"},{"title":"Uninstall or forget an install","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/installable-agents/installs/{installId}","href":"/api-reference/installable-agents/uninstall-or-forget-an-install"},{"title":"Configure a Hermes install's provider/model","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/installable-agents/installs/{installId}/configure","href":"/api-reference/installable-agents/configure-a-hermes-installs-providermodel"},{"title":"List Hermes threads inside the install","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/installable-agents/installs/{installId}/threads","href":"/api-reference/installable-agents/list-hermes-threads-inside-the-install"},{"title":"Send a chat message to Hermes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/installable-agents/installs/{installId}/chat","href":"/api-reference/installable-agents/send-a-chat-message-to-hermes"}]},{"group":"Attachments","pages":[{"title":"Create an attachment upload target","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agent-attachments","href":"/api-reference/attachments/create-an-attachment-upload-target"},{"title":"Finalize an attachment after upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agent-attachments/{id}/complete","href":"/api-reference/attachments/finalize-an-attachment-after-upload"},{"title":"Resolve an attachment for a specific model","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/agent-attachments/{id}/resolve","href":"/api-reference/attachments/resolve-an-attachment-for-a-specific-model"}]},{"group":"Workspaces","pages":[{"title":"List workspaces in the org","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces","href":"/api-reference/workspaces/list-workspaces-in-the-org"},{"title":"Create a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces","href":"/api-reference/workspaces/create-a-workspace"},{"title":"Get a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{id}","href":"/api-reference/workspaces/get-a-workspace"},{"title":"Delete a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/workspaces/{id}","href":"/api-reference/workspaces/delete-a-workspace"},{"title":"Rename a workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/workspaces/{id}","href":"/api-reference/workspaces/rename-a-workspace"},{"title":"Workspace reference summary","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{id}/usage","href":"/api-reference/workspaces/workspace-reference-summary"}]},{"group":"Workspace files","pages":[{"title":"List directory entries at workspace root","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{id}/files","href":"/api-reference/workspace-files/list-directory-entries-at-workspace-root"},{"title":"Batch operation at workspace root","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/workspaces/{id}/files","href":"/api-reference/workspace-files/batch-operation-at-workspace-root"},{"title":"Create an entry at workspace root","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{id}/files","href":"/api-reference/workspace-files/create-an-entry-at-workspace-root"},{"title":"Delete entries by ID at workspace root","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/workspaces/{id}/files","href":"/api-reference/workspace-files/delete-entries-by-id-at-workspace-root"},{"title":"List entries at a sub-path","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{id}/files/{path}","href":"/api-reference/workspace-files/list-entries-at-a-sub-path"},{"title":"Mutate a single entry at a sub-path","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/workspaces/{id}/files/{path}","href":"/api-reference/workspace-files/mutate-a-single-entry-at-a-sub-path"},{"title":"Create an entry at a sub-path","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{id}/files/{path}","href":"/api-reference/workspace-files/create-an-entry-at-a-sub-path"},{"title":"Workspace drive info (used/free bytes)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{id}/info","href":"/api-reference/workspace-files/workspace-drive-info-usedfree-bytes"},{"title":"Get info for a path inside the workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{id}/info/{path}","href":"/api-reference/workspace-files/get-info-for-a-path-inside-the-workspace"},{"title":"Upload a file to the workspace root","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{id}/upload","href":"/api-reference/workspace-files/upload-a-file-to-the-workspace-root"},{"title":"Upload a file to a sub-path","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workspaces/{id}/upload/{path}","href":"/api-reference/workspace-files/upload-a-file-to-a-sub-path"},{"title":"Stream a file directly","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workspaces/{id}/direct","href":"/api-reference/workspace-files/stream-a-file-directly"}]},{"group":"Models","pages":[{"title":"Available platform and BYOK models","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/models/available","href":"/api-reference/models/available-platform-and-byok-models"}]},{"group":"Model proxy","pages":[{"title":"Invoke a platform-tier model (non-streaming)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/model-proxy","href":"/api-reference/model-proxy/invoke-a-platform-tier-model-non-streaming"},{"title":"Invoke a platform-tier model (streaming)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/model-proxy/stream","href":"/api-reference/model-proxy/invoke-a-platform-tier-model-streaming"}]},{"group":"Calendar","pages":[{"title":"List Google Calendar connections","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/calendar/connections","href":"/api-reference/calendar/list-google-calendar-connections"},{"title":"Disconnect a specific calendar","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/calendar/connections/{connectionId}","href":"/api-reference/calendar/disconnect-a-specific-calendar"},{"title":"Update label or color","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/calendar/connections/{connectionId}","href":"/api-reference/calendar/update-label-or-color"},{"title":"Get the first calendar connection (legacy)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/calendar/connection","href":"/api-reference/calendar/get-the-first-calendar-connection-legacy"},{"title":"Disconnect all calendars (legacy)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/calendar/connection","href":"/api-reference/calendar/disconnect-all-calendars-legacy"},{"title":"Begin Google OAuth flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/calendar/oauth/init","href":"/api-reference/calendar/begin-google-oauth-flow"},{"title":"Complete Google OAuth flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/calendar/oauth/callback","href":"/api-reference/calendar/complete-google-oauth-flow"},{"title":"List calendar events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/calendar/events","href":"/api-reference/calendar/list-calendar-events"},{"title":"Create a calendar event","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/calendar/events","href":"/api-reference/calendar/create-a-calendar-event"}]},{"group":"RunMesh","pages":[{"title":"Begin a device-link flow (unauthenticated)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/runmesh/devices/link/start","href":"/api-reference/runmesh/begin-a-device-link-flow-unauthenticated"},{"title":"Poll for link approval (unauthenticated)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/runmesh/devices/link/poll","href":"/api-reference/runmesh/poll-for-link-approval-unauthenticated"},{"title":"Approve a pending device-link request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/runmesh/devices/link/approve","href":"/api-reference/runmesh/approve-a-pending-device-link-request"},{"title":"Counts of online/offline nodes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/runmesh/overview","href":"/api-reference/runmesh/counts-of-onlineoffline-nodes"},{"title":"List RunMesh nodes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/runmesh/nodes","href":"/api-reference/runmesh/list-runmesh-nodes"},{"title":"Get a RunMesh node","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/runmesh/nodes/{id}","href":"/api-reference/runmesh/get-a-runmesh-node"},{"title":"Revoke a RunMesh node","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/runmesh/nodes/{id}","href":"/api-reference/runmesh/revoke-a-runmesh-node"},{"title":"Rename a RunMesh node","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/runmesh/nodes/{id}","href":"/api-reference/runmesh/rename-a-runmesh-node"},{"title":"Revoke a node (POST alias)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/runmesh/nodes/{id}/revoke","href":"/api-reference/runmesh/revoke-a-node-post-alias"},{"title":"Generate WireGuard peer config for a node","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/runmesh/nodes/{id}/config","href":"/api-reference/runmesh/generate-wireguard-peer-config-for-a-node"},{"title":"List recent RunMesh audit events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/runmesh/audit","href":"/api-reference/runmesh/list-recent-runmesh-audit-events"}]},{"group":"Terminal","pages":[{"title":"Mint a one-time browser terminal session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/terminal/sandbox-sessions","href":"/api-reference/terminal/mint-a-one-time-browser-terminal-session"}]},{"group":"Auth","pages":[{"title":"Verify a JWT or API key (internal-friendly)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/verify","href":"/api-reference/auth/verify-a-jwt-or-api-key-internal-friendly"},{"title":"Get a WorkOS logout URL for a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/auth/logout-url","href":"/api-reference/auth/get-a-workos-logout-url-for-a-session"}]},{"group":"API keys","pages":[{"title":"List API keys for the caller","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/api-keys","href":"/api-reference/api-keys/list-api-keys-for-the-caller"},{"title":"Create an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/api-keys","href":"/api-reference/api-keys/create-an-api-key"},{"title":"List allowed API key scopes (with descriptions)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/api-keys/scopes/list","href":"/api-reference/api-keys/list-allowed-api-key-scopes-with-descriptions"},{"title":"Get an API key (metadata only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/api-keys/{id}","href":"/api-reference/api-keys/get-an-api-key-metadata-only"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/api-keys/{id}","href":"/api-reference/api-keys/revoke-an-api-key"},{"title":"Update an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/api-keys/{id}","href":"/api-reference/api-keys/update-an-api-key"}]},{"group":"SSH keys","pages":[{"title":"List SSH keys for the caller","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/ssh-keys","href":"/api-reference/ssh-keys/list-ssh-keys-for-the-caller"},{"title":"Upload an SSH public key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/ssh-keys","href":"/api-reference/ssh-keys/upload-an-ssh-public-key"},{"title":"Get an SSH key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/ssh-keys/{id}","href":"/api-reference/ssh-keys/get-an-ssh-key"},{"title":"Delete an SSH key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/ssh-keys/{id}","href":"/api-reference/ssh-keys/delete-an-ssh-key"},{"title":"Update an SSH key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/ssh-keys/{id}","href":"/api-reference/ssh-keys/update-an-ssh-key"},{"title":"Mark a key as the caller's default","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/ssh-keys/{id}/set-default","href":"/api-reference/ssh-keys/mark-a-key-as-the-callers-default"},{"title":"Toggle always-include for org-wide keys (admin only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/ssh-keys/{id}/set-always-include","href":"/api-reference/ssh-keys/toggle-always-include-for-org-wide-keys-admin-only"}]},{"group":"LangTerm","pages":[{"title":"List LangTerm connections","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/langterm-connections","href":"/api-reference/langterm/list-langterm-connections"},{"title":"Create a LangTerm connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/langterm-connections","href":"/api-reference/langterm/create-a-langterm-connection"},{"title":"Get a LangTerm connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/langterm-connections/{id}","href":"/api-reference/langterm/get-a-langterm-connection"},{"title":"Delete a LangTerm connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/langterm-connections/{id}","href":"/api-reference/langterm/delete-a-langterm-connection"}]},{"group":"OAuth connections","pages":[{"title":"List OAuth provider descriptors","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/oauth/providers","href":"/api-reference/oauth-connections/list-oauth-provider-descriptors"},{"title":"Begin a redirect OAuth flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/oauth/start/{provider}","href":"/api-reference/oauth-connections/begin-a-redirect-oauth-flow"},{"title":"OAuth callback (provider redirects here)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/oauth/callback/{provider}","href":"/api-reference/oauth-connections/oauth-callback-provider-redirects-here"},{"title":"Begin a device-code OAuth flow (e.g. OpenAI Codex)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/oauth/device/start/{provider}","href":"/api-reference/oauth-connections/begin-a-device-code-oauth-flow-eg-openai-codex"},{"title":"Poll the device-code status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/oauth/device/status/{provider}","href":"/api-reference/oauth-connections/poll-the-device-code-status"},{"title":"List OAuth connections for the caller","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/oauth/connections","href":"/api-reference/oauth-connections/list-oauth-connections-for-the-caller"},{"title":"Get an OAuth connection (metadata only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/oauth/connections/{id}","href":"/api-reference/oauth-connections/get-an-oauth-connection-metadata-only"},{"title":"Delete an OAuth connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/oauth/connections/{id}","href":"/api-reference/oauth-connections/delete-an-oauth-connection"},{"title":"Mark an OAuth connection as default","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/oauth/connections/{id}/set-default","href":"/api-reference/oauth-connections/mark-an-oauth-connection-as-default"},{"title":"Check if a provider is connected","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/oauth/status/{provider}","href":"/api-reference/oauth-connections/check-if-a-provider-is-connected"}]},{"group":"BYOA configs","pages":[{"title":"List BYOA configs for the org","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/oauth/configs","href":"/api-reference/byoa-configs/list-byoa-configs-for-the-org"},{"title":"Upsert a BYOA provider configuration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/oauth/configs","href":"/api-reference/byoa-configs/upsert-a-byoa-provider-configuration"},{"title":"Delete a BYOA config","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/oauth/configs/{provider}","href":"/api-reference/byoa-configs/delete-a-byoa-config"},{"title":"Enable/disable a BYOA config","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/oauth/configs/{provider}","href":"/api-reference/byoa-configs/enabledisable-a-byoa-config"}]},{"group":"Secrets","pages":[{"title":"List secret metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/secrets","href":"/api-reference/secrets/list-secret-metadata"},{"title":"Create or update an encrypted secret","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/secrets","href":"/api-reference/secrets/create-or-update-an-encrypted-secret"},{"title":"Get a secret's metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/secrets/{name}","href":"/api-reference/secrets/get-a-secrets-metadata"},{"title":"Delete a secret","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/secrets/{name}","href":"/api-reference/secrets/delete-a-secret"},{"title":"Reveal a secret value (audit-logged)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/secrets/{name}/reveal","href":"/api-reference/secrets/reveal-a-secret-value-audit-logged"}]},{"group":"Tools (marketplace)","pages":[{"title":"List public marketplace tools","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/marketplace","href":"/api-reference/tools-marketplace/list-public-marketplace-tools"},{"title":"Search public marketplace tools","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/marketplace/search","href":"/api-reference/tools-marketplace/search-public-marketplace-tools"},{"title":"Batch-fetch action schemas","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/marketplace/schemas","href":"/api-reference/tools-marketplace/batch-fetch-action-schemas"},{"title":"Get a specific public tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/marketplace/{slug}","href":"/api-reference/tools-marketplace/get-a-specific-public-tool"}]},{"group":"Tools (installed)","pages":[{"title":"List installed tools for the caller's org","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/tools","href":"/api-reference/tools-installed/list-installed-tools-for-the-callers-org"},{"title":"Install a tool for the org","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/tools/{slug}/install","href":"/api-reference/tools-installed/install-a-tool-for-the-org"},{"title":"Uninstall a tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/tools/{slug}","href":"/api-reference/tools-installed/uninstall-a-tool"},{"title":"Force-uninstall every org install (admin only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/tools/{slug}/force-uninstall","href":"/api-reference/tools-installed/force-uninstall-every-org-install-admin-only"},{"title":"Check whether stored credentials exist","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/tools/{slug}/credentials","href":"/api-reference/tools-installed/check-whether-stored-credentials-exist"},{"title":"Store credentials for an installed tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/tools/{slug}/credentials","href":"/api-reference/tools-installed/store-credentials-for-an-installed-tool"},{"title":"Remove stored credentials for a tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/tools/{slug}/credentials","href":"/api-reference/tools-installed/remove-stored-credentials-for-a-tool"}]},{"group":"Tool execution","pages":[{"title":"Execute a tool action","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/tools/{slug}/execute","href":"/api-reference/tool-execution/execute-a-tool-action"}]},{"group":"Tools (custom)","pages":[{"title":"List custom tools visible to the caller","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/tools/custom","href":"/api-reference/tools-custom/list-custom-tools-visible-to-the-caller"},{"title":"Create or update a custom tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/tools/custom","href":"/api-reference/tools-custom/create-or-update-a-custom-tool"},{"title":"Get a custom tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/tools/custom/{slug}","href":"/api-reference/tools-custom/get-a-custom-tool"},{"title":"Soft-delete a custom tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/tools/custom/{slug}","href":"/api-reference/tools-custom/soft-delete-a-custom-tool"},{"title":"Set visibility (admin only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/tools/custom/{slug}/publish","href":"/api-reference/tools-custom/set-visibility-admin-only"}]},{"group":"Billing","pages":[{"title":"Public pricing reference","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/pricing","href":"/api-reference/billing/public-pricing-reference"},{"title":"Get the org's credit balance","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/billing/credits","href":"/api-reference/billing/get-the-orgs-credit-balance"},{"title":"Get credit ledger history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/billing/credits/history","href":"/api-reference/billing/get-credit-ledger-history"},{"title":"Get the org's billing summary","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/billing/plan","href":"/api-reference/billing/get-the-orgs-billing-summary"},{"title":"Get aggregate or per-user usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/billing/my-usage","href":"/api-reference/billing/get-aggregate-or-per-user-usage"},{"title":"Create a Stripe Checkout session for a credit top-up","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/billing/topup","href":"/api-reference/billing/create-a-stripe-checkout-session-for-a-credit-top-up"},{"title":"Eager-sync a completed Stripe checkout session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/billing/success","href":"/api-reference/billing/eager-sync-a-completed-stripe-checkout-session"},{"title":"Get auto-top-up settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/billing/auto-topup","href":"/api-reference/billing/get-auto-top-up-settings"},{"title":"Update auto-top-up settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/billing/auto-topup","href":"/api-reference/billing/update-auto-top-up-settings"},{"title":"Redeem a promo code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/billing/promo-codes/redeem","href":"/api-reference/billing/redeem-a-promo-code"}]}]},{"tab":"SDK","icon":"cube","pages":[{"title":"SDK","href":"/sdk/overview"}]},{"tab":"CLI","icon":"terminal","pages":[{"title":"CLI","href":"/cli/overview"}]}]},"basePath":"","title":"Stream Runs \u0026 Threads - Runtools.ai","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","Page-D6S0Yh6q.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js"]}