// Browsers can't set headers on EventSource, so pass the key as ?key=const es = new EventSource("https://app.hookie.ai/v1/stream?key=ik_live_xxx");es.onmessage = (e) => { const event = JSON.parse(e.data); // { seq, id, dataset, received_at, data } console.log(event.dataset, event.data);};// The browser auto-resends Last-Event-ID on reconnect; a gap surfaces here:es.addEventListener("stream-gap", (e) => { const gap = JSON.parse(e.data); // { missed_from, resume_from } console.warn("missed events", gap.missed_from, "→", gap.resume_from);});
The buffer holds roughly the last 1,000 events (up to ~5 minutes). Resume from where you left off with the Last-Event-ID header (SSE sends it automatically on reconnect) or the ?after_seq= query parameter. If your resume point has already aged out, Hookie emits a stream-gap event with the range you missed, then continues live.
Signed-in users get the same stream over the session-authenticated /admin/api/stream endpoint: no ingest key required, same SSE and WebSocket behavior, same resume. It is the endpoint to point a dashboard of your own at when you already have a browser session and would rather not mint an ingest key for it.The console tails it in Live mode. Switch on Live on a project’s Observability or Deliveries tab:
Observability lists events as they are stored, newest first (the last 50), and re-runs your search as they land. Click an event’s ID to trace its whole chain.
Deliveries re-reads the delivery list and destination health when an event arrives and every 10 seconds, because delivery outcomes and retries are not on the stream.
Pause holds what arrives without dropping it; Resume shows it. A tab in Live mode is one stream connection against your plan’s limit. When the stream refuses one (the limit is reached), the tab says so and refreshes every 10 seconds instead. Without Live, each view’s Refresh button fetches new arrivals and shows when it last did.
Concurrent connections are capped per plan (Free: 1, Pro: 5, Team: 20).
Authenticate with an active ingest key: a revoked key, or one past its expiry, is refused with 404. Create and rotate keys in the project’s Ingest keys tab. The stream is a read-only tail and never exposes stored data. A key streams its own project’s events only: project_id is optional, and naming any other project answers 403.
A suspended workspace cannot open a stream: 403 with "reason": "workspace_suspended".
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hookie","description":"Capture, route and deliver webhooks on Cloudflare — ingest anything, route it into datasets with rules, and deliver signed events with retries, AI triggers and multi-step workflows.","colors":{"primary":"#2B56A1","light":"#749ADC","dark":"#2CB8B8"},"logo":{"light":"https://mintcdn.com/hookie-ai/3zmwtACPzz3wb-OX/logo/light.svg?fit=max\u0026auto=format\u0026n=3zmwtACPzz3wb-OX\u0026q=85\u0026s=3d05bb847a5407bc7e75e7270aafc101","dark":"https://mintcdn.com/hookie-ai/3zmwtACPzz3wb-OX/logo/dark.svg?fit=max\u0026auto=format\u0026n=3zmwtACPzz3wb-OX\u0026q=85\u0026s=3a34a943f368167074930496ba10fa63","href":"https://hookie.ai"},"favicon":"https://mintcdn.com/hookie-ai/3zmwtACPzz3wb-OX/favicon.svg?fit=max\u0026auto=format\u0026n=3zmwtACPzz3wb-OX\u0026q=85\u0026s=e81ffa68ca681fd9823d22e0e57d7003","api":{"openapi":"openapi.json","playground":{"display":"interactive"},"examples":{"languages":["bash","javascript","python"]}},"navbar":{"links":[{"href":"https://hookie.ai","label":"Hookie.ai"},{"href":"https://hookie.ai/use-cases","label":"Use cases"},{"href":"https://hookie.ai/pricing","label":"Pricing"}],"primary":{"type":"button","label":"Open console","href":"https://app.hookie.ai/"}},"footer":{"socials":{"website":"https://hookie.ai"},"links":[{"header":"Product","items":[{"label":"Features","href":"https://hookie.ai/features"},{"label":"Use cases","href":"https://hookie.ai/use-cases"},{"label":"Pricing","href":"https://hookie.ai/pricing"},{"label":"Changelog","href":"https://hookie.ai/changelog"},{"label":"Status","href":"https://hookie.ai/status"}]},{"header":"Docs","items":[{"label":"Quickstart","href":"/quickstart"},{"label":"API reference","href":"/api-reference"},{"label":"Connected agents","href":"/connected-agents"}]},{"header":"Company","items":[{"label":"Security","href":"https://hookie.ai/security"},{"label":"Contact","href":"https://hookie.ai/contact"}]},{"header":"Legal","items":[{"label":"Terms","href":"https://hookie.ai/legal/terms"},{"label":"Privacy","href":"https://hookie.ai/legal/privacy"},{"label":"Acceptable use","href":"https://hookie.ai/legal/acceptable-use"}]}]},"styling":{"codeblocks":"dark","latex":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hookie-ai","hasAudioNarration":false,"actualSubdomain":"hookie-ai","customDomains":["docs.hookie.ai"],"gitSource":{"type":"github","owner":"bcusack1996","repo":"hookie-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6acb37193d9a94205f095409","collectionId":"0e08d911-dc25-4671-83b6-91f9acd96a01","liveDeploymentHistoryId":"6acb37193d9a94205f095409","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6acb37193d9a94205f095409","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"API reference","count":224},{"language":"default","tag":"Workspace","count":26},{"language":"default","tag":"Guides","count":20},{"language":"default","tag":"Customer Portal","count":18},{"language":"default","tag":"Portals","count":12},{"language":"default","tag":"Ingest","count":10},{"language":"default","tag":"SSO","count":10},{"language":"default","tag":"Workflows","count":10},{"language":"default","tag":"Concepts","count":9},{"language":"default","tag":"Webhooks","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":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":"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":"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":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"streaming","slug":"/streaming","pageMetadata":{"title":"Live streaming","description":"Tail Hookie events in real time over SSE or WebSocket, with resume.","icon":"radio","href":"/streaming"},"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: \"Tail Hookie events in real time over SSE or WebSocket, with resume.\"\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={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Watch events as they arrive over `,_jsx(_components.strong,{children:`Server-Sent Events`}),` or a `,_jsx(_components.strong,{children:`WebSocket`}),`. Use it for live dashboards, tailing, and dev feedback.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Best-effort and lossy by design: the durable delivery guarantee is signed outbound webhooks. Use the stream to `,_jsx(_components.em,{children:`observe`}),`, not to guarantee receipt.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`server-sent-events`,children:`Server-Sent Events`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`# Server-Sent Events — key in the Authorization header`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -N`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` https://app.hookie.ai/v1/stream`}),_jsx(_components.span,{style:{color:`#D7BA7D`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer ik_live_xxx\"`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Each event is an SSE frame; a control frame signals a gap if you resumed past the buffer:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`http`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`id:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 4217`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`data:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` {\"seq\":4217,\"id\":\"9d3f…\",\"dataset\":\"leads\",\"received_at\":\"2026-07-10T12:00:00.000Z\",\"data\":{\"email\":\"ada@example.com\"}}`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`event:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` stream-gap`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`data:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` {\"missed_from\":4000,\"resume_from\":4180}`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`in-the-browser`,children:`In the browser`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Browsers can't set headers on EventSource, so pass the key as ?key=`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` es`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`new`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:` EventSource`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"https://app.hookie.ai/v1/stream?key=ik_live_xxx\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`es`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onmessage`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = (`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`e`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` event`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:`JSON`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`parse`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`e`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// { seq, id, dataset, received_at, data }`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` console`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`event`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`dataset`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`event`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// The browser auto-resends Last-Event-ID on reconnect; a gap surfaces here:`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`es`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`addEventListener`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"stream-gap\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, (`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`e`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` gap`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:`JSON`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`parse`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`e`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// { missed_from, resume_from }`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` console`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`warn`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"missed events\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`gap`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`missed_from`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"→\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`gap`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`resume_from`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`resume`,children:`Resume`}),`\n`,_jsxs(_components.p,{children:[`The buffer holds roughly the last 1,000 events (up to ~5 minutes). Resume from where you left off with the `,_jsx(_components.code,{children:`Last-Event-ID`}),` header (SSE sends it automatically on reconnect) or the `,_jsx(_components.code,{children:`?after_seq=`}),` query parameter. If your resume point has already aged out, Hookie emits a `,_jsx(_components.code,{children:`stream-gap`}),` event with the range you missed, then continues live.`]}),`\n`,_jsx(Heading,{level:`2`,id:`websocket`,children:`WebSocket`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`# WebSocket — same endpoint, Upgrade header (resume with ?after_seq=)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`wscat`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -c`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"wss://app.hookie.ai/v1/stream?key=ik_live_xxx\u0026after_seq=4180\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`from-the-console`,children:`From the console`}),`\n`,_jsxs(_components.p,{children:[`Signed-in users get the same stream over the session-authenticated `,_jsx(_components.code,{children:`/admin/api/stream`}),` endpoint: no ingest key required, same SSE and WebSocket behavior, same resume. It is the endpoint to point a dashboard of your own at when you already have a browser session and would rather not mint an ingest key for it.`]}),`\n`,_jsxs(_components.p,{children:[`The console tails it in `,_jsx(_components.strong,{children:`Live`}),` mode. Switch on `,_jsx(_components.strong,{children:`Live`}),` on a project’s `,_jsx(_components.strong,{children:`Observability`}),` or `,_jsx(_components.strong,{children:`Deliveries`}),` tab:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Observability`}),` lists events as they are stored, newest first (the last 50), and re-runs your search as they land. Click an event’s ID to trace its whole chain.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Deliveries`}),` re-reads the delivery list and destination health when an event arrives and every 10 seconds, because delivery outcomes and retries are not on the stream.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Pause`}),` holds what arrives without dropping it; `,_jsx(_components.strong,{children:`Resume`}),` shows it. A tab in Live mode is one stream connection against your plan’s limit. When the stream refuses one (the limit is reached), the tab says so and refreshes every 10 seconds instead. Without Live, each view’s `,_jsx(_components.strong,{children:`Refresh`}),` button fetches new arrivals and shows when it last did.`]}),`\n`,_jsx(Heading,{level:`2`,id:`limits`,children:`Limits`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Concurrent connections are capped per plan (Free: 1, Pro: 5, Team: 20).`}),`\n`,_jsxs(_components.li,{children:[`Authenticate with an active ingest key: a revoked key, or one past its expiry, is refused with `,_jsx(_components.code,{children:`404`}),`. Create and rotate keys in the project’s `,_jsx(_components.a,{href:`/ingest-keys`,children:`Ingest keys`}),` tab. The stream is a read-only tail and never exposes stored data. A key streams `,_jsx(_components.strong,{children:`its own project’s events only`}),`: `,_jsx(_components.code,{children:`project_id`}),` is optional, and naming any other project answers `,_jsx(_components.code,{children:`403`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`A suspended workspace cannot open a stream: `,_jsx(_components.code,{children:`403`}),` with `,_jsx(_components.code,{children:`\"reason\": \"workspace_suspended\"`}),`.`]}),`\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":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Live streaming","description":"Tail Hookie events in real time over SSE or WebSocket, with resume.","icon":"radio","href":"/streaming"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Server-Sent Events","slug":"server-sent-events","depth":2,"children":[]},{"title":"In the browser","slug":"in-the-browser","depth":2,"children":[]},{"title":"Resume","slug":"resume","depth":2,"children":[]},{"title":"WebSocket","slug":"websocket","depth":2,"children":[]},{"title":"From the console","slug":"from-the-console","depth":2,"children":[]},{"title":"Limits","slug":"limits","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"hookie-ai","siteName":"Hookie","title":"Live streaming - Hookie","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-29T03:45:18.997Z","originalFileLocation":"streaming.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=\"Tail Hookie events in real time over SSE or WebSocket, with resume.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hookie\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hookie-ai/swNEJiZkoA-0uCAd/_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/hookie-ai/swNEJiZkoA-0uCAd/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hookie-ai/swNEJiZkoA-0uCAd/_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/hookie-ai/swNEJiZkoA-0uCAd/_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/hookie-ai/swNEJiZkoA-0uCAd/_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/hookie-ai/swNEJiZkoA-0uCAd/_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/hookie-ai/swNEJiZkoA-0uCAd/_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/hookie-ai/swNEJiZkoA-0uCAd/_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/hookie-ai/swNEJiZkoA-0uCAd/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Live streaming - Hookie\">\u003cmeta data-mint-head property=\"og:description\" content=\"Tail Hookie events in real time over SSE or WebSocket, with resume.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hookie\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hookie.ai/streaming\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hookie-ai.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=Live+streaming\u0026amp;description=Tail+Hookie+events+in+real+time+over+SSE+or+WebSocket%2C+with+resume.\u0026amp;theme=f4aa03159c73f069ac2e6bcf\u0026amp;signature=e6b1d1b6a2be644354d5c2ba870ed27d3bde8bb213ed3ecced39f5c69e6d1b1d\">\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=\"Live streaming - Hookie\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Tail Hookie events in real time over SSE or WebSocket, with resume.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hookie-ai.mintlify.app/_mintlify/api/og/v2?division=Guides\u0026amp;title=Live+streaming\u0026amp;description=Tail+Hookie+events+in+real+time+over+SSE+or+WebSocket%2C+with+resume.\u0026amp;theme=f4aa03159c73f069ac2e6bcf\u0026amp;signature=e6b1d1b6a2be644354d5c2ba870ed27d3bde8bb213ed3ecced39f5c69e6d1b1d\">\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/hookie-ai/swNEJiZkoA-0uCAd/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hookie\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2B56A1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hookie.ai/streaming\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/streaming.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.hookie.ai/#organization\",\"name\":\"Hookie\",\"url\":\"https://docs.hookie.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hookie-ai/3zmwtACPzz3wb-OX/logo/light.svg?fit=max\u0026auto=format\u0026n=3zmwtACPzz3wb-OX\u0026q=85\u0026s=3d05bb847a5407bc7e75e7270aafc101\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hookie.ai#website\",\"name\":\"Hookie\",\"url\":\"https://docs.hookie.ai\",\"publisher\":{\"@id\":\"https://docs.hookie.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hookie.ai/streaming#webpage\",\"url\":\"https://docs.hookie.ai/streaming\",\"name\":\"Live streaming\",\"description\":\"Tail Hookie events in real time over SSE or WebSocket, with resume.\",\"dateModified\":\"2026-09-29T03:45:18.997Z\",\"isPartOf\":{\"@id\":\"https://docs.hookie.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hookie.ai/streaming#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hookie.ai/streaming#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.hookie.ai/forms\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Live streaming\",\"item\":\"https://docs.hookie.ai/streaming\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.hookie.ai/streaming#article\",\"headline\":\"Live streaming\",\"name\":\"Live streaming\",\"description\":\"Tail Hookie events in real time over SSE or WebSocket, with resume.\",\"url\":\"https://docs.hookie.ai/streaming\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hookie.ai/streaming#webpage\"},\"dateModified\":\"2026-09-29T03:45:18.997Z\",\"publisher\":{\"@id\":\"https://docs.hookie.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hookie.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hookie\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hookie","nav":{"global":null,"groups":[{"group":"Get started","icon":"rocket","pages":[{"title":"Overview","sidebarTitle":"Overview","icon":{"name":"info-circle","style":"regular","library":"fontawesome"},"href":"/index"},{"title":"Quickstart","icon":{"name":"shipping-fast","style":"regular","library":"fontawesome"},"href":"/quickstart"}]},{"group":"Concepts","icon":"lightbulb","pages":[{"title":"Projects","icon":"folder-tree","href":"/projects"},{"title":"Endpoints and ingest keys","icon":"inbox","href":"/endpoints-and-keys"},{"title":"Datasets and records","icon":"table","href":"/datasets-and-records"},{"title":"Rules and mappings","icon":"route","href":"/rules-and-mappings"},{"title":"Destinations and deliveries","icon":"paper-plane","href":"/destinations-and-deliveries"},{"title":"Limits and plans","icon":"gauge","href":"/limits-and-plans"},{"title":"Billing","icon":"credit-card","href":"/billing"},{"title":"Roles, API keys and connected agents","sidebarTitle":"Roles and agents","icon":"user-shield","href":"/roles-and-agents"},{"title":"Glossary","icon":"book","href":"/glossary"}]},{"group":"CLI","icon":"terminal","pages":[{"title":"CLI","sidebarTitle":"Overview","icon":"terminal","href":"/cli/index"},{"title":"Operations","icon":"screwdriver-wrench","href":"/cli/operations"},{"title":"Command reference","icon":"list","href":"/cli/commands"},{"title":"Configuration","icon":"gear","href":"/cli/configuration"}]},{"group":"Guides","icon":"book-open","pages":[{"title":"Forms","icon":"rectangle-list","href":"/forms"},{"title":"Verify signatures","icon":"signature","href":"/signatures"},{"title":"Verify provider signatures","icon":"shield-check","href":"/endpoint-verification"},{"title":"Destination types and options","sidebarTitle":"Destination options","icon":"send","href":"/destinations"},{"title":"Slack app","icon":"slack","href":"/slack-app"},{"title":"Database sources","icon":"database","href":"/database-sources"},{"title":"Ingest keys","description":"Create, restrict, expire, rotate and revoke the ik_live_ keys servers use to send events and tail the live stream.","icon":"key","href":"/ingest-keys"},{"title":"Live streaming","icon":"radio","href":"/streaming"},{"title":"Workflows \u0026 AI agents","description":"Multi-step, event-driven workflows built on a visual canvas, with branching, HTTP calls, AI steps and reusable AI agents.","icon":{"name":"robot","style":"regular","library":"fontawesome"},"href":"/workflows"},{"title":"Customer portal","icon":"users","href":"/customer-portal"},{"title":"Broadcast Logs","icon":"tower-broadcast","href":"/broadcast-logs"},{"title":"Analytics","icon":"chart-line","href":"/analytics"},{"title":"Team members","icon":"users","href":"/team-members"},{"title":"Connected agents","icon":"plug","href":"/connected-agents"},{"title":"Agent self-registration","icon":"robot","href":"/agent-self-registration"},{"title":"WorkOS Agent Auth","icon":"id-badge","href":"/workos-agent-auth"},{"title":"API keys","icon":"lock","href":"/api-keys"},{"title":"Data API","icon":"database","href":"/data-api"},{"title":"Delete, export and close","icon":"trash-can","href":"/data-deletion"},{"title":"API reference","icon":"code","href":"/api-reference"}]},{"group":"API reference","icon":"terminal","pages":[{"group":"Ingest","pages":[{"title":"Meta's URL verification (hub.challenge) on the public webhook URL","deprecated":null,"version":null,"openapi":"/openapi.json get /{workspace}/{project}/{webhook}","href":"/api-reference/ingest/metas-url-verification-hubchallenge-on-the-public-webhook-url"},{"title":"Ingest an event through the public webhook URL","deprecated":null,"version":null,"openapi":"/openapi.json post /{workspace}/{project}/{webhook}","href":"/api-reference/ingest/ingest-an-event-through-the-public-webhook-url"},{"title":"CORS preflight for a page's fetch() to the public webhook URL","deprecated":null,"version":null,"openapi":"/openapi.json options /{workspace}/{project}/{webhook}","href":"/api-reference/ingest/cors-preflight-for-a-pages-fetch-to-the-public-webhook-url"},{"title":"Ingest an event through the public webhook URL, naming its dataset","deprecated":null,"version":null,"openapi":"/openapi.json post /{workspace}/{project}/{webhook}/{dataset}","href":"/api-reference/ingest/ingest-an-event-through-the-public-webhook-url-naming-its-dataset"},{"title":"Ingest an event with an ingest key (PUT alias of ingestEvent)","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/ingest/{ingest_key}","href":"/api-reference/ingest/ingest-an-event-with-an-ingest-key-put-alias-of-ingestevent"},{"title":"Ingest an event with an ingest key, routed by the project's mapping rules, with the key's default dataset as the fallback","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/ingest/{ingest_key}","href":"/api-reference/ingest/ingest-an-event-with-an-ingest-key-routed-by-the-projects-mapping-rules-with-the-keys-default-dataset-as-the-fallback"},{"title":"Ingest an event into a named dataset (PUT alias of ingestEventToDataset)","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/ingest/{ingest_key}/{dataset}","href":"/api-reference/ingest/ingest-an-event-into-a-named-dataset-put-alias-of-ingesteventtodataset"},{"title":"Ingest an event with an ingest key straight into a named dataset","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/ingest/{ingest_key}/{dataset}","href":"/api-reference/ingest/ingest-an-event-with-an-ingest-key-straight-into-a-named-dataset"},{"title":"Ingest into a configured endpoint (PUT alias of ingestWebhookEvent)","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/webhooks/{ingest_key}/{slug}","href":"/api-reference/ingest/ingest-into-a-configured-endpoint-put-alias-of-ingestwebhookevent"},{"title":"Ingest an event into a configured endpoint using an ingest key","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/{ingest_key}/{slug}","href":"/api-reference/ingest/ingest-an-event-into-a-configured-endpoint-using-an-ingest-key"}]},{"group":"Streaming","pages":[{"title":"Tail the ingest key's project live event stream over SSE or WebSocket","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/stream","href":"/api-reference/streaming/tail-the-ingest-keys-project-live-event-stream-over-sse-or-websocket"},{"title":"Tail the current workspace's live event stream over SSE or WebSocket","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/stream","href":"/api-reference/streaming/tail-the-current-workspaces-live-event-stream-over-sse-or-websocket"}]},{"group":"Customer Portal","pages":[{"title":"Get the portal context for the caller's token or session","deprecated":null,"version":null,"openapi":"/openapi.json get /portal/api/me","href":"/api-reference/customer-portal/get-the-portal-context-for-the-callers-token-or-session"},{"title":"List the dataset/event types this portal exposes","deprecated":null,"version":null,"openapi":"/openapi.json get /portal/api/event-types","href":"/api-reference/customer-portal/list-the-datasetevent-types-this-portal-exposes"},{"title":"List this customer's own destinations","deprecated":null,"version":null,"openapi":"/openapi.json get /portal/api/destinations","href":"/api-reference/customer-portal/list-this-customers-own-destinations"},{"title":"Create a destination for this customer","deprecated":null,"version":null,"openapi":"/openapi.json post /portal/api/destinations","href":"/api-reference/customer-portal/create-a-destination-for-this-customer"},{"title":"Edit, pause or resume one of this customer's destinations","deprecated":null,"version":null,"openapi":"/openapi.json put /portal/api/destinations/{id}","href":"/api-reference/customer-portal/edit-pause-or-resume-one-of-this-customers-destinations"},{"title":"Delete one of this customer's destinations","deprecated":null,"version":null,"openapi":"/openapi.json delete /portal/api/destinations/{id}","href":"/api-reference/customer-portal/delete-one-of-this-customers-destinations"},{"title":"Edit, pause or resume one of this customer's destinations","deprecated":null,"version":null,"openapi":"/openapi.json patch /portal/api/destinations/{id}","href":"/api-reference/customer-portal/edit-pause-or-resume-one-of-this-customers-destinations-1"},{"title":"List recent delivery attempts to this customer's destinations","deprecated":null,"version":null,"openapi":"/openapi.json get /portal/api/deliveries","href":"/api-reference/customer-portal/list-recent-delivery-attempts-to-this-customers-destinations"},{"title":"Trade a portal token for a session cookie","deprecated":null,"version":null,"openapi":"/openapi.json post /portal/api/session","href":"/api-reference/customer-portal/trade-a-portal-token-for-a-session-cookie"},{"title":"Sign out of the portal","deprecated":null,"version":null,"openapi":"/openapi.json delete /portal/api/session","href":"/api-reference/customer-portal/sign-out-of-the-portal"},{"title":"Show a destination's signing secret again","deprecated":null,"version":null,"openapi":"/openapi.json get /portal/api/destinations/{id}/secret","href":"/api-reference/customer-portal/show-a-destinations-signing-secret-again"},{"title":"Rotate a destination's signing secret, with an overlap","deprecated":null,"version":null,"openapi":"/openapi.json post /portal/api/destinations/{id}/rotate-secret","href":"/api-reference/customer-portal/rotate-a-destinations-signing-secret-with-an-overlap"},{"title":"End a rotation's overlap early","deprecated":null,"version":null,"openapi":"/openapi.json post /portal/api/destinations/{id}/expire-previous-secret","href":"/api-reference/customer-portal/end-a-rotations-overlap-early"},{"title":"One delivery, whole: why it failed","deprecated":null,"version":null,"openapi":"/openapi.json get /portal/api/deliveries/{id}","href":"/api-reference/customer-portal/one-delivery-whole:-why-it-failed"},{"title":"Send a delivery again","deprecated":null,"version":null,"openapi":"/openapi.json post /portal/api/deliveries/{id}/replay","href":"/api-reference/customer-portal/send-a-delivery-again"},{"title":"Example payloads for each exposed event type, and how to verify a delivery (both signature schemes)","deprecated":null,"version":null,"openapi":"/openapi.json get /portal/api/examples","href":"/api-reference/customer-portal/example-payloads-for-each-exposed-event-type-and-how-to-verify-a-delivery-both-signature-schemes"},{"title":"Table views the provider shared in the portal","deprecated":null,"version":null,"openapi":"/openapi.json get /portal/api/views","href":"/api-reference/customer-portal/table-views-the-provider-shared-in-the-portal"},{"title":"One page of a shared view, for the signed-in customer","deprecated":null,"version":null,"openapi":"/openapi.json get /portal/api/views/{id}/records","href":"/api-reference/customer-portal/one-page-of-a-shared-view-for-the-signed-in-customer"}]},{"group":"Account","pages":[{"title":"Current user, workspace and role","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/me","href":"/api-reference/account/current-user-workspace-and-role"}]},{"group":"Dashboard","pages":[{"title":"Workspace home dashboard rollup","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/dashboard/summary","href":"/api-reference/dashboard/workspace-home-dashboard-rollup"},{"title":"Bucketed activity series for the workspace","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/dashboard/timeseries","href":"/api-reference/dashboard/bucketed-activity-series-for-the-workspace"},{"title":"Analytics breakdown by project, endpoint, workflow and dataset","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/dashboard/analytics","href":"/api-reference/dashboard/analytics-breakdown-by-project-endpoint-workflow-and-dataset"}]},{"group":"Projects","pages":[{"title":"List projects in the workspace","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects","href":"/api-reference/projects/list-projects-in-the-workspace"},{"title":"Create a project","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects","href":"/api-reference/projects/create-a-project"},{"title":"Get one project with resource counts","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}","href":"/api-reference/projects/get-one-project-with-resource-counts"},{"title":"Delete a project","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}","href":"/api-reference/projects/delete-a-project"},{"title":"Rename a project or set its IP allowlist","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}","href":"/api-reference/projects/rename-a-project-or-set-its-ip-allowlist"},{"title":"Export a project's configuration","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/config","href":"/api-reference/projects/export-a-projects-configuration"},{"title":"Import a configuration into a project","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/config","href":"/api-reference/projects/import-a-configuration-into-a-project"},{"title":"Clone a project","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/clone","href":"/api-reference/projects/clone-a-project"}]},{"group":"Stats","pages":[{"title":"Traffic and delivery stats for one project","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/stats","href":"/api-reference/stats/traffic-and-delivery-stats-for-one-project"}]},{"group":"Datasets","pages":[{"title":"List datasets with record counts","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/datasets","href":"/api-reference/datasets/list-datasets-with-record-counts"},{"title":"One page of a dataset's records, whole and flattened (export shape)","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/datasets/{dataset}","href":"/api-reference/datasets/one-page-of-a-datasets-records-whole-and-flattened-export-shape"}]},{"group":"Records","pages":[{"title":"Get one record with its full payload","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/records/{id}","href":"/api-reference/records/get-one-record-with-its-full-payload"},{"title":"Delete a record and every copy of it","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/records/{id}","href":"/api-reference/records/delete-a-record-and-every-copy-of-it"},{"title":"One page of a dataset's records, optionally through a saved view","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/datasets/{dataset}/records","href":"/api-reference/records/one-page-of-a-datasets-records-optionally-through-a-saved-view"},{"title":"Retired: records are read by dataset","deprecated":true,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/webhooks/{id}/records","href":"/api-reference/records/retired:-records-are-read-by-dataset"},{"title":"The dataset's latest purge","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/datasets/{dataset}/purge","href":"/api-reference/records/the-datasets-latest-purge"},{"title":"Delete every record in a dataset","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/datasets/{dataset}/purge","href":"/api-reference/records/delete-every-record-in-a-dataset"}]},{"group":"Submissions","pages":[{"title":"List raw submissions","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/submissions","href":"/api-reference/submissions/list-raw-submissions"},{"title":"Set a submission forward status","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/submissions/{id}","href":"/api-reference/submissions/set-a-submission-forward-status"}]},{"group":"Rules","pages":[{"title":"List mapping rules","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/rules","href":"/api-reference/rules/list-mapping-rules"},{"title":"Create a mapping rule","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/rules","href":"/api-reference/rules/create-a-mapping-rule"},{"title":"Get one rule","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/rules/{id}","href":"/api-reference/rules/get-one-rule"},{"title":"Delete a rule","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/rules/{id}","href":"/api-reference/rules/delete-a-rule"},{"title":"Update a rule","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/rules/{id}","href":"/api-reference/rules/update-a-rule"},{"title":"Test conditions and mappings against a sample payload","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/rules/test","href":"/api-reference/rules/test-conditions-and-mappings-against-a-sample-payload"}]},{"group":"Webhooks","pages":[{"title":"List endpoints","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/webhooks","href":"/api-reference/webhooks/list-endpoints"},{"title":"Create an endpoint","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/webhooks","href":"/api-reference/webhooks/create-an-endpoint"},{"title":"Publish a new version of a webhook","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/webhooks/{id}/versions","href":"/api-reference/webhooks/publish-a-new-version-of-a-webhook"},{"title":"Get one webhook","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/webhooks/{id}","href":"/api-reference/webhooks/get-one-webhook"},{"title":"Delete a webhook version","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/webhooks/{id}","href":"/api-reference/webhooks/delete-a-webhook-version"},{"title":"Change an endpoint: enabled, name, dataset, IP allowlist, form redirect, CORS origins, URL verification, signature verification","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/webhooks/{id}","href":"/api-reference/webhooks/change-an-endpoint:-enabled-name-dataset-ip-allowlist-form-redirect-cors-origins-url-verification-signature-verification"},{"title":"Give an endpoint a new public URL, with an overlap","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/webhooks/{id}/rotate","href":"/api-reference/webhooks/give-an-endpoint-a-new-public-url-with-an-overlap"},{"title":"Replace an endpoint's provider signing secret, with an overlap","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/webhooks/{id}/rotate-verification-secret","href":"/api-reference/webhooks/replace-an-endpoints-provider-signing-secret-with-an-overlap"},{"title":"One endpoint's received and refused requests","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/webhooks/{id}/activity","href":"/api-reference/webhooks/one-endpoints-received-and-refused-requests"}]},{"group":"Record views","pages":[{"title":"List saved record views","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/record-views","href":"/api-reference/record-views/list-saved-record-views"},{"title":"Create a record view","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/record-views","href":"/api-reference/record-views/create-a-record-view"},{"title":"Get one view","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/record-views/{id}","href":"/api-reference/record-views/get-one-view"},{"title":"Delete a record view","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/record-views/{id}","href":"/api-reference/record-views/delete-a-record-view"},{"title":"Update a record view","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/record-views/{id}","href":"/api-reference/record-views/update-a-record-view"}]},{"group":"Ingest keys","pages":[{"title":"List ingest keys","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/ingest-keys","href":"/api-reference/ingest-keys/list-ingest-keys"},{"title":"Issue an ingest key","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/ingest-keys","href":"/api-reference/ingest-keys/issue-an-ingest-key"},{"title":"Get one ingest key","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/ingest-keys/{id}","href":"/api-reference/ingest-keys/get-one-ingest-key"},{"title":"Revoke an ingest key","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/ingest-keys/{id}","href":"/api-reference/ingest-keys/revoke-an-ingest-key"},{"title":"Rename an ingest key, or set its expiry or IP allowlist","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/ingest-keys/{id}","href":"/api-reference/ingest-keys/rename-an-ingest-key-or-set-its-expiry-or-ip-allowlist"},{"title":"Rotate an ingest key with an overlap","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/ingest-keys/{id}/rotate","href":"/api-reference/ingest-keys/rotate-an-ingest-key-with-an-overlap"}]},{"group":"Destinations","pages":[{"title":"List outbound destinations","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/destinations","href":"/api-reference/destinations/list-outbound-destinations"},{"title":"Create an outbound destination","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/destinations","href":"/api-reference/destinations/create-an-outbound-destination"},{"title":"Get one destination","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/destinations/{id}","href":"/api-reference/destinations/get-one-destination"},{"title":"Delete a destination","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/destinations/{id}","href":"/api-reference/destinations/delete-a-destination"},{"title":"Edit a destination: name, URL or type settings, on/off, dataset filter, request options, alert URL or delivery limits","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/destinations/{id}","href":"/api-reference/destinations/edit-a-destination:-name-url-or-type-settings-onoff-dataset-filter-request-options-alert-url-or-delivery-limits"},{"title":"Reveal a destination signing secret","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/destinations/{id}/secret","href":"/api-reference/destinations/reveal-a-destination-signing-secret"},{"title":"Rotate a destination signing secret","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/destinations/{id}/rotate-secret","href":"/api-reference/destinations/rotate-a-destination-signing-secret"},{"title":"Stop signing with a destination's previous secret","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/destinations/{id}/expire-previous-secret","href":"/api-reference/destinations/stop-signing-with-a-destinations-previous-secret"}]},{"group":"Deliveries","pages":[{"title":"List outbound deliveries","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/deliveries","href":"/api-reference/deliveries/list-outbound-deliveries"},{"title":"Delivery health per destination: success rate, latency percentiles, error classes, time series","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/deliveries/metrics","href":"/api-reference/deliveries/delivery-health-per-destination:-success-rate-latency-percentiles-error-classes-time-series"},{"title":"Replay every delivery that did not arrive, by filter","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/deliveries/replay","href":"/api-reference/deliveries/replay-every-delivery-that-did-not-arrive-by-filter"},{"title":"List events whose deliveries are held past the monthly delivery allowance","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/deliveries/held","href":"/api-reference/deliveries/list-events-whose-deliveries-are-held-past-the-monthly-delivery-allowance"},{"title":"Send held deliveries now that there is room in the allowance","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/deliveries/held/release","href":"/api-reference/deliveries/send-held-deliveries-now-that-there-is-room-in-the-allowance"},{"title":"Get one delivery with its response body and every attempt","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/deliveries/{id}","href":"/api-reference/deliveries/get-one-delivery-with-its-response-body-and-every-attempt"},{"title":"Replay a delivery","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/deliveries/{id}/replay","href":"/api-reference/deliveries/replay-a-delivery"}]},{"group":"Search","pages":[{"title":"Search records (events)","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/search/events","href":"/api-reference/search/search-records-events"},{"title":"Search deliveries","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/search/deliveries","href":"/api-reference/search/search-deliveries"},{"title":"Search AI agent runs","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/search/ai-runs","href":"/api-reference/search/search-ai-agent-runs"},{"title":"Search the AI call log","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/search/ai-calls","href":"/api-reference/search/search-the-ai-call-log"},{"title":"Get one AI call in full","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/search/ai-calls/{id}","href":"/api-reference/search/get-one-ai-call-in-full"},{"title":"Search raw submissions","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/search/submissions","href":"/api-reference/search/search-raw-submissions"},{"title":"Correlate any pipeline id across the pipeline","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/search/correlate/{id}","href":"/api-reference/search/correlate-any-pipeline-id-across-the-pipeline"}]},{"group":"Audit","pages":[{"title":"Read the workspace audit log","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/audit","href":"/api-reference/audit/read-the-workspace-audit-log"},{"title":"List the actions recorded in the workspace audit log","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/audit/actions","href":"/api-reference/audit/list-the-actions-recorded-in-the-workspace-audit-log"}]},{"group":"Sources","pages":[{"title":"List inbound source connectors in a project","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/sources","href":"/api-reference/sources/list-inbound-source-connectors-in-a-project"},{"title":"Create a source connector","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/sources","href":"/api-reference/sources/create-a-source-connector"},{"title":"Get one source","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/sources/{source_id}","href":"/api-reference/sources/get-one-source"},{"title":"Delete a source connector","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/sources/{source_id}","href":"/api-reference/sources/delete-a-source-connector"},{"title":"Update a source connector","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/sources/{source_id}","href":"/api-reference/sources/update-a-source-connector"},{"title":"Test a source connector's connection","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/sources/{source_id}/test","href":"/api-reference/sources/test-a-source-connectors-connection"}]},{"group":"Triggers","pages":[{"title":"List agentic-AI event triggers in a project","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/triggers","href":"/api-reference/triggers/list-agentic-ai-event-triggers-in-a-project"},{"title":"Create an agentic-AI event trigger","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/triggers","href":"/api-reference/triggers/create-an-agentic-ai-event-trigger"},{"title":"Get one trigger","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/triggers/{trigger_id}","href":"/api-reference/triggers/get-one-trigger"},{"title":"Delete an AI trigger","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/triggers/{trigger_id}","href":"/api-reference/triggers/delete-an-ai-trigger"},{"title":"Enable or disable an AI trigger","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/triggers/{trigger_id}","href":"/api-reference/triggers/enable-or-disable-an-ai-trigger"}]},{"group":"Cron triggers","pages":[{"title":"List cron triggers in a project","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/cron-triggers","href":"/api-reference/cron-triggers/list-cron-triggers-in-a-project"},{"title":"Create a cron trigger","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/cron-triggers","href":"/api-reference/cron-triggers/create-a-cron-trigger"},{"title":"Preview a cron schedule's next fire times","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/cron-triggers/preview","href":"/api-reference/cron-triggers/preview-a-cron-schedules-next-fire-times"},{"title":"Get one cron trigger","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/cron-triggers/{cron_trigger_id}","href":"/api-reference/cron-triggers/get-one-cron-trigger"},{"title":"Delete a cron trigger","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/cron-triggers/{cron_trigger_id}","href":"/api-reference/cron-triggers/delete-a-cron-trigger"},{"title":"Update a cron trigger","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/cron-triggers/{cron_trigger_id}","href":"/api-reference/cron-triggers/update-a-cron-trigger"},{"title":"Fire a cron trigger once, immediately","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/cron-triggers/{cron_trigger_id}/test","href":"/api-reference/cron-triggers/fire-a-cron-trigger-once-immediately"}]},{"group":"WebSocket triggers","pages":[{"title":"List WebSocket triggers in a project","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/ws-triggers","href":"/api-reference/websocket-triggers/list-websocket-triggers-in-a-project"},{"title":"Create a WebSocket trigger","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/ws-triggers","href":"/api-reference/websocket-triggers/create-a-websocket-trigger"},{"title":"Get one ws trigger","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/ws-triggers/{ws_trigger_id}","href":"/api-reference/websocket-triggers/get-one-ws-trigger"},{"title":"Delete a WebSocket trigger","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/ws-triggers/{ws_trigger_id}","href":"/api-reference/websocket-triggers/delete-a-websocket-trigger"},{"title":"Edit, pause or resume a WebSocket trigger","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/ws-triggers/{ws_trigger_id}","href":"/api-reference/websocket-triggers/edit-pause-or-resume-a-websocket-trigger"},{"title":"Probe a WebSocket trigger's connection","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/ws-triggers/{ws_trigger_id}/test","href":"/api-reference/websocket-triggers/probe-a-websocket-triggers-connection"}]},{"group":"Workflows","pages":[{"title":"List workflow definitions in a project","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/workflows","href":"/api-reference/workflows/list-workflow-definitions-in-a-project"},{"title":"Create a workflow definition","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/workflows","href":"/api-reference/workflows/create-a-workflow-definition"},{"title":"Get one workflow definition","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/workflows/{workflow_id}","href":"/api-reference/workflows/get-one-workflow-definition"},{"title":"Replace a workflow definition","deprecated":null,"version":null,"openapi":"/openapi.json put /admin/api/projects/{project_id}/workflows/{workflow_id}","href":"/api-reference/workflows/replace-a-workflow-definition"},{"title":"Deactivate, or permanently delete, a workflow","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/workflows/{workflow_id}","href":"/api-reference/workflows/deactivate-or-permanently-delete-a-workflow"},{"title":"Change part of a workflow (merge)","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/workflows/{workflow_id}","href":"/api-reference/workflows/change-part-of-a-workflow-merge"},{"title":"List instances of one workflow","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/workflows/{workflow_id}/instances","href":"/api-reference/workflows/list-instances-of-one-workflow"},{"title":"Get a workflow instance with its step events and per-step status","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/workflow-instances/{instance_id}","href":"/api-reference/workflows/get-a-workflow-instance-with-its-step-events-and-per-step-status"},{"title":"Cancel a workflow instance","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/workflow-instances/{instance_id}/cancel","href":"/api-reference/workflows/cancel-a-workflow-instance"},{"title":"Retry a workflow instance","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/workflow-instances/{instance_id}/retry","href":"/api-reference/workflows/retry-a-workflow-instance"}]},{"group":"AI agents","pages":[{"title":"List AI agents in a project","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/ai-agents","href":"/api-reference/ai-agents/list-ai-agents-in-a-project"},{"title":"Create an AI agent","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/ai-agents","href":"/api-reference/ai-agents/create-an-ai-agent"},{"title":"Get one AI agent","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/ai-agents/{agent_id}","href":"/api-reference/ai-agents/get-one-ai-agent"},{"title":"Replace an AI agent","deprecated":null,"version":null,"openapi":"/openapi.json put /admin/api/projects/{project_id}/ai-agents/{agent_id}","href":"/api-reference/ai-agents/replace-an-ai-agent"},{"title":"Retire, or permanently delete, an AI agent","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/ai-agents/{agent_id}","href":"/api-reference/ai-agents/retire-or-permanently-delete-an-ai-agent"},{"title":"Change an AI agent (only the fields sent)","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/ai-agents/{agent_id}","href":"/api-reference/ai-agents/change-an-ai-agent-only-the-fields-sent"},{"title":"Models an AI trigger, agent or workflow AI step may name","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/ai-models","href":"/api-reference/ai-agents/models-an-ai-trigger-agent-or-workflow-ai-step-may-name"}]},{"group":"Portals","pages":[{"title":"The project's one customer portal","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/portal","href":"/api-reference/portals/the-projects-one-customer-portal"},{"title":"Create or update the project's customer portal","deprecated":null,"version":null,"openapi":"/openapi.json put /admin/api/projects/{project_id}/portal","href":"/api-reference/portals/create-or-update-the-projects-customer-portal"},{"title":"Remove the project's customer portal for good","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/portal","href":"/api-reference/portals/remove-the-projects-customer-portal-for-good"},{"title":"Create or update the project's customer portal (PATCH, same as PUT)","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/portal","href":"/api-reference/portals/create-or-update-the-projects-customer-portal-patch-same-as-put"},{"title":"List customer portals in a project","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/portals","href":"/api-reference/portals/list-customer-portals-in-a-project"},{"title":"Create a customer portal","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/portals","href":"/api-reference/portals/create-a-customer-portal"},{"title":"Get one customer portal","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/portals/{portal_id}","href":"/api-reference/portals/get-one-customer-portal"},{"title":"Update a customer portal","deprecated":null,"version":null,"openapi":"/openapi.json put /admin/api/projects/{project_id}/portals/{portal_id}","href":"/api-reference/portals/update-a-customer-portal"},{"title":"Disable a customer portal","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/portals/{portal_id}","href":"/api-reference/portals/disable-a-customer-portal"},{"title":"Update a customer portal (PATCH, same as PUT)","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/portals/{portal_id}","href":"/api-reference/portals/update-a-customer-portal-patch-same-as-put"},{"title":"List a portal's access tokens","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/portals/{portal_id}/tokens","href":"/api-reference/portals/list-a-portals-access-tokens"},{"title":"Issue or revoke a portal access token","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/portals/{portal_id}/tokens","href":"/api-reference/portals/issue-or-revoke-a-portal-access-token"}]},{"group":"Connected agents","pages":[{"title":"List the signed-in user's OAuth-connected coding agents","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/agents","href":"/api-reference/connected-agents/list-the-signed-in-users-oauth-connected-coding-agents"},{"title":"Revoke a connected agent","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/agents/{grant_id}","href":"/api-reference/connected-agents/revoke-a-connected-agent"},{"title":"Change what a connected agent may do","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/agents/{grant_id}","href":"/api-reference/connected-agents/change-what-a-connected-agent-may-do"}]},{"group":"SSO","pages":[{"title":"List workspace SSO configurations","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/sso","href":"/api-reference/sso/list-workspace-sso-configurations"},{"title":"Create a workspace SSO configuration (not available)","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/sso","href":"/api-reference/sso/create-a-workspace-sso-configuration-not-available"},{"title":"Replace a workspace SSO configuration (not available)","deprecated":null,"version":null,"openapi":"/openapi.json put /admin/api/sso/{sso_config_id}","href":"/api-reference/sso/replace-a-workspace-sso-configuration-not-available"},{"title":"Delete a workspace SSO configuration","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/sso/{sso_config_id}","href":"/api-reference/sso/delete-a-workspace-sso-configuration"},{"title":"Update a workspace SSO configuration (not available)","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/sso/{sso_config_id}","href":"/api-reference/sso/update-a-workspace-sso-configuration-not-available"},{"title":"Check whether an SSO configuration is complete","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/sso/{sso_config_id}/test","href":"/api-reference/sso/check-whether-an-sso-configuration-is-complete"},{"title":"Read the workspace's SSO / Directory Sync request","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/sso/requests","href":"/api-reference/sso/read-the-workspaces-sso-directory-sync-request"},{"title":"Request single sign-on or Directory Sync","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/sso/requests","href":"/api-reference/sso/request-single-sign-on-or-directory-sync"},{"title":"Cancel a pending SSO / Directory Sync request","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/sso/requests/{request_id}","href":"/api-reference/sso/cancel-a-pending-sso-directory-sync-request"},{"title":"Open the WorkOS Admin Portal to set up SSO or Directory Sync","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/sso/portal-link","href":"/api-reference/sso/open-the-workos-admin-portal-to-set-up-sso-or-directory-sync"}]},{"group":"IP allowlist","pages":[{"title":"Read the workspace-level ingest IP allowlist","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/ip-allowlist","href":"/api-reference/ip-allowlist/read-the-workspace-level-ingest-ip-allowlist"},{"title":"Replace the workspace-level ingest IP allowlist","deprecated":null,"version":null,"openapi":"/openapi.json put /admin/api/ip-allowlist","href":"/api-reference/ip-allowlist/replace-the-workspace-level-ingest-ip-allowlist"},{"title":"Replace the workspace-level ingest IP allowlist","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/ip-allowlist","href":"/api-reference/ip-allowlist/replace-the-workspace-level-ingest-ip-allowlist-1"}]},{"group":"Workspace","pages":[{"title":"The workspace's name, slug and former slugs","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/workspace","href":"/api-reference/workspace/the-workspaces-name-slug-and-former-slugs"},{"title":"Rename the workspace or change its slug","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/workspace","href":"/api-reference/workspace/rename-the-workspace-or-change-its-slug"},{"title":"List the workspace's admin API keys","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/api-keys","href":"/api-reference/workspace/list-the-workspaces-admin-api-keys"},{"title":"Create an admin API key (shown once)","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/api-keys","href":"/api-reference/workspace/create-an-admin-api-key-shown-once"},{"title":"Revoke an admin API key","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/api-keys/{key_id}","href":"/api-reference/workspace/revoke-an-admin-api-key"},{"title":"The pending workspace closure, if any","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/workspace/closure","href":"/api-reference/workspace/the-pending-workspace-closure-if-any"},{"title":"Close the workspace","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/workspace/closure","href":"/api-reference/workspace/close-the-workspace"},{"title":"Undo a pending closure","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/workspace/closure","href":"/api-reference/workspace/undo-a-pending-closure"},{"title":"Export all of the workspace's data","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/workspace/export","href":"/api-reference/workspace/export-all-of-the-workspaces-data"},{"title":"List the workspace's pending invites","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/invites","href":"/api-reference/workspace/list-the-workspaces-pending-invites"},{"title":"Create a shareable invite link","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/invites","href":"/api-reference/workspace/create-a-shareable-invite-link"},{"title":"Revoke a pending invite","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/invites/{invite_id}","href":"/api-reference/workspace/revoke-a-pending-invite"},{"title":"Join a workspace with an invite link's token","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/invites/accept","href":"/api-reference/workspace/join-a-workspace-with-an-invite-links-token"},{"title":"See what an invite link's token would join, without joining","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/invites/preview","href":"/api-reference/workspace/see-what-an-invite-links-token-would-join-without-joining"},{"title":"List the workspace's members","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/members","href":"/api-reference/workspace/list-the-workspaces-members"},{"title":"Remove a member, or leave the workspace","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/members/{user_id}","href":"/api-reference/workspace/remove-a-member-or-leave-the-workspace"},{"title":"Change a member's role","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/members/{user_id}","href":"/api-reference/workspace/change-a-members-role"},{"title":"Transfer ownership to another member","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/members/transfer-ownership","href":"/api-reference/workspace/transfer-ownership-to-another-member"},{"title":"List the workspaces the caller belongs to","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/workspaces","href":"/api-reference/workspace/list-the-workspaces-the-caller-belongs-to"},{"title":"Switch the caller's active workspace","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/workspaces/active","href":"/api-reference/workspace/switch-the-callers-active-workspace"},{"title":"The workspace's Google Workspace domain link","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/workspace/google-domain","href":"/api-reference/workspace/the-workspaces-google-workspace-domain-link"},{"title":"Link the owner's Google Workspace domain","deprecated":null,"version":null,"openapi":"/openapi.json put /admin/api/workspace/google-domain","href":"/api-reference/workspace/link-the-owners-google-workspace-domain"},{"title":"Unlink the Google Workspace domain","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/workspace/google-domain","href":"/api-reference/workspace/unlink-the-google-workspace-domain"},{"title":"Change the role people from the linked domain join with","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/workspace/google-domain","href":"/api-reference/workspace/change-the-role-people-from-the-linked-domain-join-with"},{"title":"See what a claim token would take over","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/agent-accounts/claim-preview","href":"/api-reference/workspace/see-what-a-claim-token-would-take-over"},{"title":"Take ownership of a workspace an AI agent registered","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/agent-accounts/claim","href":"/api-reference/workspace/take-ownership-of-a-workspace-an-ai-agent-registered"}]},{"group":"Billing","pages":[{"title":"Current plan, subscription and display prices","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/billing/status","href":"/api-reference/billing/current-plan-subscription-and-display-prices"},{"title":"Start a new subscription via Stripe Checkout","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/billing/subscribe","href":"/api-reference/billing/start-a-new-subscription-via-stripe-checkout"},{"title":"Renewal date, payment failures, a pending cancellation and invoices, from Stripe","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/billing/details","href":"/api-reference/billing/renewal-date-payment-failures-a-pending-cancellation-and-invoices-from-stripe"},{"title":"Open Stripe's Customer Portal for this workspace","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/billing/portal","href":"/api-reference/billing/open-stripes-customer-portal-for-this-workspace"}]},{"group":"Presets","pages":[{"title":"Outbound destination preset catalog","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/destination-presets","href":"/api-reference/presets/outbound-destination-preset-catalog"},{"title":"Inbound source preset catalog","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/source-presets","href":"/api-reference/presets/inbound-source-preset-catalog"}]},{"group":"Data API","pages":[{"title":"The datasets this key may read, and their columns","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/data","href":"/api-reference/data-api/the-datasets-this-key-may-read-and-their-columns"},{"title":"One page of an exposed dataset, exposed columns only","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/data/{dataset}","href":"/api-reference/data-api/one-page-of-an-exposed-dataset-exposed-columns-only"},{"title":"What the project exposes to the Data API, and its keys (metadata only)","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/data-api","href":"/api-reference/data-api/what-the-project-exposes-to-the-data-api-and-its-keys-metadata-only"},{"title":"Replace what the project exposes","deprecated":null,"version":null,"openapi":"/openapi.json put /admin/api/projects/{project_id}/data-api/exposures","href":"/api-reference/data-api/replace-what-the-project-exposes"},{"title":"Replace what the project exposes (PATCH, same as PUT)","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/data-api/exposures","href":"/api-reference/data-api/replace-what-the-project-exposes-patch-same-as-put"},{"title":"Create a read-only Data API key (the plaintext is returned once)","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/data-api/keys","href":"/api-reference/data-api/create-a-read-only-data-api-key-the-plaintext-is-returned-once"},{"title":"Revoke a Data API key; it stops working immediately","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/data-api/keys/{key_id}","href":"/api-reference/data-api/revoke-a-data-api-key;-it-stops-working-immediately"}]},{"group":"Broadcast Logs","pages":[{"title":"The project's Broadcast Logs integration (or null) and the vendor catalog","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/telemetry","href":"/api-reference/broadcast-logs/the-projects-broadcast-logs-integration-or-null-and-the-vendor-catalog"},{"title":"Start forwarding the project's logs and traces over OTLP/HTTP (JSON) to one tool","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/telemetry","href":"/api-reference/broadcast-logs/start-forwarding-the-projects-logs-and-traces-over-otlphttp-json-to-one-tool"},{"title":"Remove the integration","deprecated":null,"version":null,"openapi":"/openapi.json delete /admin/api/projects/{project_id}/telemetry","href":"/api-reference/broadcast-logs/remove-the-integration"},{"title":"Change the integration's settings or secrets, or enable / disable it","deprecated":null,"version":null,"openapi":"/openapi.json patch /admin/api/projects/{project_id}/telemetry","href":"/api-reference/broadcast-logs/change-the-integrations-settings-or-secrets-or-enable-disable-it"},{"title":"Send one test log record (and span) to a draft or the saved configuration","deprecated":null,"version":null,"openapi":"/openapi.json post /admin/api/projects/{project_id}/telemetry/test","href":"/api-reference/broadcast-logs/send-one-test-log-record-and-span-to-a-draft-or-the-saved-configuration"}]},{"group":"Observability","pages":[{"title":"A project's flagged events: filtered and routing failed","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/errors","href":"/api-reference/observability/a-projects-flagged-events:-filtered-and-routing-failed"},{"title":"One flagged event, with its whole payload","deprecated":null,"version":null,"openapi":"/openapi.json get /admin/api/projects/{project_id}/errors/{id}","href":"/api-reference/observability/one-flagged-event-with-its-whole-payload"}]},{"group":"Status","pages":[{"title":"Is the API up?","deprecated":null,"version":null,"openapi":"/openapi.json get /health","href":"/api-reference/status/is-the-api-up?"},{"title":"CORS preflight for /health","deprecated":null,"version":null,"openapi":"/openapi.json options /health","href":"/api-reference/status/cors-preflight-for-health"},{"title":"Is the API up? (headers only)","deprecated":null,"version":null,"openapi":"/openapi.json head /health","href":"/api-reference/status/is-the-api-up?-headers-only"}]},{"group":"Agents","pages":[{"title":"Get a proof-of-work challenge to register an agent","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/agents/register/challenge","href":"/api-reference/agents/get-a-proof-of-work-challenge-to-register-an-agent"},{"title":"Register an AI agent's own Hookie account","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/agents/register","href":"/api-reference/agents/register-an-ai-agents-own-hookie-account"}]},{"group":"Delivery","pages":[{"title":"An outbound delivery to a destination","version":null,"deprecated":null,"openapi":"/openapi.json webhook delivery","href":"/api-reference/delivery/an-outbound-delivery-to-a-destination"}]}]}]},"basePath":"","title":"Live streaming - Hookie","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":[],"chunks":[]}