Persists the user message and enqueues a ChatTurnWorkflow. Returns 202 Accepted with the persisted message id + the Temporal workflow id. The agent’s streamed response is consumed via GET /chat/sessions/<id>/events. Pass client_message_id for idempotent retries — a duplicate returns 409 with the original message id and no new turn is enqueued.
The response also includes since_cursor: the SSE stream id snapshotted right before this turn was enqueued. Pass it as ?since=<since_cursor> on the very next call to /chat/sessions/<id>/events so the tail skips envelopes from prior turns on this session — skipping the cursor on a 2nd+ turn against the same session causes the tail to return the previous turn’s final state.
To include images or documents, first upload each via POST /chat/sessions/<id>/attachments/upload-url, then pass the returned blob_path values in attachments. message may be empty when at least one attachment is provided. Attachments are surfaced on later GET .../messages replays.
message holds at most 200,000 characters; a longer one is rejected with 400 and nothing is stored. Send longer text as a text/plain attachment.
A dashboard chat session’s turns run as the person who started it, so only that person’s own dashboard login may post to it; any other caller, an API key included, gets 404 chat_session_not_found and no turn is queued. The same holds for the session’s upload-url, events, stop and reset routes.
Authorization: Bearer <token> where <token> is either a neo_sk_<env>_<secret> API key (service account) or a Microsoft Entra ID access token (dashboard user).
Interactive stream parts this client renders. Supported values: 'user-questions' — declare it only when you render the data-user-questions part as tappable answers, including each question's multi_select flag (tick several, then send them as one message with one pick per line — never comma-joined, because a pick can itself contain a comma) and a payload of several questions (each question's text on its own line, then its picked values one per line after '- '). 'suggested-replies' — the older event, which carries one question and rides beside the new one for every single-question payload; declare it when you render data-suggested-replies alone, and the agent keeps naming the options in its text whenever it asks several questions at once, which that event cannot carry. Declaring either stops the agent naming the options for a payload you can draw. Omit both (the default) to keep every question fully readable as plain text. 'user-questions-step-through' — declare it beside 'user-questions' when you show several questions one at a time rather than all at once; the agent may then ask any number of questions in one call, each of any length, and a payload of several questions has no cap on its options' count or length. Without it, one call holds at most 4 questions of at most 160 characters, each with at most 6 options of at most 80 characters. A one-question payload keeps the option caps either way, because it draws each option as a button.
Speed/quality tier for this turn: FAST keeps the agent's configured model; SMART escalates a single turn to a stronger model. May be flipped per turn to switch mid-conversation. Defaults to FAST.
202 Accepted body — the turn is enqueued, the agent's response streams via SSE.
since_cursor is the Redis-stream event id snapshotted right before this turn
was enqueued. Callers tailing /chat/sessions/<id>/events should pass it as
?since=<since_cursor> (or Last-Event-Id: <since_cursor>) so the SSE tail
starts strictly after the previous turn's terminal envelopes. Skipping this on a
2nd+ turn against the same session causes the tail to return the previous turn's
final state. May be None on the first turn of a fresh session or under Redis
failure; consumers treat None as "tail from beginning."
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Neo Agent","colors":{"primary":"#2563EB","light":"#60A5FA","dark":"#1D4ED8"},"logo":{"light":"https://mintcdn.com/neoagent/G1PkeWrWjzTWVbma/images/neo_agent_bright_logo.png?fit=max\u0026auto=format\u0026n=G1PkeWrWjzTWVbma\u0026q=85\u0026s=090e8010cda28a9adb16dfaf022b8382","dark":"https://mintcdn.com/neoagent/G1PkeWrWjzTWVbma/images/neo_agent_bright_logo.png?fit=max\u0026auto=format\u0026n=G1PkeWrWjzTWVbma\u0026q=85\u0026s=090e8010cda28a9adb16dfaf022b8382"},"favicon":"https://mintcdn.com/neoagent/5W3oClPQBV6lFR1g/favicon.png?fit=max\u0026auto=format\u0026n=5W3oClPQBV6lFR1g\u0026q=85\u0026s=5164157b0a6bf030ec592e23c172440a","appearance":{"default":"light"},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.neoagent.io"}},"footer":{"socials":{"x":"https://x.com/NeoAgent_AI","linkedin":"https://www.linkedin.com/company/neoagent"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://neoagent.io"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"neoagent","hasAudioNarration":false,"actualSubdomain":"neoagent","customDomains":["docs.neoagent.io"],"gitSource":{"type":"github","owner":"chatmsp","repo":"neo-agent","deployBranch":"development","contentDirectory":"mintlify_docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af5c8aa55c1ebcca522ad5d","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Guides","count":808},{"language":"default","tag":"Integrations","count":500},{"language":"default","tag":"API reference","count":343},{"language":"default","tag":"Endpoints","count":338},{"language":"default","tag":"Triggered \u0026 Scheduled Agents","count":239},{"language":"default","tag":"Tools","count":233},{"language":"default","tag":"Business","count":110},{"language":"default","tag":"Security","count":101},{"language":"default","tag":"Service Desk","count":94},{"language":"default","tag":"Infrastructure","count":80}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".perm-list{display:flex;flex-direction:column;gap:0;margin:0.25rem 0 0.5rem}.perm-row{display:grid;grid-template-columns:minmax(9rem, 13rem) 1fr;gap:0.5rem 1rem;align-items:start;padding:0.7rem 0;border-bottom:1px solid rgb(229 231 235)}.perm-row:last-child{border-bottom:none;padding-bottom:0}.perm-row:first-child{padding-top:0}.perm-label{font-weight:600;font-size:0.875rem;line-height:1.4;color:rgb(17 24 39);padding-top:0.15rem}.perm-list{display:flex;flex-direction:column;gap:0;margin:0.25rem 0 0.5rem;width:100%}.perm-chips{display:grid;grid-template-columns:repeat(auto-fill, minmax(14rem, 1fr));gap:0.4rem;margin:0.15rem 0 0.25rem;width:100%}.perm-list .perm-chips{display:flex;flex-wrap:wrap;margin:0;grid-template-columns:none}.perm-chip{display:inline-flex;align-items:center;justify-content:flex-start;padding:0.15rem 0.55rem;border-radius:9999px;font-size:0.8125rem;line-height:1.25rem;background:rgb(243 244 246);border:1px solid rgb(229 231 235);color:rgb(55 65 81);white-space:nowrap}html.dark .perm-row{border-bottom-color:rgb(55 65 81)}html.dark .perm-label{color:rgb(243 244 246)}html.dark .perm-chip{background:rgb(31 41 55);border-color:rgb(75 85 99);color:rgb(229 231 235)}#content table{width:100%!important;min-width:100%!important;max-width:100%!important;table-layout:fixed!important;border-collapse:separate!important;border-spacing:0!important;border:1px solid rgb(229 231 235);border-radius:0.75rem;overflow:hidden}#content thead th{background:rgb(249 250 251);font-size:0.75rem;letter-spacing:0.03em;text-transform:uppercase}#content th,#content td{padding:0.7rem 1rem!important;vertical-align:top;overflow-wrap:break-word}#content th:first-child,#content td:first-child{width:24%;font-weight:600;white-space:normal}#content tbody tr:nth-child(even) td{background:rgb(249 250 251)}html.dark #content table{border-color:rgb(55 65 81)}html.dark #content thead th,html.dark #content tbody tr:nth-child(even) td{background:rgb(31 41 55)}"}],"page":{"pagePath":"api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn","slug":"/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn","pageMetadata":{"title":"Append a user message + enqueue a chat turn","description":"Persists the user message and enqueues a `ChatTurnWorkflow`. Returns 202 Accepted with the persisted message id + the Temporal workflow id. The agent's streamed response is consumed via `GET /chat/sessions/\u003cid>/events`. Pass `client_message_id` for idempotent retries — a duplicate returns 409 with the original message id and no new turn is enqueued.\n\nThe response also includes `since_cursor`: the SSE stream id snapshotted right before this turn was enqueued. Pass it as `?since=\u003csince_cursor>` on the very next call to `/chat/sessions/\u003cid>/events` so the tail skips envelopes from prior turns on this session — skipping the cursor on a 2nd+ turn against the same session causes the tail to return the previous turn's final state.\n\nTo include images or documents, first upload each via `POST /chat/sessions/\u003cid>/attachments/upload-url`, then pass the returned `blob_path` values in `attachments`. `message` may be empty when at least one attachment is provided. Attachments are surfaced on later `GET .../messages` replays.\n\n`message` holds at most 200,000 characters; a longer one is rejected with 400 and nothing is stored. Send longer text as a `text/plain` attachment.\n\nA dashboard chat session's turns run as the person who started it, so only that person's own dashboard login may post to it; any other caller, an API key included, gets 404 `chat_session_not_found` and no turn is queued. The same holds for the session's upload-url, events, stop and reset routes.","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions/{session_id}/messages","href":"/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Persists the user message and enqueues a \", _jsx(_components.code, {\n children: \"ChatTurnWorkflow\"\n }), \". Returns 202 Accepted with the persisted message id + the Temporal workflow id. The agent’s streamed response is consumed via \", _jsx(_components.code, {\n children: \"GET /chat/sessions/\u003cid>/events\"\n }), \". Pass \", _jsx(_components.code, {\n children: \"client_message_id\"\n }), \" for idempotent retries — a duplicate returns 409 with the original message id and no new turn is enqueued.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The response also includes \", _jsx(_components.code, {\n children: \"since_cursor\"\n }), \": the SSE stream id snapshotted right before this turn was enqueued. Pass it as \", _jsx(_components.code, {\n children: \"?since=\u003csince_cursor>\"\n }), \" on the very next call to \", _jsx(_components.code, {\n children: \"/chat/sessions/\u003cid>/events\"\n }), \" so the tail skips envelopes from prior turns on this session — skipping the cursor on a 2nd+ turn against the same session causes the tail to return the previous turn’s final state.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"To include images or documents, first upload each via \", _jsx(_components.code, {\n children: \"POST /chat/sessions/\u003cid>/attachments/upload-url\"\n }), \", then pass the returned \", _jsx(_components.code, {\n children: \"blob_path\"\n }), \" values in \", _jsx(_components.code, {\n children: \"attachments\"\n }), \". \", _jsx(_components.code, {\n children: \"message\"\n }), \" may be empty when at least one attachment is provided. Attachments are surfaced on later \", _jsx(_components.code, {\n children: \"GET .../messages\"\n }), \" replays.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"message\"\n }), \" holds at most 200,000 characters; a longer one is rejected with 400 and nothing is stored. Send longer text as a \", _jsx(_components.code, {\n children: \"text/plain\"\n }), \" attachment.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A dashboard chat session’s turns run as the person who started it, so only that person’s own dashboard login may post to it; any other caller, an API key included, gets 404 \", _jsx(_components.code, {\n children: \"chat_session_not_found\"\n }), \" and no turn is queued. The same holds for the session’s upload-url, events, stop and reset routes.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Append a user message + enqueue a chat turn","description":"Persists the user message and enqueues a `ChatTurnWorkflow`. Returns 202 Accepted with the persisted message id + the Temporal workflow id. The agent's streamed response is consumed via `GET /chat/sessions/\u003cid>/events`. Pass `client_message_id` for idempotent retries — a duplicate returns 409 with the original message id and no new turn is enqueued.\n\nThe response also includes `since_cursor`: the SSE stream id snapshotted right before this turn was enqueued. Pass it as `?since=\u003csince_cursor>` on the very next call to `/chat/sessions/\u003cid>/events` so the tail skips envelopes from prior turns on this session — skipping the cursor on a 2nd+ turn against the same session causes the tail to return the previous turn's final state.\n\nTo include images or documents, first upload each via `POST /chat/sessions/\u003cid>/attachments/upload-url`, then pass the returned `blob_path` values in `attachments`. `message` may be empty when at least one attachment is provided. Attachments are surfaced on later `GET .../messages` replays.\n\n`message` holds at most 200,000 characters; a longer one is rejected with 400 and nothing is stored. Send longer text as a `text/plain` attachment.\n\nA dashboard chat session's turns run as the person who started it, so only that person's own dashboard login may post to it; any other caller, an API key included, gets 404 `chat_session_not_found` and no turn is queued. The same holds for the session's upload-url, events, stop and reset routes.","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions/{session_id}/messages","href":"/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Persists the user message and enqueues a `ChatTurnWorkflow`. Returns 202 Accepted with the persisted message id + the Temporal workflow id. The agent's streamed response is consumed via `GET /chat/sessions/\u003cid>/events`. Pass `client_message_id` for idempotent retries — a duplicate returns 409 with the original message id and no new turn is enqueued.\n\nThe response also includes `since_cursor`: the SSE stream id snapshotted right before this turn was enqueued. Pass it as `?since=\u003csince_cursor>` on the very next call to `/chat/sessions/\u003cid>/events` so the tail skips envelopes from prior turns on this session — skipping the cursor on a 2nd+ turn against the same session causes the tail to return the previous turn's final state.\n\nTo include images or documents, first upload each via `POST /chat/sessions/\u003cid>/attachments/upload-url`, then pass the returned `blob_path` values in `attachments`. `message` may be empty when at least one attachment is provided. Attachments are surfaced on later `GET .../messages` replays.\n\n`message` holds at most 200,000 characters; a longer one is rejected with 400 and nothing is stored. Send longer text as a `text/plain` attachment.\n\nA dashboard chat session's turns run as the person who started it, so only that person's own dashboard login may post to it; any other caller, an API key included, gets 404 `chat_session_not_found` and no turn is queued. The same holds for the session's upload-url, events, stop and reset routes.","operationId":"public_api.chat_session_post_message_post","parameters":["12f92184-700a-4c38-a3ef-b3a86640b164"],"requestBody":"dafef09e-30ec-43c7-94c2-874fae0b7c4d","responses":{"200":"34a7b88c-2d77-4aff-8515-35735b372e44","400":"9799957f-9596-4475-91be-cdfc1f52010c","401":"dafd0818-1a31-47f0-9d2d-326992aeb348","403":"a17b1db5-afac-487f-9faf-1a38abf793ad","404":"535bf160-c411-45f7-b9ed-4c69bbe11868","409":"2e322af7-184c-4b82-a2b1-a11d66d93e8e","422":"a1ecb95b-3403-48d2-85c1-54db92982e50","429":"6849963c-4f91-4c0e-97dd-b8cf674fdca2","500":"9531fa15-137b-4dbc-b795-ff7dea221a47"},"security":["8e49fb26-0a30-485b-9c10-337cf1070029"],"summary":"Append a user message + enqueue a chat turn","tags":["Chat"],"method":"post","type":"path","servers":["576d0000-fa50-4b7c-b0b3-c173d983b590"],"path":"/public-api/chat/sessions/{session_id}/messages","baseUrlOptions":["https://api.neoagent.io"],"title":"Append a user message + enqueue a chat turn","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"12f92184-700a-4c38-a3ef-b3a86640b164":{"in":"path","name":"session_id","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"properties":{"attachments":{"description":"Images or documents to include with this turn. Each must first be uploaded via `POST /chat/sessions/\u003cid>/attachments/upload-url`. At most 6 per turn.","items":{"description":"An image or document attached to a chat turn. `blob_path` is the value returned by the\n`attachments/upload-url` endpoint for THIS session — the backend re-validates it sits under\nthe session's prefix, so a client can't reference another session's or tenant's blob.","properties":{"blob_path":{"description":"The `blob_path` returned by `attachments/upload-url`.","title":"Blob Path","type":"string","isRequired":true,"uniqueKey":"attachments.items.[INDEX].blob_path","typeLabel":"string"},"mime":{"description":"Attachment MIME type. Images (image/png, image/jpeg, image/gif, image/webp) are shown to the agent; documents (e.g. application/pdf, text/plain, text/csv, Word/Excel) are attachable to a ticket.","title":"Mime","type":"string","isRequired":true,"uniqueKey":"attachments.items.[INDEX].mime","typeLabel":"string"},"alt":{"oneOf":[{"type":"string","title":"Alt","description":"Optional alt text / description for the attachment.","uniqueKey":"attachments.items.[INDEX].alt.oneOf.0","typeLabel":"string"},{"type":"null","title":"Alt","description":"Optional alt text / description for the attachment.","uniqueKey":"attachments.items.[INDEX].alt.oneOf.1","typeLabel":"null"}],"uniqueKey":"attachments.items.[INDEX].alt","typeLabel":"string | null"},"filename":{"oneOf":[{"type":"string","title":"Filename","description":"Optional original filename, for display.","uniqueKey":"attachments.items.[INDEX].filename.oneOf.0","typeLabel":"string"},{"type":"null","title":"Filename","description":"Optional original filename, for display.","uniqueKey":"attachments.items.[INDEX].filename.oneOf.1","typeLabel":"null"}],"uniqueKey":"attachments.items.[INDEX].filename","typeLabel":"string | null"}},"required":["blob_path","mime"],"title":"PublicChatAttachment","type":"object","uniqueKey":"attachments.items.[INDEX]","typeLabel":"PublicChatAttachment · object"},"title":"Attachments","type":"array","uniqueKey":"attachments","typeLabel":"PublicChatAttachment · object[]"},"client_capabilities":{"description":"Interactive stream parts this client renders. Supported values: 'user-questions' — declare it only when you render the `data-user-questions` part as tappable answers, including each question's `multi_select` flag (tick several, then send them as one message with one pick per line — never comma-joined, because a pick can itself contain a comma) and a payload of several questions (each question's text on its own line, then its picked values one per line after '- '). 'suggested-replies' — the older event, which carries one question and rides beside the new one for every single-question payload; declare it when you render `data-suggested-replies` alone, and the agent keeps naming the options in its text whenever it asks several questions at once, which that event cannot carry. Declaring either stops the agent naming the options for a payload you can draw. Omit both (the default) to keep every question fully readable as plain text. 'user-questions-step-through' — declare it beside 'user-questions' when you show several questions one at a time rather than all at once; the agent may then ask any number of questions in one call, each of any length, and a payload of several questions has no cap on its options' count or length. Without it, one call holds at most 4 questions of at most 160 characters, each with at most 6 options of at most 80 characters. A one-question payload keeps the option caps either way, because it draws each option as a button.","items":{"type":"string","uniqueKey":"client_capabilities.items.[INDEX]","typeLabel":"string"},"title":"Client Capabilities","type":"array","uniqueKey":"client_capabilities","typeLabel":"string[]"},"client_message_id":{"oneOf":[{"type":"string","title":"Client Message Id","uniqueKey":"client_message_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Client Message Id","uniqueKey":"client_message_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"client_message_id","typeLabel":"string | null"},"message":{"default":"","title":"Message","type":"string","uniqueKey":"message","typeLabel":"string"},"model_tier":{"description":"Speed/quality tier for this turn: FAST keeps the agent's configured model; SMART escalates a single turn to a stronger model. May be flipped per turn to switch mid-conversation. Defaults to FAST.","enum":["FAST","SMART"],"title":"ChatModelTier","type":"string","default":"FAST","uniqueKey":"model_tier","typeLabel":"enum\u003cstring>"}},"title":"PostMessageRequest","type":"object","uniqueKey":"","typeLabel":"PostMessageRequest · object"},"examples":{"Example":{"title":"Example","value":{"attachments":[{"blob_path":"\u003cstring>","mime":"\u003cstring>","alt":"\u003cstring>","filename":"\u003cstring>"}],"client_capabilities":["\u003cstring>"],"client_message_id":"\u003cstring>","message":"","model_tier":"FAST"}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"34a7b88c-2d77-4aff-8515-35735b372e44":{"content":{"application/json":{"schema":{"properties":{"data":{"description":"202 Accepted body — the turn is enqueued, the agent's response streams via SSE.\n\n`since_cursor` is the Redis-stream event id snapshotted right before this turn\nwas enqueued. Callers tailing `/chat/sessions/\u003cid>/events` should pass it as\n`?since=\u003csince_cursor>` (or `Last-Event-Id: \u003csince_cursor>`) so the SSE tail\nstarts strictly after the previous turn's terminal envelopes. Skipping this on a\n2nd+ turn against the same session causes the tail to return the previous turn's\nfinal state. May be `None` on the first turn of a fresh session or under Redis\nfailure; consumers treat `None` as \"tail from beginning.\"","properties":{"chat_turn_id":{"title":"Chat Turn Id","type":"string","isRequired":true,"uniqueKey":"data.chat_turn_id","typeLabel":"string"},"since_cursor":{"oneOf":[{"type":"string","title":"Since Cursor","isRequired":true,"uniqueKey":"data.since_cursor.oneOf.0","typeLabel":"string"},{"type":"null","title":"Since Cursor","isRequired":true,"uniqueKey":"data.since_cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.since_cursor","typeLabel":"string | null"},"user_message_id":{"title":"User Message Id","type":"string","isRequired":true,"uniqueKey":"data.user_message_id","typeLabel":"string"},"audience":{"oneOf":[{"type":"string","title":"ToolAudience","description":"The agent's audience for this turn: `MSP` (technician-facing) or `END_USER` (an MSP's end-client users).","enum":["MSP","END_USER"],"uniqueKey":"data.audience.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"The agent's audience for this turn: `MSP` (technician-facing) or `END_USER` (an MSP's end-client users).","uniqueKey":"data.audience.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.audience","typeLabel":"enum\u003cstring> | null"},"idle_reset_minutes":{"oneOf":[{"type":"integer","title":"Idle Reset Minutes","uniqueKey":"data.idle_reset_minutes.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Idle Reset Minutes","uniqueKey":"data.idle_reset_minutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.idle_reset_minutes","typeLabel":"integer | null"},"show_agent_progress_steps":{"oneOf":[{"type":"boolean","title":"Show Agent Progress Steps","uniqueKey":"data.show_agent_progress_steps.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Show Agent Progress Steps","uniqueKey":"data.show_agent_progress_steps.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.show_agent_progress_steps","typeLabel":"boolean | null"},"trigger_mode":{"oneOf":[{"type":"string","title":"Trigger Mode","uniqueKey":"data.trigger_mode.oneOf.0","typeLabel":"string"},{"type":"null","title":"Trigger Mode","uniqueKey":"data.trigger_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.trigger_mode","typeLabel":"string | null"}},"required":["user_message_id","chat_turn_id","since_cursor"],"title":"PostMessageResponse","type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"PostMessageResponse · object"},"meta":{"properties":{"request_id":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid>"},"timings_ms":{"additionalProperties":{"type":"number","uniqueKey":"meta.timings_ms.additionalProperties","typeLabel":"number"},"type":"object","isRequired":true,"uniqueKey":"meta.timings_ms","typeLabel":"object"},"pagination":{"properties":{"has_more":{"type":"boolean","isRequired":true,"uniqueKey":"meta.pagination.has_more","typeLabel":"boolean"},"next_cursor":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"meta.pagination.next_cursor.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"meta.pagination.next_cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"meta.pagination.next_cursor","typeLabel":"string | null"}},"required":["next_cursor","has_more"],"type":"object","uniqueKey":"meta.pagination","typeLabel":"object"},"warnings":{"description":"Non-fatal warnings about the created/updated resource (e.g. an unhealthy PSA callback).","items":{"type":"string","uniqueKey":"meta.warnings.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"meta.warnings","typeLabel":"string[]"}},"required":["request_id","timings_ms"],"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["data","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"chat_turn_id":"\u003cstring>","since_cursor":"\u003cstring>","user_message_id":"\u003cstring>","audience":"MSP","idle_reset_minutes":123,"show_agent_progress_steps":true,"trigger_mode":"\u003cstring>"},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","timings_ms":{},"pagination":{"has_more":true,"next_cursor":"\u003cstring>"},"warnings":["\u003cstring>"]}}}},"exampleType":"generated"}},"description":"Success.","exampleType":"generated"},"9799957f-9596-4475-91be-cdfc1f52010c":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Bad request — malformed input.","exampleType":"generated"},"dafd0818-1a31-47f0-9d2d-326992aeb348":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Unauthenticated — missing or invalid credentials.","exampleType":"generated"},"a17b1db5-afac-487f-9faf-1a38abf793ad":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Forbidden — authenticated but not allowed.","exampleType":"generated"},"535bf160-c411-45f7-b9ed-4c69bbe11868":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Not found.","exampleType":"generated"},"2e322af7-184c-4b82-a2b1-a11d66d93e8e":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Conflict — the resource is in a state that blocks this operation.","exampleType":"generated"},"a1ecb95b-3403-48d2-85c1-54db92982e50":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Request validation failed.","exampleType":"generated"},"6849963c-4f91-4c0e-97dd-b8cf674fdca2":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Rate limited — see Retry-After.","exampleType":"generated"},"9531fa15-137b-4dbc-b795-ff7dea221a47":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"additionalProperties":true,"type":"object","uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"meta":{"properties":{"request_id":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"meta.request_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"meta.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.request_id","typeLabel":"string\u003cuuid> | null"}},"type":"object","isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"required":["error","meta"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","details":{}},"meta":{"request_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Internal server error.","exampleType":"generated"}},"security":{"8e49fb26-0a30-485b-9c10-337cf1070029":{"bearerAuth":{"description":"`Authorization: Bearer \u003ctoken>` where `\u003ctoken>` is either a `neo_sk_\u003cenv>_\u003csecret>` API key (service account) or a Microsoft Entra ID access token (dashboard user).","scheme":"bearer","type":"http","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"576d0000-fa50-4b7c-b0b3-c173d983b590":{"url":"https://api.neoagent.io"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"description":"`Authorization: Bearer \u003ctoken>` where `\u003ctoken>` is either a `neo_sk_\u003cenv>_\u003csecret>` API key (service account) or a Microsoft Entra ID access token (dashboard user).","scheme":"bearer","type":"http","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"`Authorization: Bearer \u003ctoken>` where `\u003ctoken>` is either a `neo_sk_\u003cenv>_\u003csecret>` API key (service account) or a Microsoft Entra ID access token (dashboard user).","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"https://api.neoagent.io/public-api/openapi.json"},"subdomain":"neoagent","siteName":"Neo Agent","title":"Append a user message + enqueue a chat turn - Neo Agent","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T13:28:04.317Z","originalFileLocation":"api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn.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=\"light\"}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=\"Persists the user message and enqueues a ChatTurnWorkflow. Returns 202 Accepted with the persisted message id + the Temporal workflow id. The agent\u0026#x27;s streamed response is consumed via GET /chat/sessions//events. Pass client_message_id for idempotent retries — a duplicate returns 409 with the original message id and no new turn is enqueued. The response also includes since_cursor: the SSE stream id snapshotted right before this turn was enqueued. Pass it as ?since= on the very next call to /chat/sessions//events so the tail skips envelopes from prior turns on this session — skipping the cursor on a 2nd+ turn against the same session causes the tail to return the previous turn\u0026#x27;s final state. To include images or documents, first upload each via POST /chat/sessions//attachments/upload-url, then pass the returned blob_path values in attachments. message may be empty when at least one attachment is provided. Attachments are surfaced on later GET .../messages replays. message holds at most 200,000 characters; a longer one is rejected with 400 and nothing is stored. Send longer text as a text/plain attachment. A dashboard chat session\u0026#x27;s turns run as the person who started it, so only that person\u0026#x27;s own dashboard login may post to it; any other caller, an API key included, gets 404 chat_session_not_found and no turn is queued. The same holds for the session\u0026#x27;s upload-url, events, stop and reset routes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Neo Agent\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_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/neoagent/w6a7B12EcByGYRPp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/neoagent/w6a7B12EcByGYRPp/_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/neoagent/w6a7B12EcByGYRPp/_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/neoagent/w6a7B12EcByGYRPp/_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/neoagent/w6a7B12EcByGYRPp/_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/neoagent/w6a7B12EcByGYRPp/_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/neoagent/w6a7B12EcByGYRPp/_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/neoagent/w6a7B12EcByGYRPp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Append a user message + enqueue a chat turn - Neo Agent\">\u003cmeta data-mint-head property=\"og:description\" content=\"Persists the user message and enqueues a ChatTurnWorkflow. Returns 202 Accepted with the persisted message id + the Temporal workflow id. The agent\u0026#x27;s streamed response is consumed via GET /chat/sessions//events. Pass client_message_id for idempotent retries — a duplicate returns 409 with the original message id and no new turn is enqueued. The response also includes since_cursor: the SSE stream id snapshotted right before this turn was enqueued. Pass it as ?since= on the very next call to /chat/sessions//events so the tail skips envelopes from prior turns on this session — skipping the cursor on a 2nd+ turn against the same session causes the tail to return the previous turn\u0026#x27;s final state. To include images or documents, first upload each via POST /chat/sessions//attachments/upload-url, then pass the returned blob_path values in attachments. message may be empty when at least one attachment is provided. Attachments are surfaced on later GET .../messages replays. message holds at most 200,000 characters; a longer one is rejected with 400 and nothing is stored. Send longer text as a text/plain attachment. A dashboard chat session\u0026#x27;s turns run as the person who started it, so only that person\u0026#x27;s own dashboard login may post to it; any other caller, an API key included, gets 404 chat_session_not_found and no turn is queued. The same holds for the session\u0026#x27;s upload-url, events, stop and reset routes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Neo Agent\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.neoagent.io/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://neoagent.mintlify.site/_mintlify/api/og/v2?division=Chat\u0026amp;title=Append+a+user+message+%2B+enqueue+a+chat+turn\u0026amp;description=Persists+the+user+message+and+enqueues+a+%60ChatTurnWorkflow%60.+Returns+202+Accepted+with+the+persisted+message+id+%2B+the+Temporal+workflow+id.+The+agent%27s+streamed\u0026amp;theme=4ae218e53f7e9d2bedb5912e\u0026amp;signature=4f3562f58c520e0e6b96a6f73be703cd41fc13c7d83058dc8b63eb397429d181\">\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=\"Append a user message + enqueue a chat turn - Neo Agent\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Persists the user message and enqueues a ChatTurnWorkflow. Returns 202 Accepted with the persisted message id + the Temporal workflow id. The agent\u0026#x27;s streamed response is consumed via GET /chat/sessions//events. Pass client_message_id for idempotent retries — a duplicate returns 409 with the original message id and no new turn is enqueued. The response also includes since_cursor: the SSE stream id snapshotted right before this turn was enqueued. Pass it as ?since= on the very next call to /chat/sessions//events so the tail skips envelopes from prior turns on this session — skipping the cursor on a 2nd+ turn against the same session causes the tail to return the previous turn\u0026#x27;s final state. To include images or documents, first upload each via POST /chat/sessions//attachments/upload-url, then pass the returned blob_path values in attachments. message may be empty when at least one attachment is provided. Attachments are surfaced on later GET .../messages replays. message holds at most 200,000 characters; a longer one is rejected with 400 and nothing is stored. Send longer text as a text/plain attachment. A dashboard chat session\u0026#x27;s turns run as the person who started it, so only that person\u0026#x27;s own dashboard login may post to it; any other caller, an API key included, gets 404 chat_session_not_found and no turn is queued. The same holds for the session\u0026#x27;s upload-url, events, stop and reset routes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://neoagent.mintlify.site/_mintlify/api/og/v2?division=Chat\u0026amp;title=Append+a+user+message+%2B+enqueue+a+chat+turn\u0026amp;description=Persists+the+user+message+and+enqueues+a+%60ChatTurnWorkflow%60.+Returns+202+Accepted+with+the+persisted+message+id+%2B+the+Temporal+workflow+id.+The+agent%27s+streamed\u0026amp;theme=4ae218e53f7e9d2bedb5912e\u0026amp;signature=4f3562f58c520e0e6b96a6f73be703cd41fc13c7d83058dc8b63eb397429d181\">\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/neoagent/w6a7B12EcByGYRPp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Neo Agent\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563EB\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.neoagent.io/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/chat/append-a-user-message-%2B-enqueue-a-chat-turn.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.neoagent.io/#organization\",\"name\":\"Neo Agent\",\"url\":\"https://docs.neoagent.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/neoagent/G1PkeWrWjzTWVbma/images/neo_agent_bright_logo.png?fit=max\u0026auto=format\u0026n=G1PkeWrWjzTWVbma\u0026q=85\u0026s=090e8010cda28a9adb16dfaf022b8382\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.neoagent.io#website\",\"name\":\"Neo Agent\",\"url\":\"https://docs.neoagent.io\",\"publisher\":{\"@id\":\"https://docs.neoagent.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.neoagent.io/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn#webpage\",\"url\":\"https://docs.neoagent.io/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn\",\"name\":\"Append a user message + enqueue a chat turn\",\"description\":\"Persists the user message and enqueues a ChatTurnWorkflow. Returns 202 Accepted with the persisted message id + the Temporal workflow id. The agent's streamed response is consumed via GET /chat/sessions//events. Pass client_message_id for idempotent retries — a duplicate returns 409 with the original message id and no new turn is enqueued. The response also includes since_cursor: the SSE stream id snapshotted right before this turn was enqueued. Pass it as ?since= on the very next call to /chat/sessions//events so the tail skips envelopes from prior turns on this session — skipping the cursor on a 2nd+ turn against the same session causes the tail to return the previous turn's final state. To include images or documents, first upload each via POST /chat/sessions//attachments/upload-url, then pass the returned blob_path values in attachments. message may be empty when at least one attachment is provided. Attachments are surfaced on later GET .../messages replays. message holds at most 200,000 characters; a longer one is rejected with 400 and nothing is stored. Send longer text as a text/plain attachment. A dashboard chat session's turns run as the person who started it, so only that person's own dashboard login may post to it; any other caller, an API key included, gets 404 chat_session_not_found and no turn is queued. The same holds for the session's upload-url, events, stop and reset routes.\",\"dateModified\":\"2026-11-12T13:28:04.317Z\",\"isPartOf\":{\"@id\":\"https://docs.neoagent.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.neoagent.io/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.neoagent.io/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.neoagent.io/api-reference/agents/list-agents\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chat\",\"item\":\"https://docs.neoagent.io/api-reference/chat/create-a-chat-session\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Append a user message + enqueue a chat turn\",\"item\":\"https://docs.neoagent.io/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.neoagent.io/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn#apireference\",\"headline\":\"Append a user message + enqueue a chat turn\",\"name\":\"Append a user message + enqueue a chat turn\",\"description\":\"Persists the user message and enqueues a ChatTurnWorkflow. Returns 202 Accepted with the persisted message id + the Temporal workflow id. The agent's streamed response is consumed via GET /chat/sessions//events. Pass client_message_id for idempotent retries — a duplicate returns 409 with the original message id and no new turn is enqueued. The response also includes since_cursor: the SSE stream id snapshotted right before this turn was enqueued. Pass it as ?since= on the very next call to /chat/sessions//events so the tail skips envelopes from prior turns on this session — skipping the cursor on a 2nd+ turn against the same session causes the tail to return the previous turn's final state. To include images or documents, first upload each via POST /chat/sessions//attachments/upload-url, then pass the returned blob_path values in attachments. message may be empty when at least one attachment is provided. Attachments are surfaced on later GET .../messages replays. message holds at most 200,000 characters; a longer one is rejected with 400 and nothing is stored. Send longer text as a text/plain attachment. A dashboard chat session's turns run as the person who started it, so only that person's own dashboard login may post to it; any other caller, an API key included, gets 404 chat_session_not_found and no turn is queued. The same holds for the session's upload-url, events, stop and reset routes.\",\"url\":\"https://docs.neoagent.io/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn\",\"mainEntityOfPage\":{\"@id\":\"https://docs.neoagent.io/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn#webpage\"},\"dateModified\":\"2026-11-12T13:28:04.317Z\",\"publisher\":{\"@id\":\"https://docs.neoagent.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.neoagent.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Neo Agent\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Neo Agent\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/chat/append-a-user-message-%2B-enqueue-a-chat-turn.md","siteName":"Neo Agent","nav":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://neoagent.io"}]},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/getting-started/welcome"}]},{"tab":"Recipes","pages":[{"title":"Recipes","href":"/recipes/assign-technician-basic"}]},{"tab":"API reference","groups":[{"group":"Get started","pages":[{"title":"Neo public API","href":"/developers/introduction"},{"title":"Authentication","href":"/developers/authentication"},{"title":"Quickstart","href":"/developers/quickstart"},{"title":"Errors","href":"/developers/errors"},{"title":"Rate limits","href":"/developers/rate-limits"}]},{"group":"Endpoints","pages":[{"group":"Agents","pages":[{"title":"List agents","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents","href":"/api-reference/agents/list-agents"},{"title":"Create an agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/agents","href":"/api-reference/agents/create-an-agent"},{"title":"Estimate a schedule's credit cost before creating the agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/cost-estimate","href":"/api-reference/agents/estimate-a-schedules-credit-cost-before-creating-the-agent"},{"title":"Get an agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}","href":"/api-reference/agents/get-an-agent"},{"title":"Update an agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/agents/{agent_id}","href":"/api-reference/agents/update-an-agent"},{"title":"Delete an agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/agents/{agent_id}","href":"/api-reference/agents/delete-an-agent"},{"title":"Update an agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/agents/{agent_id}","href":"/api-reference/agents/update-an-agent-1"},{"title":"Estimate a scheduled agent's credit cost","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/cost-estimate","href":"/api-reference/agents/estimate-a-scheduled-agents-credit-cost"},{"title":"List what this agent could still be given","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/improvement-options","href":"/api-reference/agents/list-what-this-agent-could-still-be-given"},{"title":"List the pinned memories this agent reads","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/pinned-memories","href":"/api-reference/agents/list-the-pinned-memories-this-agent-reads"},{"title":"Get an agent's sequential queue","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/queue","href":"/api-reference/agents/get-an-agents-sequential-queue"},{"title":"Run an agent now","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/agents/{agent_id}/run-now","href":"/api-reference/agents/run-an-agent-now"},{"title":"Get agent execution stats","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/stats","href":"/api-reference/agents/get-agent-execution-stats"},{"title":"Get the agent version at a point in time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/version-at","href":"/api-reference/agents/get-the-agent-version-at-a-point-in-time"},{"title":"List agent versions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/versions","href":"/api-reference/agents/list-agent-versions"}]},{"group":"Credit alert rules","pages":[{"title":"Get an agent's credit alert rule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/credit-alert-rule","href":"/api-reference/credit-alert-rules/get-an-agents-credit-alert-rule"},{"title":"Create or replace an agent's credit alert rule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/agents/{agent_id}/credit-alert-rule","href":"/api-reference/credit-alert-rules/create-or-replace-an-agents-credit-alert-rule"},{"title":"Delete an agent's credit alert rule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/agents/{agent_id}/credit-alert-rule","href":"/api-reference/credit-alert-rules/delete-an-agents-credit-alert-rule"},{"title":"Preview a credit alert rule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/agents/{agent_id}/credit-alert-rule/preview","href":"/api-reference/credit-alert-rules/preview-a-credit-alert-rule"},{"title":"List credit alert rules","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/credit-alert-rules","href":"/api-reference/credit-alert-rules/list-credit-alert-rules"}]},{"group":"Inbox \u0026 Comms","pages":[{"title":"List active announcements","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/announcements","href":"/api-reference/inbox-\u0026-comms/list-active-announcements"},{"title":"List inbox messages","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/inbox","href":"/api-reference/inbox-\u0026-comms/list-inbox-messages"},{"title":"Mark an inbox message as read","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/inbox/{deduplication_message_id}/read","href":"/api-reference/inbox-\u0026-comms/mark-an-inbox-message-as-read"}]},{"group":"API keys","pages":[{"title":"List API keys","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/api-keys","href":"/api-reference/api-keys/list-api-keys"},{"title":"Create an API key","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/api-keys","href":"/api-reference/api-keys/create-an-api-key"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/api-keys/{key_id}","href":"/api-reference/api-keys/revoke-an-api-key"},{"title":"Rotate an API key","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/api-keys/{key_id}/rotate","href":"/api-reference/api-keys/rotate-an-api-key"}]},{"group":"Audit Log","pages":[{"title":"Audit Log summary — call counts per tool and per agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/audit-log/facets","href":"/api-reference/audit-log/audit-log-summary-—-call-counts-per-tool-and-per-agent"},{"title":"List agent tool calls (Audit Log)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/audit-log/tool-calls","href":"/api-reference/audit-log/list-agent-tool-calls-audit-log"}]},{"group":"Backfills","pages":[{"title":"List backfills","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/backfills","href":"/api-reference/backfills/list-backfills"},{"title":"Create a backfill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills","href":"/api-reference/backfills/create-a-backfill"},{"title":"Preflight a backfill filter","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills/verify","href":"/api-reference/backfills/preflight-a-backfill-filter"},{"title":"Get a backfill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/backfills/{backfill_id}","href":"/api-reference/backfills/get-a-backfill"},{"title":"Cancel a backfill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills/{backfill_id}/cancel","href":"/api-reference/backfills/cancel-a-backfill"},{"title":"List a backfill's failed tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/backfills/{backfill_id}/failures","href":"/api-reference/backfills/list-a-backfills-failed-tickets"},{"title":"Pause a backfill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills/{backfill_id}/pause","href":"/api-reference/backfills/pause-a-backfill"},{"title":"Rerun a backfill against its failed tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills/{backfill_id}/rerun-failed","href":"/api-reference/backfills/rerun-a-backfill-against-its-failed-tickets"},{"title":"Resume a backfill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/backfills/{backfill_id}/resume","href":"/api-reference/backfills/resume-a-backfill"}]},{"group":"Billing","pages":[{"title":"Get end-user bot (MAU) usage and charge for a month","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/end-user-teams-usage","href":"/api-reference/billing/get-end-user-bot-mau-usage-and-charge-for-a-month"},{"title":"Detailed end-user bot (MAU) breakdown for a month","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/end-user-teams/detail","href":"/api-reference/billing/detailed-end-user-bot-mau-breakdown-for-a-month"},{"title":"Get the tenant's metered billing month so far","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/metered","href":"/api-reference/billing/get-the-tenants-metered-billing-month-so-far"},{"title":"Get this workspace's organization billing","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/organization","href":"/api-reference/billing/get-this-workspaces-organization-billing"},{"title":"Get the tenant's referral program state","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/referrals","href":"/api-reference/billing/get-the-tenants-referral-program-state"},{"title":"Get the tenant's subscription / plan state","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/subscription","href":"/api-reference/billing/get-the-tenants-subscription-plan-state"},{"title":"Get credit usage for a month","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/usage","href":"/api-reference/billing/get-credit-usage-for-a-month"},{"title":"Get per-agent credit usage for a month","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/usage-by-agent","href":"/api-reference/billing/get-per-agent-credit-usage-for-a-month"},{"title":"Get credit usage per ticket for a period","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/billing/usage-by-ticket","href":"/api-reference/billing/get-credit-usage-per-ticket-for-a-period"}]},{"group":"Callbacks","pages":[{"title":"List callbacks","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/callbacks","href":"/api-reference/callbacks/list-callbacks"},{"title":"Get a callback","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/callbacks/{callback_id}","href":"/api-reference/callbacks/get-a-callback"}]},{"group":"Channels","pages":[{"title":"List channels","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/channels","href":"/api-reference/channels/list-channels"},{"title":"Create a channel","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/channels","href":"/api-reference/channels/create-a-channel"},{"title":"Resolve install greeting branding","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/channels/install-events","href":"/api-reference/channels/resolve-install-greeting-branding"},{"title":"Get a channel","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/channels/{channel_id}","href":"/api-reference/channels/get-a-channel"},{"title":"Delete a channel","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/channels/{channel_id}","href":"/api-reference/channels/delete-a-channel"},{"title":"Update a channel","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/channels/{channel_id}","href":"/api-reference/channels/update-a-channel"},{"title":"Get a channel's Slack app","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/channels/{channel_id}/slack-app","href":"/api-reference/channels/get-a-channels-slack-app"},{"title":"Request a channel's Slack app","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/channels/{channel_id}/slack-app","href":"/api-reference/channels/request-a-channels-slack-app"},{"title":"Upload a Slack channel's icon","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/channels/{channel_id}/slack-app/icon","href":"/api-reference/channels/upload-a-slack-channels-icon"},{"title":"Create a Slack install link","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/channels/{channel_id}/slack-install-link","href":"/api-reference/channels/create-a-slack-install-link"},{"title":"List a channel's Slack workspaces","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/channels/{channel_id}/slack-installs","href":"/api-reference/channels/list-a-channels-slack-workspaces"},{"title":"Remove a Slack workspace","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/channels/{channel_id}/slack-installs/{install_id}","href":"/api-reference/channels/remove-a-slack-workspace"},{"title":"List a Teams channel's client tenants","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/channels/{channel_id}/teams-installs","href":"/api-reference/channels/list-a-teams-channels-client-tenants"},{"title":"Send a technician's Live chat in Teams \u0026 Slack thread reply to the end user (relays only)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technician-inbox/replies","href":"/api-reference/channels/send-a-technicians-live-chat-in-teams-\u0026-slack-thread-reply-to-the-end-user-relays-only"},{"title":"Is this channel thread a Live chat in Teams \u0026 Slack post? (relays only)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technician-inbox/threads/lookup","href":"/api-reference/channels/is-this-channel-thread-a-live-chat-in-teams-\u0026-slack-post?-relays-only"}]},{"group":"Chat","pages":[{"title":"Create a chat session","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions","href":"/api-reference/chat/create-a-chat-session"},{"title":"Get a chat session","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/chat/sessions/{session_id}","href":"/api-reference/chat/get-a-chat-session"},{"title":"Get a signed URL to upload a chat image or document","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions/{session_id}/attachments/upload-url","href":"/api-reference/chat/get-a-signed-url-to-upload-a-chat-image-or-document"},{"title":"Tail chat-session events (SSE)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/chat/sessions/{session_id}/events","href":"/api-reference/chat/tail-chat-session-events-sse"},{"title":"List messages in a chat session","description":"Cursor-style history. Pass `?since=\u003cmessage_id>` to fetch messages strictly after that id — used for reconnect catch-up before re-subscribing to `/chat/sessions/\u003cid>/events`.\n\nA dashboard chat session follows the same read rule as `GET /chat/sessions/\u003cid>`.","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/chat/sessions/{session_id}/messages","href":"/api-reference/chat/list-messages-in-a-chat-session"},{"title":"Append a user message + enqueue a chat turn","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions/{session_id}/messages","href":"/api-reference/chat/append-a-user-message-+-enqueue-a-chat-turn"},{"title":"Reset a chat session (archive + start fresh)","description":"Archives this chat session and cancels any in-flight turn so the conversation starts fresh — the next message on the channel begins a new session with no carried context. Used by the Teams relay's `/new` command. Idempotent: resetting an already-archived session still returns 200.","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions/{session_id}/reset","href":"/api-reference/chat/reset-a-chat-session-archive-+-start-fresh"},{"title":"Stop the turn running on a chat session","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/chat/sessions/{session_id}/stop","href":"/api-reference/chat/stop-the-turn-running-on-a-chat-session"},{"title":"Mint an end-user session token","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/sessions","href":"/api-reference/chat/mint-an-end-user-session-token"},{"title":"Revoke an end-user session token by jti","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/sessions/{jti}","href":"/api-reference/chat/revoke-an-end-user-session-token-by-jti"}]},{"group":"Tenant","pages":[{"title":"Get the caller's tenant","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/clients/me","href":"/api-reference/tenant/get-the-callers-tenant"}]},{"group":"Integrations","pages":[{"title":"Get company filters","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/company-filters","href":"/api-reference/integrations/get-company-filters"},{"title":"Update company filters","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/company-filters","href":"/api-reference/integrations/update-company-filters"},{"title":"Get company-filter options","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/company-filters/options","href":"/api-reference/integrations/get-company-filter-options"},{"title":"Remove companies that no longer match","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/company-filters/remove-unmatched","href":"/api-reference/integrations/remove-companies-that-no-longer-match"},{"title":"Get documentation storage usage against the plan allowance","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/documentation/quota","href":"/api-reference/integrations/get-documentation-storage-usage-against-the-plan-allowance"},{"title":"List integrations","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations","href":"/api-reference/integrations/list-integrations"},{"title":"Get the Neo panel in Autotask tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/autotask-neo-panel","href":"/api-reference/integrations/get-the-neo-panel-in-autotask-tickets"},{"title":"Turn the Neo panel in Autotask tickets on or off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/autotask-neo-panel","href":"/api-reference/integrations/turn-the-neo-panel-in-autotask-tickets-on-or-off"},{"title":"Give the Neo panel in Autotask a new signing secret","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/autotask-neo-panel/rotate-secret","href":"/api-reference/integrations/give-the-neo-panel-in-autotask-a-new-signing-secret"},{"title":"Get the Neo panel in ConnectWise tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/connectwise-neo-panel","href":"/api-reference/integrations/get-the-neo-panel-in-connectwise-tickets"},{"title":"Turn the Neo panel in ConnectWise tickets on or off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/connectwise-neo-panel","href":"/api-reference/integrations/turn-the-neo-panel-in-connectwise-tickets-on-or-off"},{"title":"Get the ConnectWise schedule types that count as time off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/connectwise-time-off-schedule-types","href":"/api-reference/integrations/get-the-connectwise-schedule-types-that-count-as-time-off"},{"title":"Set the ConnectWise schedule types that count as time off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/connectwise-time-off-schedule-types","href":"/api-reference/integrations/set-the-connectwise-schedule-types-that-count-as-time-off"},{"title":"Get the tenant's ConnectWise customer-reply policy","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/customer-reply-policy","href":"/api-reference/integrations/get-the-tenants-connectwise-customer-reply-policy"},{"title":"Update the tenant's ConnectWise customer-reply policy","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/customer-reply-policy","href":"/api-reference/integrations/update-the-tenants-connectwise-customer-reply-policy"},{"title":"Get the tenant's Datto EDR settings","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/datto-edr-config","href":"/api-reference/integrations/get-the-tenants-datto-edr-settings"},{"title":"Turn Datto EDR location mapping on or off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/datto-edr-config","href":"/api-reference/integrations/turn-datto-edr-location-mapping-on-or-off"},{"title":"Get the Neo panel in HaloPSA tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/halo-neo-panel","href":"/api-reference/integrations/get-the-neo-panel-in-halopsa-tickets"},{"title":"Turn the Neo panel in HaloPSA tickets on or off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/halo-neo-panel","href":"/api-reference/integrations/turn-the-neo-panel-in-halopsa-tickets-on-or-off"},{"title":"Give the Neo panel in HaloPSA a new signing secret","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/halo-neo-panel/rotate-secret","href":"/api-reference/integrations/give-the-neo-panel-in-halopsa-a-new-signing-secret"},{"title":"Get the tenant's ticket-relay policy","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/relay-policy","href":"/api-reference/integrations/get-the-tenants-ticket-relay-policy"},{"title":"Ask Neo to build an integration","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/requests","href":"/api-reference/integrations/ask-neo-to-build-an-integration"},{"title":"Get the Neo panel on ServiceNow ticket forms","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/servicenow-neo-panel","href":"/api-reference/integrations/get-the-neo-panel-on-servicenow-ticket-forms"},{"title":"Turn the Neo panel on ServiceNow ticket forms on or off","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/servicenow-neo-panel","href":"/api-reference/integrations/turn-the-neo-panel-on-servicenow-ticket-forms-on-or-off"},{"title":"Give the Neo panel on ServiceNow a new signing secret","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/servicenow-neo-panel/rotate-secret","href":"/api-reference/integrations/give-the-neo-panel-on-servicenow-a-new-signing-secret"},{"title":"Get the Neo AI Agent Slack app status","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/slack-neo-app","href":"/api-reference/integrations/get-the-neo-ai-agent-slack-app-status"},{"title":"Disconnect the Neo AI Agent Slack app","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/integrations/slack-neo-app","href":"/api-reference/integrations/disconnect-the-neo-ai-agent-slack-app"},{"title":"List the Slack channels the Neo AI Agent app is in","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/slack-neo-app/channels","href":"/api-reference/integrations/list-the-slack-channels-the-neo-ai-agent-app-is-in"},{"title":"Create the Neo AI Agent Slack install link","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/slack-neo-app/install-link","href":"/api-reference/integrations/create-the-neo-ai-agent-slack-install-link"},{"title":"List the people of the connected Slack workspace","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/slack-neo-app/users","href":"/api-reference/integrations/list-the-people-of-the-connected-slack-workspace"},{"title":"List the channels Live chat in Teams \u0026 Slack can post in","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/technician-inbox-channels","href":"/api-reference/integrations/list-the-channels-live-chat-in-teams-\u0026-slack-can-post-in"},{"title":"Get the tenant's Live chat in Teams \u0026 Slack channels","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/technician-inbox-config","href":"/api-reference/integrations/get-the-tenants-live-chat-in-teams-\u0026-slack-channels"},{"title":"Set the tenant's Live chat in Teams \u0026 Slack channels","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/integrations/technician-inbox-config","href":"/api-reference/integrations/set-the-tenants-live-chat-in-teams-\u0026-slack-channels"},{"title":"Get the tenant's ticket board/queue sync filter","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/ticket-sync-filter","href":"/api-reference/integrations/get-the-tenants-ticket-boardqueue-sync-filter"},{"title":"Get an integration","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/{name}","href":"/api-reference/integrations/get-an-integration"},{"title":"Get an integration's connect instructions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/{name}/connect-url","href":"/api-reference/integrations/get-an-integrations-connect-instructions"},{"title":"Disconnect an integration","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/integrations/{name}/disconnect","href":"/api-reference/integrations/disconnect-an-integration"},{"title":"List integration sync runs","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/integrations/{name}/sync-runs","href":"/api-reference/integrations/list-integration-sync-runs"},{"title":"Auto-map technicians to their Microsoft user","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/teams-availability/auto-map","href":"/api-reference/integrations/auto-map-technicians-to-their-microsoft-user"},{"title":"Get the Teams availability admin-consent URL","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/teams-availability/consent-url","href":"/api-reference/integrations/get-the-teams-availability-admin-consent-url"},{"title":"List the MSP tenant's Teams","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/teams-availability/teams","href":"/api-reference/integrations/list-the-msp-tenants-teams"}]},{"group":"End companies","pages":[{"title":"List an integration's company links","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/company-links","href":"/api-reference/end-companies/list-an-integrations-company-links"},{"title":"Map an integration's entity to a PSA company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/company-links/assign","href":"/api-reference/end-companies/map-an-integrations-entity-to-a-psa-company"},{"title":"List the companies whose CIPP tenant a person can confirm","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/company-links/cipp-matches","href":"/api-reference/end-companies/list-the-companies-whose-cipp-tenant-a-person-can-confirm"},{"title":"Confirm CIPP tenants as the companies' Microsoft tenants","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/company-links/cipp-matches/confirm","href":"/api-reference/end-companies/confirm-cipp-tenants-as-the-companies-microsoft-tenants"},{"title":"Clear a manual company link","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/company-links/clear","href":"/api-reference/end-companies/clear-a-manual-company-link"},{"title":"List end-companies","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies","href":"/api-reference/end-companies/list-end-companies"},{"title":"Create an end-company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/end-companies","href":"/api-reference/end-companies/create-an-end-company"},{"title":"Bulk-update end-companies","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/end-companies/bulk-update","href":"/api-reference/end-companies/bulk-update-end-companies"},{"title":"List the Microsoft permissions Neo can hold in a GDAP company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies/gdap-permissions-catalog","href":"/api-reference/end-companies/list-the-microsoft-permissions-neo-can-hold-in-a-gdap-company"},{"title":"Get the MSP-wide GDAP permission default","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies/gdap-permissions-default","href":"/api-reference/end-companies/get-the-msp-wide-gdap-permission-default"},{"title":"Set the MSP-wide GDAP permission default","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/end-companies/gdap-permissions-default","href":"/api-reference/end-companies/set-the-msp-wide-gdap-permission-default"},{"title":"Get the default for companies with no identity provider","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies/identity-provider-default","href":"/api-reference/end-companies/get-the-default-for-companies-with-no-identity-provider"},{"title":"Set the default for companies with no identity provider","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/end-companies/identity-provider-default","href":"/api-reference/end-companies/set-the-default-for-companies-with-no-identity-provider"},{"title":"Get an end-company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies/{psa_company_id}","href":"/api-reference/end-companies/get-an-end-company"},{"title":"Delete an end-company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/end-companies/{psa_company_id}","href":"/api-reference/end-companies/delete-an-end-company"},{"title":"Update an end-company","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/end-companies/{psa_company_id}","href":"/api-reference/end-companies/update-an-end-company"},{"title":"List an end-company's contacts","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies/{psa_company_id}/contacts","href":"/api-reference/end-companies/list-an-end-companys-contacts"},{"title":"Get one company's GDAP permissions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-companies/{psa_company_id}/gdap-permissions","href":"/api-reference/end-companies/get-one-companys-gdap-permissions"},{"title":"Override one company's GDAP permissions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/end-companies/{psa_company_id}/gdap-permissions","href":"/api-reference/end-companies/override-one-companys-gdap-permissions"},{"title":"Clear one company's GDAP permission override","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/end-companies/{psa_company_id}/gdap-permissions","href":"/api-reference/end-companies/clear-one-companys-gdap-permission-override"},{"title":"Exclude or include an end-company's tickets","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/end-companies/{psa_company_id}/ticket-exclusion","href":"/api-reference/end-companies/exclude-or-include-an-end-companys-tickets"}]},{"group":"Dashboards","pages":[{"title":"List the workspace's dashboards","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards","href":"/api-reference/dashboards/list-the-workspaces-dashboards"},{"title":"Create a dashboard","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards","href":"/api-reference/dashboards/create-a-dashboard"},{"title":"See which dashboards one member sees, and why","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/access","href":"/api-reference/dashboards/see-which-dashboards-one-member-sees-and-why"},{"title":"List the dashboard folders","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/folders","href":"/api-reference/dashboards/list-the-dashboard-folders"},{"title":"Create a dashboard folder","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards/folders","href":"/api-reference/dashboards/create-a-dashboard-folder"},{"title":"Rename a dashboard folder","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/dashboards/folders/{folder_id}","href":"/api-reference/dashboards/rename-a-dashboard-folder"},{"title":"Delete a dashboard folder","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/dashboards/folders/{folder_id}","href":"/api-reference/dashboards/delete-a-dashboard-folder"},{"title":"List dashboard templates","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/templates","href":"/api-reference/dashboards/list-dashboard-templates"},{"title":"Get a dashboard template","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/templates/{template_id}","href":"/api-reference/dashboards/get-a-dashboard-template"},{"title":"Start a dashboard from a template","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards/templates/{template_id}/instantiate","href":"/api-reference/dashboards/start-a-dashboard-from-a-template"},{"title":"Get a dashboard with its latest widget data","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/{dashboard_id}","href":"/api-reference/dashboards/get-a-dashboard-with-its-latest-widget-data"},{"title":"Update a dashboard","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/dashboards/{dashboard_id}","href":"/api-reference/dashboards/update-a-dashboard"},{"title":"Delete a dashboard","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/dashboards/{dashboard_id}","href":"/api-reference/dashboards/delete-a-dashboard"},{"title":"Read a dashboard's dataset rows","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/{dashboard_id}/dataset","href":"/api-reference/dashboards/read-a-dashboards-dataset-rows"},{"title":"List a dashboard's versions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/{dashboard_id}/definitions","href":"/api-reference/dashboards/list-a-dashboards-versions"},{"title":"Share a dashboard publicly by link, or revoke the link","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/dashboards/{dashboard_id}/public","href":"/api-reference/dashboards/share-a-dashboard-publicly-by-link-or-revoke-the-link"},{"title":"Refresh every widget","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards/{dashboard_id}/refresh","href":"/api-reference/dashboards/refresh-every-widget"},{"title":"See who a dashboard is shared with","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/{dashboard_id}/sharing","href":"/api-reference/dashboards/see-who-a-dashboard-is-shared-with"},{"title":"Share a dashboard with named members, make it private, or open it to the workspace","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/dashboards/{dashboard_id}/sharing","href":"/api-reference/dashboards/share-a-dashboard-with-named-members-make-it-private-or-open-it-to-the-workspace"},{"title":"Copy a widget onto this dashboard","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards/{dashboard_id}/widgets/copy","href":"/api-reference/dashboards/copy-a-widget-onto-this-dashboard"},{"title":"Edit one widget's code","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/dashboards/{dashboard_id}/widgets/{widget_id}/code","href":"/api-reference/dashboards/edit-one-widgets-code"},{"title":"Refresh one widget","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/dashboards/{dashboard_id}/widgets/{widget_id}/refresh","href":"/api-reference/dashboards/refresh-one-widget"},{"title":"Compute a described widget under a view","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/dashboards/{dashboard_id}/widgets/{widget_id}/result","href":"/api-reference/dashboards/compute-a-described-widget-under-a-view"}]},{"group":"End-user notifications","pages":[{"title":"List end-user notifications","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-user-notifications","href":"/api-reference/end-user-notifications/list-end-user-notifications"},{"title":"Send a notification to end users","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/end-user-notifications","href":"/api-reference/end-user-notifications/send-a-notification-to-end-users"},{"title":"Preview who an end-user notification reaches","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-user-notifications/reach","href":"/api-reference/end-user-notifications/preview-who-an-end-user-notification-reaches"},{"title":"Get an end-user notification and its outcome per person","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-user-notifications/{notification_id}","href":"/api-reference/end-user-notifications/get-an-end-user-notification-and-its-outcome-per-person"}]},{"group":"End users","pages":[{"title":"List an end user's tickets (Teams Tickets tab)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/end-user/tickets","href":"/api-reference/end-users/list-an-end-users-tickets-teams-tickets-tab"},{"title":"Continue a ticket in the bot chat (Teams Tickets tab)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/end-user/tickets/chat-request","href":"/api-reference/end-users/continue-a-ticket-in-the-bot-chat-teams-tickets-tab"},{"title":"Ask the bot for a new ticket (Teams Tickets tab)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/end-user/tickets/new-request","href":"/api-reference/end-users/ask-the-bot-for-a-new-ticket-teams-tickets-tab"}]},{"group":"Escalation","pages":[{"title":"Escalate to the Neo team","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/escalate-to-neo-team","href":"/api-reference/escalation/escalate-to-the-neo-team"}]},{"group":"Executions","pages":[{"title":"List executions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions","href":"/api-reference/executions/list-executions"},{"title":"Get an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}","href":"/api-reference/executions/get-an-execution"},{"title":"Get the per-run custom instructions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/additional-custom-instructions","href":"/api-reference/executions/get-the-per-run-custom-instructions"},{"title":"List artifacts an execution produced","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/artifacts","href":"/api-reference/executions/list-artifacts-an-execution-produced"},{"title":"Get an artifact's full body inline","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/artifacts/{artifact_id}/content","href":"/api-reference/executions/get-an-artifacts-full-body-inline"},{"title":"Get a download URL for a sandbox-file artifact","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/artifacts/{artifact_id}/download-url","href":"/api-reference/executions/get-a-download-url-for-a-sandbox-file-artifact"},{"title":"Get the callback that triggered an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/callback","href":"/api-reference/executions/get-the-callback-that-triggered-an-execution"},{"title":"Cancel an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/executions/{execution_id}/cancel","href":"/api-reference/executions/cancel-an-execution"},{"title":"Get the field-update audit for an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/field-update-audit","href":"/api-reference/executions/get-the-field-update-audit-for-an-execution"},{"title":"Retry an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/executions/{execution_id}/retry","href":"/api-reference/executions/retry-an-execution"},{"title":"List the RMM script runs in an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/rmm-script-executions","href":"/api-reference/executions/list-the-rmm-script-runs-in-an-execution"},{"title":"List execution steps","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/steps","href":"/api-reference/executions/list-execution-steps"},{"title":"List the TIL requests raised in an execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/executions/{execution_id}/til-requests","href":"/api-reference/executions/list-the-til-requests-raised-in-an-execution"}]},{"group":"Feedback","pages":[{"title":"Submit feedback","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/feedback","href":"/api-reference/feedback/submit-feedback"},{"title":"Update feedback","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/feedback/{feedback_id}","href":"/api-reference/feedback/update-feedback"},{"title":"Set support-chat contact","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/support-chat-contact","href":"/api-reference/feedback/set-support-chat-contact"}]},{"group":"Handover","pages":[{"title":"Accept a Neo Pulse handover request","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/handover-requests/{request_id}/accept","href":"/api-reference/handover/accept-a-neo-pulse-handover-request"}]},{"group":"Meta","pages":[{"title":"Liveness probe","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/health","href":"/api-reference/meta/liveness-probe"},{"title":"OpenAPI 3.1 document","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/openapi.json","href":"/api-reference/meta/openapi-31-document"}]},{"group":"Insights","pages":[{"title":"Start an Insights analysis","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/insights/analyze","href":"/api-reference/insights/start-an-insights-analysis"},{"title":"Insights presets — suggested region, period options, trial state","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/defaults","href":"/api-reference/insights/insights-presets-—-suggested-region-period-options-trial-state"},{"title":"Build a problem map","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/insights/problems/analyze","href":"/api-reference/insights/build-a-problem-map"},{"title":"Automation coverage per recurring problem, with Neo's plan for each","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/problems/coverage","href":"/api-reference/insights/automation-coverage-per-recurring-problem-with-neos-plan-for-each"},{"title":"List the stored problem maps","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/problems/reports","href":"/api-reference/insights/list-the-stored-problem-maps"},{"title":"A completed problem map","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/problems/result","href":"/api-reference/insights/a-completed-problem-map"},{"title":"Problem map status","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/problems/status","href":"/api-reference/insights/problem-map-status"},{"title":"The newest tickets of one recurring problem, with Neo's coverage on each","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/problems/{problem_id}/tickets","href":"/api-reference/insights/the-newest-tickets-of-one-recurring-problem-with-neos-coverage-on-each"},{"title":"List the stored Insights category reports","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/reports","href":"/api-reference/insights/list-the-stored-insights-category-reports"},{"title":"Latest completed analysis","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/result","href":"/api-reference/insights/latest-completed-analysis"},{"title":"Set the minutes per ticket of report categories","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/insights/result/category-minutes","href":"/api-reference/insights/set-the-minutes-per-ticket-of-report-categories"},{"title":"Set the hourly rate of a category report","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/insights/result/hourly-rate","href":"/api-reference/insights/set-the-hourly-rate-of-a-category-report"},{"title":"Latest analysis status","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/insights/status","href":"/api-reference/insights/latest-analysis-status"}]},{"group":"Intents","pages":[{"title":"List intents","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/intents","href":"/api-reference/intents/list-intents"},{"title":"Create an intent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/intents","href":"/api-reference/intents/create-an-intent"},{"title":"Get an intent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/intents/{intent_id}","href":"/api-reference/intents/get-an-intent"},{"title":"Update an intent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/intents/{intent_id}","href":"/api-reference/intents/update-an-intent"},{"title":"Delete an intent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/intents/{intent_id}","href":"/api-reference/intents/delete-an-intent"}]},{"group":"Memberships","pages":[{"title":"Accept an email invitation","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/invitations/accept","href":"/api-reference/memberships/accept-an-email-invitation"},{"title":"Preview an email invitation","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/invitations/preview","href":"/api-reference/memberships/preview-an-email-invitation"},{"title":"List my workspaces","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/me/workspaces","href":"/api-reference/memberships/list-my-workspaces"},{"title":"List workspace members","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/memberships","href":"/api-reference/memberships/list-workspace-members"},{"title":"Invite a workspace member","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memberships","href":"/api-reference/memberships/invite-a-workspace-member"},{"title":"Cancel a pending invitation","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/memberships/invitations","href":"/api-reference/memberships/cancel-a-pending-invitation"},{"title":"Resend a pending email invitation","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memberships/invitations/resend","href":"/api-reference/memberships/resend-a-pending-email-invitation"},{"title":"Revoke a workspace membership","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/memberships/{user_id}","href":"/api-reference/memberships/revoke-a-workspace-membership"},{"title":"Set a member's end-user notifications permission","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/memberships/{user_id}/end-user-notifications-access","href":"/api-reference/memberships/set-a-members-end-user-notifications-permission"}]},{"group":"Memories","pages":[{"title":"List agent memories","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/memories","href":"/api-reference/memories/list-agent-memories"},{"title":"Create an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories","href":"/api-reference/memories/create-an-agent-memory"},{"title":"Read how full the memory budgets are","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/memories/budget","href":"/api-reference/memories/read-how-full-the-memory-budgets-are"},{"title":"Soft-delete several agent memories","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories/bulk-delete","href":"/api-reference/memories/soft-delete-several-agent-memories"},{"title":"Get an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/memories/{memory_id}","href":"/api-reference/memories/get-an-agent-memory"},{"title":"Soft-delete an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/memories/{memory_id}","href":"/api-reference/memories/soft-delete-an-agent-memory"},{"title":"Pin an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories/{memory_id}/pin","href":"/api-reference/memories/pin-an-agent-memory"},{"title":"Restore an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories/{memory_id}/restore","href":"/api-reference/memories/restore-an-agent-memory"},{"title":"Supersede an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories/{memory_id}/supersede","href":"/api-reference/memories/supersede-an-agent-memory"},{"title":"Unpin an agent memory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/memories/{memory_id}/unpin","href":"/api-reference/memories/unpin-an-agent-memory"},{"title":"List a memory's earlier versions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/memories/{memory_id}/versions","href":"/api-reference/memories/list-a-memorys-earlier-versions"}]},{"group":"Observability","pages":[{"title":"Callback-processing funnel","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/observability/callback-funnel","href":"/api-reference/observability/callback-processing-funnel"},{"title":"Per-agent performance breakdown","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/observability/workflow-performance","href":"/api-reference/observability/per-agent-performance-breakdown"}]},{"group":"Organizations","pages":[{"title":"Get this workspace's organization","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/organizations/current","href":"/api-reference/organizations/get-this-workspaces-organization"},{"title":"Get organization administration details","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/organizations/{organization_id}","href":"/api-reference/organizations/get-organization-administration-details"},{"title":"Rename an organization","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/organizations/{organization_id}","href":"/api-reference/organizations/rename-an-organization"},{"title":"Get the organization's billing","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/organizations/{organization_id}/billing","href":"/api-reference/organizations/get-the-organizations-billing"},{"title":"Set an organization-billed workspace's monthly credit limit","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/organizations/{organization_id}/billing/workspaces/{client_id}/limit","href":"/api-reference/organizations/set-an-organization-billed-workspaces-monthly-credit-limit"},{"title":"Assign an organization administrator","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/organizations/{organization_id}/members","href":"/api-reference/organizations/assign-an-organization-administrator"},{"title":"Revoke organization administration","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/organizations/{organization_id}/members","href":"/api-reference/organizations/revoke-organization-administration"},{"title":"Create a subsidiary workspace","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/organizations/{organization_id}/workspaces","href":"/api-reference/organizations/create-a-subsidiary-workspace"},{"title":"Grant explicit workspace access","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/organizations/{organization_id}/workspaces/{client_id}/access","href":"/api-reference/organizations/grant-explicit-workspace-access"},{"title":"Get workspace Microsoft directory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/workspace-directory","href":"/api-reference/organizations/get-workspace-microsoft-directory"},{"title":"Connect my Microsoft directory","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/workspace-directory","href":"/api-reference/organizations/connect-my-microsoft-directory"}]},{"group":"Performance","pages":[{"title":"Per-category execution stats","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/categories","href":"/api-reference/performance/per-category-execution-stats"},{"title":"Per-agent chat cost + usage for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/chat/by-agent","href":"/api-reference/performance/per-agent-chat-cost-+-usage-for-a-date-window"},{"title":"Per-user chat cost + usage for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/chat/by-user","href":"/api-reference/performance/per-user-chat-cost-+-usage-for-a-date-window"},{"title":"Aggregate chat-agent cost + usage for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/chat/summary","href":"/api-reference/performance/aggregate-chat-agent-cost-+-usage-for-a-date-window"},{"title":"Chat credits / turns over time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/chat/timeline","href":"/api-reference/performance/chat-credits-turns-over-time"},{"title":"Per-tool chat usage + cost for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/chat/tools","href":"/api-reference/performance/per-tool-chat-usage-+-cost-for-a-date-window"},{"title":"Phone agent billed minutes and credits for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/phone","href":"/api-reference/performance/phone-agent-billed-minutes-and-credits-for-a-date-window"},{"title":"Aggregate execution stats for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/summary","href":"/api-reference/performance/aggregate-execution-stats-for-a-date-window"},{"title":"Tickets received vs. handled by Neo over time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/ticket-coverage","href":"/api-reference/performance/tickets-received-vs-handled-by-neo-over-time"},{"title":"Tickets one agent ran on, each counted once, by how it ended","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/ticket-outcomes","href":"/api-reference/performance/tickets-one-agent-ran-on-each-counted-once-by-how-it-ended"},{"title":"Execution volume / hours saved over time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/timeline","href":"/api-reference/performance/execution-volume-hours-saved-over-time"},{"title":"Per-agent execution stats for a date window","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/performance/workflows","href":"/api-reference/performance/per-agent-execution-stats-for-a-date-window"}]},{"group":"Phone Agent","pages":[{"title":"List Phone Agent calls","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/calls","href":"/api-reference/phone-agent/list-phone-agent-calls"},{"title":"Get one Phone Agent call","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/calls/{call_id}","href":"/api-reference/phone-agent/get-one-phone-agent-call"},{"title":"List notetaker calls: calls routed to the help desk while Neo takes notes","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/notetaker-calls","href":"/api-reference/phone-agent/list-notetaker-calls:-calls-routed-to-the-help-desk-while-neo-takes-notes"},{"title":"Add a notetaker call's notes to a ticket","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/phone/notetaker-calls/{call_id}/ticket","href":"/api-reference/phone-agent/add-a-notetaker-calls-notes-to-a-ticket"},{"title":"List Phone Agent numbers","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/numbers","href":"/api-reference/phone-agent/list-phone-agent-numbers"},{"title":"Change a number's greetings, after-hours instructions, business hours, notetaker note visibility, transfer, end-call, caller-tickets, documentation and web search settings","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/phone/numbers/{number}","href":"/api-reference/phone-agent/change-a-numbers-greetings-after-hours-instructions-business-hours-notetaker-note-visibility-transfer-end-call-caller-tickets-documentation-and-web-search-settings"},{"title":"Choose who takes a number's calls","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/phone/numbers/{number}/call-mode","href":"/api-reference/phone-agent/choose-who-takes-a-numbers-calls"},{"title":"List outbound calls: calls agents had Neo place to a ticket's contact","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/outbound-calls","href":"/api-reference/phone-agent/list-outbound-calls:-calls-agents-had-neo-place-to-a-tickets-contact"},{"title":"List notetaker calls (old path)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/passive-calls","href":"/api-reference/phone-agent/list-notetaker-calls-old-path"},{"title":"Add a notetaker call's notes to a ticket (old path)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/phone/passive-calls/{call_id}/ticket","href":"/api-reference/phone-agent/add-a-notetaker-calls-notes-to-a-ticket-old-path"},{"title":"List dashboard test calls","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/test-calls","href":"/api-reference/phone-agent/list-dashboard-test-calls"},{"title":"Get one dashboard test call","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/phone/test-calls/{test_call_id}","href":"/api-reference/phone-agent/get-one-dashboard-test-call"}]},{"group":"RMM scripts","pages":[{"title":"List RMM script executions","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/rmm-script-executions","href":"/api-reference/rmm-scripts/list-rmm-script-executions"},{"title":"Get an RMM script execution","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/rmm-script-executions/{execution_id}","href":"/api-reference/rmm-scripts/get-an-rmm-script-execution"}]},{"group":"Scheduled work","pages":[{"title":"List scheduled work","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/scheduled-work","href":"/api-reference/scheduled-work/list-scheduled-work"},{"title":"Schedule work","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/scheduled-work","href":"/api-reference/scheduled-work/schedule-work"},{"title":"Get a scheduled-work entry","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/scheduled-work/{scheduled_work_id}","href":"/api-reference/scheduled-work/get-a-scheduled-work-entry"},{"title":"Update a scheduled-work entry","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/scheduled-work/{scheduled_work_id}","href":"/api-reference/scheduled-work/update-a-scheduled-work-entry"},{"title":"Cancel a scheduled-work entry","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/scheduled-work/{scheduled_work_id}/cancel","href":"/api-reference/scheduled-work/cancel-a-scheduled-work-entry"}]},{"group":"Schemas","pages":[{"title":"Action-type schema catalog","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/actions","href":"/api-reference/schemas/action-type-schema-catalog"},{"title":"Agent-integration schema catalog","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/agent-integrations","href":"/api-reference/schemas/agent-integration-schema-catalog"},{"title":"Agent structural schema","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/agents","href":"/api-reference/schemas/agent-structural-schema"},{"title":"Callback change-option catalog","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/callback-change-options","href":"/api-reference/schemas/callback-change-option-catalog"},{"title":"Custom-field-condition schema","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/custom-field-condition","href":"/api-reference/schemas/custom-field-condition-schema"},{"title":"Queryable-entity options","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/entity-options","href":"/api-reference/schemas/queryable-entity-options"},{"title":"Integrations schema catalog","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/integrations","href":"/api-reference/schemas/integrations-schema-catalog"},{"title":"Opportunity-field schema (ConnectWise only)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/opportunity","href":"/api-reference/schemas/opportunity-field-schema-connectwise-only"},{"title":"Project-ticket-field schema (ConnectWise only)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/project_ticket","href":"/api-reference/schemas/project-ticket-field-schema-connectwise-only"},{"title":"Ticket-field schema","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/ticket","href":"/api-reference/schemas/ticket-field-schema"},{"title":"Time-entry-field schema","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/time_entry","href":"/api-reference/schemas/time-entry-field-schema"},{"title":"Tool catalog","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/schemas/tools","href":"/api-reference/schemas/tool-catalog"}]},{"group":"Settings","pages":[{"title":"Get tenant settings","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/settings","href":"/api-reference/settings/get-tenant-settings"},{"title":"Update tenant settings","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/settings","href":"/api-reference/settings/update-tenant-settings"},{"title":"Get who receives the inbox emails","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/settings/inbox-alerts","href":"/api-reference/settings/get-who-receives-the-inbox-emails"},{"title":"Set who receives the inbox emails","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/settings/inbox-alerts","href":"/api-reference/settings/set-who-receives-the-inbox-emails"},{"title":"Tenant-settings JSON schema","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/settings/schema","href":"/api-reference/settings/tenant-settings-json-schema"},{"title":"Get the agent credit spend notice settings","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/settings/spend-alerts","href":"/api-reference/settings/get-the-agent-credit-spend-notice-settings"},{"title":"Get the cost of technician time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/settings/value","href":"/api-reference/settings/get-the-cost-of-technician-time"},{"title":"Set the cost of technician time","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/settings/value","href":"/api-reference/settings/set-the-cost-of-technician-time"}]},{"group":"Sharing","pages":[{"title":"Get a publicly shared agent","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/shared-agents/{share_token}","href":"/api-reference/sharing/get-a-publicly-shared-agent"},{"title":"Get a shared agent's definition","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/shared-agents/{share_token}/definition","href":"/api-reference/sharing/get-a-shared-agents-definition"}]},{"group":"Skills","pages":[{"title":"List the tenant's skills","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills","href":"/api-reference/skills/list-the-tenants-skills"},{"title":"Create a skill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/skills","href":"/api-reference/skills/create-a-skill"},{"title":"Rename a skill folder","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/skills/folders/rename","href":"/api-reference/skills/rename-a-skill-folder"},{"title":"Get a skill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills/{skill_id}","href":"/api-reference/skills/get-a-skill"},{"title":"Replace whole files / update skill metadata","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/skills/{skill_id}","href":"/api-reference/skills/replace-whole-files-update-skill-metadata"},{"title":"Delete a skill","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/skills/{skill_id}","href":"/api-reference/skills/delete-a-skill"},{"title":"Edit part of a skill's file","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/skills/{skill_id}","href":"/api-reference/skills/edit-part-of-a-skills-file"},{"title":"List the versions of a skill file","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills/{skill_id}/files/{file_path}/versions","href":"/api-reference/skills/list-the-versions-of-a-skill-file"},{"title":"Get one version of a skill file","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills/{skill_id}/files/{file_path}/versions/{version}","href":"/api-reference/skills/get-one-version-of-a-skill-file"},{"title":"List a skill's recent test runs","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills/{skill_id}/test-runs","href":"/api-reference/skills/list-a-skills-recent-test-runs"},{"title":"Run a skill script in the sandbox (SSE)","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/skills/{skill_id}/test-runs","href":"/api-reference/skills/run-a-skill-script-in-the-sandbox-sse"},{"title":"Get a test run","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/skills/{skill_id}/test-runs/{run_id}","href":"/api-reference/skills/get-a-test-run"}]},{"group":"Technicians","pages":[{"title":"List removed Teams users","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/teams-users/removed","href":"/api-reference/technicians/list-removed-teams-users"},{"title":"Remove a Teams user","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/teams-users/{user_id}","href":"/api-reference/technicians/remove-a-teams-user"},{"title":"Restore a removed Teams user","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/teams-users/{user_id}/restore","href":"/api-reference/technicians/restore-a-removed-teams-user"},{"title":"List technician groups","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technician-groups","href":"/api-reference/technicians/list-technician-groups"},{"title":"Create a technician group","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technician-groups","href":"/api-reference/technicians/create-a-technician-group"},{"title":"Set a technician's groups","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/technician-groups/memberships","href":"/api-reference/technicians/set-a-technicians-groups"},{"title":"Replace a technician group","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/technician-groups/{group_id}","href":"/api-reference/technicians/replace-a-technician-group"},{"title":"Delete a technician group","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/technician-groups/{group_id}","href":"/api-reference/technicians/delete-a-technician-group"},{"title":"List technician working-hours schedules","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technician-schedules","href":"/api-reference/technicians/list-technician-working-hours-schedules"},{"title":"Create a technician working-hours schedule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technician-schedules","href":"/api-reference/technicians/create-a-technician-working-hours-schedule"},{"title":"Put technicians on a working-hours schedule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/technician-schedules/assignments","href":"/api-reference/technicians/put-technicians-on-a-working-hours-schedule"},{"title":"List each technician's PSA working hours","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technician-schedules/psa-hours","href":"/api-reference/technicians/list-each-technicians-psa-working-hours"},{"title":"Replace a technician working-hours schedule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/technician-schedules/{schedule_id}","href":"/api-reference/technicians/replace-a-technician-working-hours-schedule"},{"title":"Delete a technician working-hours schedule","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/technician-schedules/{schedule_id}","href":"/api-reference/technicians/delete-a-technician-working-hours-schedule"},{"title":"List technicians","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technicians","href":"/api-reference/technicians/list-technicians"},{"title":"Create a technician","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technicians","href":"/api-reference/technicians/create-a-technician"},{"title":"List the companies with technician rules","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technicians/companies","href":"/api-reference/technicians/list-the-companies-with-technician-rules"},{"title":"Set a company's technician rules","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json put /public-api/technicians/companies/{psa_company_id}","href":"/api-reference/technicians/set-a-companys-technician-rules"},{"title":"List the Microsoft accounts Neo knows","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technicians/microsoft-accounts","href":"/api-reference/technicians/list-the-microsoft-accounts-neo-knows"},{"title":"List the technicians' Slack links","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technicians/slack-links","href":"/api-reference/technicians/list-the-technicians-slack-links"},{"title":"Match technicians to Slack users again","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/technicians/slack-links/refresh","href":"/api-reference/technicians/match-technicians-to-slack-users-again"},{"title":"Get a technician","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/technicians/{profile_id}","href":"/api-reference/technicians/get-a-technician"},{"title":"Soft-delete a technician","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json delete /public-api/technicians/{profile_id}","href":"/api-reference/technicians/soft-delete-a-technician"},{"title":"Update a technician","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json patch /public-api/technicians/{profile_id}","href":"/api-reference/technicians/update-a-technician"}]},{"group":"Templates","pages":[{"title":"List agent/workflow templates","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/templates","href":"/api-reference/templates/list-agentworkflow-templates"},{"title":"List template categories","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/templates/categories","href":"/api-reference/templates/list-template-categories"},{"title":"Get a template","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/templates/{template_id}","href":"/api-reference/templates/get-a-template"},{"title":"Instantiate a template for this tenant","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/templates/{template_id}/instantiate","href":"/api-reference/templates/instantiate-a-template-for-this-tenant"}]},{"group":"TIL requests","pages":[{"title":"List technician-in-the-loop requests","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/til-requests","href":"/api-reference/til-requests/list-technician-in-the-loop-requests"},{"title":"List the tenant's distinct TIL approvers","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/til-requests/approvers","href":"/api-reference/til-requests/list-the-tenants-distinct-til-approvers"},{"title":"Approve or reject multiple TIL requests","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/til-requests/bulk-decision","href":"/api-reference/til-requests/approve-or-reject-multiple-til-requests"},{"title":"Dismiss pending TIL requests without a decision","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/til-requests/dismiss","href":"/api-reference/til-requests/dismiss-pending-til-requests-without-a-decision"},{"title":"Approval-queue stats","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/til-requests/stats","href":"/api-reference/til-requests/approval-queue-stats"},{"title":"Get a TIL request","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json get /public-api/til-requests/{request_id}","href":"/api-reference/til-requests/get-a-til-request"},{"title":"Approve, reject, or request changes on a TIL request","deprecated":null,"version":null,"openapi":"https://api.neoagent.io/public-api/openapi.json post /public-api/til-requests/{request_id}/decision","href":"/api-reference/til-requests/approve-reject-or-request-changes-on-a-til-request"}]}]}]},{"tab":"Changelog","href":"https://feedback.neoagent.io/changelog"}]},"basePath":"","title":"Append a user message + enqueue a chat turn - Neo Agent","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}