Deprecated — use POST /v1/agents/events/ingest (AgentEvent protocol).
This route stays live for old @novu/framework and existing OpenAPI sendReply clients.
Do not use it for new integrations.
Message actions
reply — markdown, interactive card, or tool-approval card (optional files)
edit — update a previously delivered message in place
deleteMessages — remove rendered platform messages (history is kept)
addReactions — add emoji reactions to existing messages
Turn control
typing — { status?: string } to set status, or "stop" to clear
resolve — mark the conversation resolved (optionally with a final reply)
error: true — report a customer-runtime failure (cannot combine with other actions)
Signals & tools
signals — metadata set/delete/clear, or trigger a Novu workflow
toolResults — persist tool outputs into conversation history
toolApprovalRequest — ledger a gated tool call (pair with an approval card reply)
Returns { data: { messageId, platformThreadId } } when a reply or edit is delivered;
otherwise { data: null }.
import { Novu } from "@novu/api";
const novu = new Novu({
secretKey: "YOUR_SECRET_KEY_HERE",
});
async function run() {
const result = await novu.agents.sendReply({
conversationId: "64f5a1c2e8b7a3d9f0c1b2a3",
integrationIdentifier: "slack-support",
reply: {
markdown: "**Report ready.** Your weekly summary is attached.",
},
}, "support-agent");
console.log(result);
}
run();
using Novu;
using Novu.Models.Components;
var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE");
var res = await sdk.Agents.SendReplyAsync(
agentId: "support-agent",
agentReplyPayloadDto: new AgentReplyPayloadDto() {
ConversationId = "64f5a1c2e8b7a3d9f0c1b2a3",
IntegrationIdentifier = "slack-support",
Reply = Reply.CreateMarkdownReplyContentDto(
new MarkdownReplyContentDto() {
Markdown = "**Report ready.** Your weekly summary is attached.",
}
),
}
);
// handle response
declare(strict_types=1);
require 'vendor/autoload.php';
use novu;
use novu\Models\Components;
$sdk = novu\Novu::builder()
->setSecurity(
'YOUR_SECRET_KEY_HERE'
)
->build();
$agentReplyPayloadDto = new Components\AgentReplyPayloadDto(
conversationId: '64f5a1c2e8b7a3d9f0c1b2a3',
integrationIdentifier: 'slack-support',
reply: new Components\MarkdownReplyContentDto(
markdown: '**Report ready.** Your weekly summary is attached.',
),
);
$response = $sdk->agents->sendReply(
agentId: 'support-agent',
agentReplyPayloadDto: $agentReplyPayloadDto
);
if ($response->object !== null) {
// handle response
}
import novu_py
from novu_py import Novu
with Novu(
secret_key="YOUR_SECRET_KEY_HERE",
) as novu:
res = novu.agents.send_reply(agent_id="support-agent", agent_reply_payload_dto=novu_py.AgentReplyPayloadDto(
conversation_id="64f5a1c2e8b7a3d9f0c1b2a3",
integration_identifier="slack-support",
reply=novu_py.MarkdownReplyContentDto(
markdown="**Report ready.** Your weekly summary is attached.",
),
))
# Handle response
print(res)
Send a reply into an existing agent conversation from server-side code. Use this when you are not running @novu/framework on the bridge (for example with the Python, Go, PHP, .NET, or Java SDKs), or when another backend service needs to post into a live conversation.The request body is a bag of optional actions. Provide at least one of reply, edit, resolve, signals, toolResults, toolApprovalRequest, addReactions, deleteMessages, typing, or error. Named examples in the OpenAPI spec cover the common shapes.When a reply or edit is delivered, the response data contains messageId and platformThreadId. Side-effect-only requests return data: null.For the TypeScript bridge API (ctx.reply, cards, signals), see Reply.
Agent identifier (slug) for the agent that owns the conversation.
Body
application/json
Reply payload. Provide at least one action: reply, edit, resolve, signals, toolResults, toolApprovalRequest, addReactions, deleteMessages, typing, or error. See named examples for common shapes used by server-side SDKs.
In-place edit of a previously posted agent message. Cannot be combined with reply, resolve, signals, toolResults, toolApprovalRequest, addReactions, or deleteMessages.
Per-turn typing/status control. Pass { status?: string } to set/update the status (omit status for "Thinking…"), or "stop" to clear it. Best-effort per platform.
Bridge reports that the customer runtime failed this turn. Cannot be combined with other actions. Novu delivers generic user-facing error copy.
Example:
true
Response
object | null
OK. When a reply or edit is delivered, data contains the platform message identifiers. Side-effect-only requests (typing, reactions, deletes, signals without an outbound message) return data: null.
import { Novu } from "@novu/api";
const novu = new Novu({
secretKey: "YOUR_SECRET_KEY_HERE",
});
async function run() {
const result = await novu.agents.sendReply({
conversationId: "64f5a1c2e8b7a3d9f0c1b2a3",
integrationIdentifier: "slack-support",
reply: {
markdown: "**Report ready.** Your weekly summary is attached.",
},
}, "support-agent");
console.log(result);
}
run();
using Novu;
using Novu.Models.Components;
var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE");
var res = await sdk.Agents.SendReplyAsync(
agentId: "support-agent",
agentReplyPayloadDto: new AgentReplyPayloadDto() {
ConversationId = "64f5a1c2e8b7a3d9f0c1b2a3",
IntegrationIdentifier = "slack-support",
Reply = Reply.CreateMarkdownReplyContentDto(
new MarkdownReplyContentDto() {
Markdown = "**Report ready.** Your weekly summary is attached.",
}
),
}
);
// handle response
declare(strict_types=1);
require 'vendor/autoload.php';
use novu;
use novu\Models\Components;
$sdk = novu\Novu::builder()
->setSecurity(
'YOUR_SECRET_KEY_HERE'
)
->build();
$agentReplyPayloadDto = new Components\AgentReplyPayloadDto(
conversationId: '64f5a1c2e8b7a3d9f0c1b2a3',
integrationIdentifier: 'slack-support',
reply: new Components\MarkdownReplyContentDto(
markdown: '**Report ready.** Your weekly summary is attached.',
),
);
$response = $sdk->agents->sendReply(
agentId: 'support-agent',
agentReplyPayloadDto: $agentReplyPayloadDto
);
if ($response->object !== null) {
// handle response
}
import novu_py
from novu_py import Novu
with Novu(
secret_key="YOUR_SECRET_KEY_HERE",
) as novu:
res = novu.agents.send_reply(agent_id="support-agent", agent_reply_payload_dto=novu_py.AgentReplyPayloadDto(
conversation_id="64f5a1c2e8b7a3d9f0c1b2a3",
integration_identifier="slack-support",
reply=novu_py.MarkdownReplyContentDto(
markdown="**Report ready.** Your weekly summary is attached.",
),
))
# Handle response
print(res)
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Novu","description":"The open-source notification infrastructure for agents and products. Send, receive, and track notifications across channels.","colors":{"primary":"#0e121b","light":"#FFFFFF","dark":"#FFFFFF"},"logo":{"light":"https://mintcdn.com/novu-c5de82d9/2Q_L4HxwUfLmJjB8/logo/light.svg?fit=max\u0026auto=format\u0026n=2Q_L4HxwUfLmJjB8\u0026q=85\u0026s=23e7050191303b6a0ac4a671dfed8df4","dark":"https://mintcdn.com/novu-c5de82d9/2Q_L4HxwUfLmJjB8/logo/dark.svg?fit=max\u0026auto=format\u0026n=2Q_L4HxwUfLmJjB8\u0026q=85\u0026s=bd7c54f6b7a7b5002ea7b525af3e169c","href":"https://docs.novu.co"},"favicon":"https://mintcdn.com/novu-c5de82d9/ZUl3xXp-4AASlrcI/favicon.svg?fit=max\u0026auto=format\u0026n=ZUl3xXp-4AASlrcI\u0026q=85\u0026s=b53c3afb6a8eaf11aff9db2c5d3f05a1","api":{"openapi":"https://spec.speakeasy.com/novu/novu/json-development-with-code-samples","examples":{"prefill":true}},"background":{},"navbar":{"links":[{"href":"https://novu.co/contact-us","label":"Contact Us"}],"primary":{"type":"button","label":"Get Started","href":"https://dashboard.novu.co/auth/sign-up"}},"footer":{"socials":{"x":"https://x.com/novuhq","github":"https://github.com/novuhq/novu","linkedin":"https://www.linkedin.com/company/novuco"},"links":[{"header":"Comparison","items":[{"label":"Novu vs Courier","href":"https://novu.co/comparison/courier"},{"label":"Novu vs Knock","href":"https://novu.co/comparison/knock"},{"label":"Novu vs MagicBell","href":"https://novu.co/comparison/magicbell"},{"label":"Novu vs SuprSend","href":"https://novu.co/comparison/suprsend"},{"label":"Novu vs In-house","href":"https://novu.co/comparison/building-in-house"}]},{"header":"Resources","items":[{"label":"Contact Support","href":"mailto:support@novu.co"},{"label":"Changelog","href":"https://go.novu.co/changelog?utm_source=docs_footer"},{"label":"Roadmap","href":"https://roadmap.novu.co/roadmap"},{"label":"Contact Sales","href":"https://novu.co/contact-us"},{"label":"Read llms.txt","href":"/llms.txt"}]}]},"seo":{"metatags":{"og:type":"website","twitter:card":"summary_large_image"},"indexing":"all"},"icons":{"library":"lucide"},"integrations":{"gtm":{"tagId":"GTM-KXMC4XP2"},"plausible":{"domain":"docs.novu.co"}},"contextual":{"options":["copy","view","cursor","claude","chatgpt","mcp","add-mcp"],"display":"header"},"thumbnails":{"appearance":"dark","background":"https://mintcdn.com/novu-c5de82d9/vncv7ET97M5-dM6d/images/og/og-image-docs-v2.jpg?fit=max\u0026auto=format\u0026n=vncv7ET97M5-dM6d\u0026q=85\u0026s=26b59f5c597b5b1bea44cbc57cad5e3a","fonts":{"family":"Inter"}},"interaction":{"drilldown":true},"styling":{"latex":false},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"novu-c5de82d9","hasAudioNarration":false,"actualSubdomain":"novu-c5de82d9","customDomains":["docs.novu.co"],"gitSource":{"type":"github","owner":"novuhq","repo":"novu","deployBranch":"next","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"}},"buildId":"6aeaee1599f2540479a87725","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Notify","count":217},{"language":"default","tag":"API Reference","count":160},{"language":"default","tag":"Resources","count":107},{"language":"default","tag":"Integrate Channels Providers","count":93},{"language":"default","tag":"Guides","count":86},{"language":"default","tag":"Data","count":63},{"language":"default","tag":"Getting Started","count":62},{"language":"default","tag":"Framework","count":52},{"language":"default","tag":"Agent Connect","count":41},{"language":"default","tag":"Sms","count":38}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@novu.co","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@media (min-width: 1024px){#sidebar-content{width:16rem;min-width:16rem;max-width:16rem}}body:has(#home-content) nav[aria-label=\"Main\"] a[aria-current=\"location\"]{background:transparent!important;color:rgb(75 85 99)}html.dark body:has(#home-content) nav[aria-label=\"Main\"] a[aria-current=\"location\"]{color:rgb(156 163 175)}body:has(#home-content) nav[aria-label=\"Main\"] a[aria-current=\"location\"]:hover{background:rgb(3 7 18 / 0.03)!important;color:rgb(17 24 39)}html.dark body:has(#home-content) nav[aria-label=\"Main\"] a[aria-current=\"location\"]:hover{background:rgb(255 255 255 / 0.03)!important;color:rgb(229 231 235)}#home-content .hero-cards{margin-top:1.5rem}#home-content .card [data-component-part=\"card-image\"]{width:107.5%;max-width:none;margin:-3.75% -3.75% 0}"}],"page":{"pagePath":"api-reference/agents/send-an-agent-reply","slug":"/api-reference/agents/send-an-agent-reply","pageMetadata":{"title":"Send an agent reply","openapi":"POST /v1/agents/{agentId}/reply","description":"**Deprecated** — use `POST /v1/agents/events/ingest` (AgentEvent protocol).\nThis route stays live for old `@novu/framework` and existing OpenAPI `sendReply` clients.\nDo not use it for new integrations.\n\n**Message actions**\n- `reply` — markdown, interactive card, or tool-approval card (optional `files`)\n- `edit` — update a previously delivered message in place\n- `deleteMessages` — remove rendered platform messages (history is kept)\n- `addReactions` — add emoji reactions to existing messages\n\n**Turn control**\n- `typing` — `{ status?: string }` to set status, or `\"stop\"` to clear\n- `resolve` — mark the conversation resolved (optionally with a final reply)\n- `error: true` — report a customer-runtime failure (cannot combine with other actions)\n\n**Signals \u0026 tools**\n- `signals` — metadata set/delete/clear, or trigger a Novu workflow\n- `toolResults` — persist tool outputs into conversation history\n- `toolApprovalRequest` — ledger a gated tool call (pair with an approval card reply)\n\nReturns `{ data: { messageId, platformThreadId } }` when a reply or edit is delivered;\notherwise `{ data: null }`.","href":"/api-reference/agents/send-an-agent-reply"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Deprecated\"\n }), \" — use \", _jsx(_components.code, {\n children: \"POST /v1/agents/events/ingest\"\n }), \" (AgentEvent protocol).\\nThis route stays live for old \", _jsx(_components.code, {\n children: \"@novu/framework\"\n }), \" and existing OpenAPI \", _jsx(_components.code, {\n children: \"sendReply\"\n }), \" clients.\\nDo not use it for new integrations.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Message actions\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"reply\"\n }), \" — markdown, interactive card, or tool-approval card (optional \", _jsx(_components.code, {\n children: \"files\"\n }), \")\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"edit\"\n }), \" — update a previously delivered message in place\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"deleteMessages\"\n }), \" — remove rendered platform messages (history is kept)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"addReactions\"\n }), \" — add emoji reactions to existing messages\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Turn control\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"typing\"\n }), \" — \", _jsx(_components.code, {\n children: \"{ status?: string }\"\n }), \" to set status, or \", _jsx(_components.code, {\n children: \"\\\"stop\\\"\"\n }), \" to clear\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"resolve\"\n }), \" — mark the conversation resolved (optionally with a final reply)\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"error: true\"\n }), \" — report a customer-runtime failure (cannot combine with other actions)\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Signals \u0026 tools\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"signals\"\n }), \" — metadata set/delete/clear, or trigger a Novu workflow\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"toolResults\"\n }), \" — persist tool outputs into conversation history\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"toolApprovalRequest\"\n }), \" — ledger a gated tool call (pair with an approval card reply)\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Returns \", _jsx(_components.code, {\n children: \"{ data: { messageId, platformThreadId } }\"\n }), \" when a reply or edit is delivered;\\notherwise \", _jsx(_components.code, {\n children: \"{ data: null }\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,..._provideComponents(),...props.components};return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Send a reply into an existing agent conversation from server-side code. Use this when you are not running `,_jsx(_components.code,{children:`@novu/framework`}),` on the bridge (for example with the Python, Go, PHP, .NET, or Java SDKs), or when another backend service needs to post into a live conversation.`]}),`\n`,_jsxs(_components.p,{children:[`The request body is a bag of optional actions. Provide at least one of `,_jsx(_components.code,{children:`reply`}),`, `,_jsx(_components.code,{children:`edit`}),`, `,_jsx(_components.code,{children:`resolve`}),`, `,_jsx(_components.code,{children:`signals`}),`, `,_jsx(_components.code,{children:`toolResults`}),`, `,_jsx(_components.code,{children:`toolApprovalRequest`}),`, `,_jsx(_components.code,{children:`addReactions`}),`, `,_jsx(_components.code,{children:`deleteMessages`}),`, `,_jsx(_components.code,{children:`typing`}),`, or `,_jsx(_components.code,{children:`error`}),`. Named examples in the OpenAPI spec cover the common shapes.`]}),`\n`,_jsxs(_components.p,{children:[`When a reply or edit is delivered, the response `,_jsx(_components.code,{children:`data`}),` contains `,_jsx(_components.code,{children:`messageId`}),` and `,_jsx(_components.code,{children:`platformThreadId`}),`. Side-effect-only requests return `,_jsx(_components.code,{children:`data: null`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`For the TypeScript bridge API (`,_jsx(_components.code,{children:`ctx.reply`}),`, cards, signals), see `,_jsx(_components.a,{href:`/agents/custom-code-agent/building-blocks/reply`,children:`Reply`}),`.`]})]})}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":"Send an agent reply","openapi":"POST /v1/agents/{agentId}/reply","description":"**Deprecated** — use `POST /v1/agents/events/ingest` (AgentEvent protocol).\nThis route stays live for old `@novu/framework` and existing OpenAPI `sendReply` clients.\nDo not use it for new integrations.\n\n**Message actions**\n- `reply` — markdown, interactive card, or tool-approval card (optional `files`)\n- `edit` — update a previously delivered message in place\n- `deleteMessages` — remove rendered platform messages (history is kept)\n- `addReactions` — add emoji reactions to existing messages\n\n**Turn control**\n- `typing` — `{ status?: string }` to set status, or `\"stop\"` to clear\n- `resolve` — mark the conversation resolved (optionally with a final reply)\n- `error: true` — report a customer-runtime failure (cannot combine with other actions)\n\n**Signals \u0026 tools**\n- `signals` — metadata set/delete/clear, or trigger a Novu workflow\n- `toolResults` — persist tool outputs into conversation history\n- `toolApprovalRequest` — ledger a gated tool call (pair with an approval card reply)\n\nReturns `{ data: { messageId, platformThreadId } }` when a reply or edit is delivered;\notherwise `{ data: null }`.","href":"/api-reference/agents/send-an-agent-reply"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"AgentReplyController_handleAgentReplyHandler","x-speakeasy-usage-example":{"title":"Send an agent reply"},"x-speakeasy-name-override":"sendReply","x-speakeasy-group":"Agents","summary":"Send an agent reply","deprecated":true,"description":"**Deprecated** — use `POST /v1/agents/events/ingest` (AgentEvent protocol).\nThis route stays live for old `@novu/framework` and existing OpenAPI `sendReply` clients.\nDo not use it for new integrations.\n\n**Message actions**\n- `reply` — markdown, interactive card, or tool-approval card (optional `files`)\n- `edit` — update a previously delivered message in place\n- `deleteMessages` — remove rendered platform messages (history is kept)\n- `addReactions` — add emoji reactions to existing messages\n\n**Turn control**\n- `typing` — `{ status?: string }` to set status, or `\"stop\"` to clear\n- `resolve` — mark the conversation resolved (optionally with a final reply)\n- `error: true` — report a customer-runtime failure (cannot combine with other actions)\n\n**Signals \u0026 tools**\n- `signals` — metadata set/delete/clear, or trigger a Novu workflow\n- `toolResults` — persist tool outputs into conversation history\n- `toolApprovalRequest` — ledger a gated tool call (pair with an approval card reply)\n\nReturns `{ data: { messageId, platformThreadId } }` when a reply or edit is delivered;\notherwise `{ data: null }`.","parameters":["6cf91317-2f6d-462d-82d0-c12e68515bc7","8a100861-41b7-4bcc-9ae7-9fb78a908171"],"requestBody":"521fcd56-f776-4795-9b11-eff49f23f475","responses":{"200":"f8d2bc36-e7bf-48ed-b776-e82de718621d","400":"49a3d0a7-c977-4c21-8693-9cff1b575169","401":"5d0c9864-3071-4371-8152-f50a34ea2a71","403":"5cdcfe84-fb63-4457-85cf-8e043805a3b2","404":"2ad607ba-b134-4e8c-bfa7-b43cb4d6cd5a","405":"f69cca9d-099c-4718-9955-7f553b98ac91","409":"53be2c0e-d1e7-483c-a40a-b44c65b02b9b","413":"467aa851-a1fc-4c2b-bcaf-31138124518a","414":"05e9ebb2-e986-43e3-9bc6-18d0f230c4d6","415":"c03bb392-f111-4054-803a-67eca33a25a4","422":"8895f7e7-c279-4164-8e26-6b02b82cf4dc","429":"6d6c8468-10bd-4eeb-9d18-38488ca2e9ea","500":"bd6a4c50-1c2c-4d9b-a61d-b8168803385b","503":"d62d954e-bc93-476a-8361-ec342cd41850"},"tags":["Agents"],"security":["dd82efc0-8aae-4698-a730-87e29d1b8cfd"],"x-codeSamples":[{"lang":"go","label":"Go","source":"package main\n\nimport(\n\t\"context\"\n\t\"github.com/novuhq/novu-go/v3\"\n\t\"github.com/novuhq/novu-go/v3/models/components\"\n\t\"log\"\n)\n\nfunc main() {\n ctx := context.Background()\n\n s := v3.New(\n v3.WithSecurity(\"YOUR_SECRET_KEY_HERE\"),\n )\n\n res, err := s.Agents.SendReply(ctx, \"support-agent\", components.AgentReplyPayloadDto{\n ConversationID: \"64f5a1c2e8b7a3d9f0c1b2a3\",\n IntegrationIdentifier: \"slack-support\",\n Reply: v3.Pointer(components.CreateReplyMarkdownReplyContentDto(\n components.MarkdownReplyContentDto{\n Markdown: \"**Report ready.** Your weekly summary is attached.\",\n },\n )),\n }, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}"},{"lang":"typescript","label":"TypeScript","source":"import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n secretKey: \"YOUR_SECRET_KEY_HERE\",\n});\n\nasync function run() {\n const result = await novu.agents.sendReply({\n conversationId: \"64f5a1c2e8b7a3d9f0c1b2a3\",\n integrationIdentifier: \"slack-support\",\n reply: {\n markdown: \"**Report ready.** Your weekly summary is attached.\",\n },\n }, \"support-agent\");\n\n console.log(result);\n}\n\nrun();"},{"lang":"csharp","label":"Csharp (SDK)","source":"using Novu;\nusing Novu.Models.Components;\n\nvar sdk = new NovuSDK(secretKey: \"YOUR_SECRET_KEY_HERE\");\n\nvar res = await sdk.Agents.SendReplyAsync(\n agentId: \"support-agent\",\n agentReplyPayloadDto: new AgentReplyPayloadDto() {\n ConversationId = \"64f5a1c2e8b7a3d9f0c1b2a3\",\n IntegrationIdentifier = \"slack-support\",\n Reply = Reply.CreateMarkdownReplyContentDto(\n new MarkdownReplyContentDto() {\n Markdown = \"**Report ready.** Your weekly summary is attached.\",\n }\n ),\n }\n);\n\n// handle response"},{"lang":"php","label":"PHP","source":"declare(strict_types=1);\n\nrequire 'vendor/autoload.php';\n\nuse novu;\nuse novu\\Models\\Components;\n\n$sdk = novu\\Novu::builder()\n ->setSecurity(\n 'YOUR_SECRET_KEY_HERE'\n )\n ->build();\n\n$agentReplyPayloadDto = new Components\\AgentReplyPayloadDto(\n conversationId: '64f5a1c2e8b7a3d9f0c1b2a3',\n integrationIdentifier: 'slack-support',\n reply: new Components\\MarkdownReplyContentDto(\n markdown: '**Report ready.** Your weekly summary is attached.',\n ),\n);\n\n$response = $sdk->agents->sendReply(\n agentId: 'support-agent',\n agentReplyPayloadDto: $agentReplyPayloadDto\n\n);\n\nif ($response->object !== null) {\n // handle response\n}"},{"lang":"python","label":"Python","source":"import novu_py\nfrom novu_py import Novu\n\n\nwith Novu(\n secret_key=\"YOUR_SECRET_KEY_HERE\",\n) as novu:\n\n res = novu.agents.send_reply(agent_id=\"support-agent\", agent_reply_payload_dto=novu_py.AgentReplyPayloadDto(\n conversation_id=\"64f5a1c2e8b7a3d9f0c1b2a3\",\n integration_identifier=\"slack-support\",\n reply=novu_py.MarkdownReplyContentDto(\n markdown=\"**Report ready.** Your weekly summary is attached.\",\n ),\n ))\n\n # Handle response\n print(res)"}],"method":"post","type":"path","servers":["29cc13d7-64c7-40f9-8a35-9c01537b78f4","7588375a-aa7e-462d-a5bf-d94b8564f985"],"path":"/v1/agents/{agentId}/reply","baseUrlOptions":["https://api.novu.co","https://eu.api.novu.co"],"title":"Send an agent reply","codeSamples":[{"label":"Go","lang":"go","source":"package main\n\nimport(\n\t\"context\"\n\t\"github.com/novuhq/novu-go/v3\"\n\t\"github.com/novuhq/novu-go/v3/models/components\"\n\t\"log\"\n)\n\nfunc main() {\n ctx := context.Background()\n\n s := v3.New(\n v3.WithSecurity(\"YOUR_SECRET_KEY_HERE\"),\n )\n\n res, err := s.Agents.SendReply(ctx, \"support-agent\", components.AgentReplyPayloadDto{\n ConversationID: \"64f5a1c2e8b7a3d9f0c1b2a3\",\n IntegrationIdentifier: \"slack-support\",\n Reply: v3.Pointer(components.CreateReplyMarkdownReplyContentDto(\n components.MarkdownReplyContentDto{\n Markdown: \"**Report ready.** Your weekly summary is attached.\",\n },\n )),\n }, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}"},{"label":"TypeScript","lang":"typescript","source":"import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n secretKey: \"YOUR_SECRET_KEY_HERE\",\n});\n\nasync function run() {\n const result = await novu.agents.sendReply({\n conversationId: \"64f5a1c2e8b7a3d9f0c1b2a3\",\n integrationIdentifier: \"slack-support\",\n reply: {\n markdown: \"**Report ready.** Your weekly summary is attached.\",\n },\n }, \"support-agent\");\n\n console.log(result);\n}\n\nrun();"},{"label":"Csharp (SDK)","lang":"csharp","source":"using Novu;\nusing Novu.Models.Components;\n\nvar sdk = new NovuSDK(secretKey: \"YOUR_SECRET_KEY_HERE\");\n\nvar res = await sdk.Agents.SendReplyAsync(\n agentId: \"support-agent\",\n agentReplyPayloadDto: new AgentReplyPayloadDto() {\n ConversationId = \"64f5a1c2e8b7a3d9f0c1b2a3\",\n IntegrationIdentifier = \"slack-support\",\n Reply = Reply.CreateMarkdownReplyContentDto(\n new MarkdownReplyContentDto() {\n Markdown = \"**Report ready.** Your weekly summary is attached.\",\n }\n ),\n }\n);\n\n// handle response"},{"label":"PHP","lang":"php","source":"declare(strict_types=1);\n\nrequire 'vendor/autoload.php';\n\nuse novu;\nuse novu\\Models\\Components;\n\n$sdk = novu\\Novu::builder()\n ->setSecurity(\n 'YOUR_SECRET_KEY_HERE'\n )\n ->build();\n\n$agentReplyPayloadDto = new Components\\AgentReplyPayloadDto(\n conversationId: '64f5a1c2e8b7a3d9f0c1b2a3',\n integrationIdentifier: 'slack-support',\n reply: new Components\\MarkdownReplyContentDto(\n markdown: '**Report ready.** Your weekly summary is attached.',\n ),\n);\n\n$response = $sdk->agents->sendReply(\n agentId: 'support-agent',\n agentReplyPayloadDto: $agentReplyPayloadDto\n\n);\n\nif ($response->object !== null) {\n // handle response\n}"},{"label":"Python","lang":"python","source":"import novu_py\nfrom novu_py import Novu\n\n\nwith Novu(\n secret_key=\"YOUR_SECRET_KEY_HERE\",\n) as novu:\n\n res = novu.agents.send_reply(agent_id=\"support-agent\", agent_reply_payload_dto=novu_py.AgentReplyPayloadDto(\n conversation_id=\"64f5a1c2e8b7a3d9f0c1b2a3\",\n integration_identifier=\"slack-support\",\n reply=novu_py.MarkdownReplyContentDto(\n markdown=\"**Report ready.** Your weekly summary is attached.\",\n ),\n ))\n\n # Handle response\n print(res)"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.reply.oneOf.0.markdown":"**Report ready.** Your weekly summary is attached."},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.reply.oneOf.0.markdown":"Here is your report.","body.reply.oneOf.0.files.items.0.filename":"report.pdf","body.reply.oneOf.0.files.items.0.mimeType":"application/pdf","body.reply.oneOf.0.files.items.0.url":"https://example.com/files/report.pdf"},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.reply.oneOf.1.card":{"type":"card","title":"Order #123","children":[{"type":"text","content":"Your order is ready for pickup."},{"type":"button","id":"confirm","label":"Confirm","style":"primary"}]}},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.edit.messageId":"1712345678.123456","body.edit.content.oneOf.0.markdown":"Updated: the report is now final."},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.typing.oneOf.1.status":"Looking up your order…"},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.typing.oneOf.0":"stop"},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.addReactions.items.0.messageId":"1712345678.123456","body.addReactions.items.0.emojiName":"white_check_mark"},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.deleteMessages.items.0.messageId":"1712345678.123456"},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.reply.oneOf.0.markdown":"Glad that helped — marking this as resolved.","body.resolve.summary":"Answered billing question about invoice INV-42."},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.signals.items.0.oneOf.0.type":"metadata","body.signals.items.0.oneOf.0.key":"crm:ticketId","body.signals.items.0.oneOf.0.value":"TCK-1001","body.signals.items.0.oneOf.0.action":"set"},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.signals.items.0.oneOf.4.type":"human","body.signals.items.0.oneOf.4.kind":"approve","body.signals.items.0.oneOf.4.card.oneOf.0":{"title":"Deploy v2.4.1 to production?"},"body.signals.items.0.oneOf.4.requestId":"hr_7c2e1a3b-4d5f-6789-abcd-ef0123456789"},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.signals.items.0.oneOf.3.type":"trigger","body.signals.items.0.oneOf.3.workflowId":"order-shipped","body.signals.items.0.oneOf.3.to.oneOf.0":"subscriber-123","body.signals.items.0.oneOf.3.payload":{"orderId":"ORD-42"}},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.reply.oneOf.0.markdown":"Your order **ORD-42** has shipped and should arrive by July 16.","body.toolResults.items.0.toolCallId":"call_abc123","body.toolResults.items.0.toolName":"lookup_order","body.toolResults.items.0.output":{"status":"shipped","eta":"2026-07-16"},"body.toolResults.items.0.preview":"Order ORD-42 is shipped"},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.reply.oneOf.2.toolApprovalCard":{"type":"tool-approval-card","title":"Approve refund?","subtitle":"issue_refund · ORD-42 · $25.00","approveLabel":"Approve","denyLabel":"Deny"},"body.toolApprovalRequest.approvalId":"apr_01HZX","body.toolApprovalRequest.toolCallId":"call_refund_1","body.toolApprovalRequest.name":"issue_refund","body.toolApprovalRequest.input":{"orderId":"ORD-42","amountCents":2500}},{"body.conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","body.integrationIdentifier":"slack-support","body.error":true}]},"dependencies":{"parameters":{"6cf91317-2f6d-462d-82d0-c12e68515bc7":{"name":"agentId","required":true,"in":"path","description":"Agent identifier (slug) for the agent that owns the conversation.","example":"support-agent","schema":{"type":"string","isRequired":true,"description":"Agent identifier (slug) for the agent that owns the conversation.","uniqueKey":"","typeLabel":"string"}},"8a100861-41b7-4bcc-9ae7-9fb78a908171":{"name":"idempotency-key","in":"header","description":"A header for idempotency purposes","required":false,"schema":{"type":"string","isRequired":false,"description":"A header for idempotency purposes","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"description":"Reply payload. Provide at least one action: `reply`, `edit`, `resolve`, `signals`, `toolResults`, `toolApprovalRequest`, `addReactions`, `deleteMessages`, `typing`, or `error`. See named examples for common shapes used by server-side SDKs.","content":{"application/json":{"schema":{"type":"object","properties":{"conversationId":{"type":"string","description":"Conversation id to reply into. Obtained from the inbound agent event / bridge payload.","example":"64f5a1c2e8b7a3d9f0c1b2a3","isRequired":true,"uniqueKey":"conversationId","typeLabel":"string"},"integrationIdentifier":{"type":"string","description":"Channel integration identifier linked to the agent for this conversation (e.g. `slack-support`).","example":"slack-support","isRequired":true,"uniqueKey":"integrationIdentifier","typeLabel":"string"},"reply":{"oneOf":[{"type":"object","description":"Outbound message content. Exactly one of `markdown`, `card`, or `toolApprovalCard`. Optional `files` attach to the message. Cannot be combined with `edit`.","required":["markdown"],"properties":{"markdown":{"type":"string","description":"Plain text or markdown body. Converted to the platform-native format by Novu.","example":"**Report ready.** Your weekly summary is attached.","isRequired":true,"uniqueKey":"reply.oneOf.0.markdown","typeLabel":"string"},"files":{"description":"Optional attachments (max 15). Each file needs exactly one of data or url.","type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Filename shown to the end user, including extension.","example":"report.pdf","isRequired":true,"uniqueKey":"reply.oneOf.0.files.items.[INDEX].filename","typeLabel":"string"},"mimeType":{"type":"string","description":"IANA MIME type of the file.","example":"application/pdf","uniqueKey":"reply.oneOf.0.files.items.[INDEX].mimeType","typeLabel":"string"},"data":{"type":"string","description":"Base64-encoded inline file bytes. Mutually exclusive with `url`. Decoded size must be ≤ 5 MB. Prefer `url` for larger files.","example":"JVBERi0xLjQK...","uniqueKey":"reply.oneOf.0.files.items.[INDEX].data","typeLabel":"string"},"url":{"type":"string","description":"Publicly accessible HTTP(S) URL. Mutually exclusive with `data`. Server-side limits: 25 MB per file, 15 files per message, 50 MB aggregate.","example":"https://example.com/files/report.pdf","uniqueKey":"reply.oneOf.0.files.items.[INDEX].url","typeLabel":"string"}},"required":["filename"],"uniqueKey":"reply.oneOf.0.files.items.[INDEX]","typeLabel":"object"},"uniqueKey":"reply.oneOf.0.files","typeLabel":"object[]"}},"uniqueKey":"reply.oneOf.0","typeLabel":"object"},{"type":"object","description":"Outbound message content. Exactly one of `markdown`, `card`, or `toolApprovalCard`. Optional `files` attach to the message. Cannot be combined with `edit`.","required":["card"],"properties":{"card":{"type":"object","description":"Interactive card as a Chat SDK element tree (`type: \"card\"`). Prefer building with `@novu/framework` Card helpers when using TypeScript.","additionalProperties":true,"example":{"type":"card","title":"Order #123","children":[{"type":"text","content":"Your order is ready for pickup."},{"type":"button","id":"confirm","label":"Confirm","style":"primary"}]},"isRequired":true,"uniqueKey":"reply.oneOf.1.card","typeLabel":"object"},"files":{"description":"Optional attachments (max 15). Supported alongside cards on platforms that allow it (e.g. WhatsApp).","type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Filename shown to the end user, including extension.","example":"report.pdf","isRequired":true,"uniqueKey":"reply.oneOf.1.files.items.[INDEX].filename","typeLabel":"string"},"mimeType":{"type":"string","description":"IANA MIME type of the file.","example":"application/pdf","uniqueKey":"reply.oneOf.1.files.items.[INDEX].mimeType","typeLabel":"string"},"data":{"type":"string","description":"Base64-encoded inline file bytes. Mutually exclusive with `url`. Decoded size must be ≤ 5 MB. Prefer `url` for larger files.","example":"JVBERi0xLjQK...","uniqueKey":"reply.oneOf.1.files.items.[INDEX].data","typeLabel":"string"},"url":{"type":"string","description":"Publicly accessible HTTP(S) URL. Mutually exclusive with `data`. Server-side limits: 25 MB per file, 15 files per message, 50 MB aggregate.","example":"https://example.com/files/report.pdf","uniqueKey":"reply.oneOf.1.files.items.[INDEX].url","typeLabel":"string"}},"required":["filename"],"uniqueKey":"reply.oneOf.1.files.items.[INDEX]","typeLabel":"object"},"uniqueKey":"reply.oneOf.1.files","typeLabel":"object[]"}},"uniqueKey":"reply.oneOf.1","typeLabel":"object"},{"type":"object","description":"Outbound message content. Exactly one of `markdown`, `card`, or `toolApprovalCard`. Optional `files` attach to the message. Cannot be combined with `edit`.","required":["toolApprovalCard"],"properties":{"toolApprovalCard":{"type":"object","description":"Novu tool-approval card descriptor (`type: \"tool-approval-card\"`). Used with `toolApprovalRequest` to render Approve/Deny UI.","additionalProperties":true,"example":{"type":"tool-approval-card","title":"Approve refund?","subtitle":"issue_refund · ORD-42 · $25.00","approveLabel":"Approve","denyLabel":"Deny"},"isRequired":true,"uniqueKey":"reply.oneOf.2.toolApprovalCard","typeLabel":"object"},"files":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Filename shown to the end user, including extension.","example":"report.pdf","isRequired":true,"uniqueKey":"reply.oneOf.2.files.items.[INDEX].filename","typeLabel":"string"},"mimeType":{"type":"string","description":"IANA MIME type of the file.","example":"application/pdf","uniqueKey":"reply.oneOf.2.files.items.[INDEX].mimeType","typeLabel":"string"},"data":{"type":"string","description":"Base64-encoded inline file bytes. Mutually exclusive with `url`. Decoded size must be ≤ 5 MB. Prefer `url` for larger files.","example":"JVBERi0xLjQK...","uniqueKey":"reply.oneOf.2.files.items.[INDEX].data","typeLabel":"string"},"url":{"type":"string","description":"Publicly accessible HTTP(S) URL. Mutually exclusive with `data`. Server-side limits: 25 MB per file, 15 files per message, 50 MB aggregate.","example":"https://example.com/files/report.pdf","uniqueKey":"reply.oneOf.2.files.items.[INDEX].url","typeLabel":"string"}},"required":["filename"],"uniqueKey":"reply.oneOf.2.files.items.[INDEX]","typeLabel":"object"},"uniqueKey":"reply.oneOf.2.files","typeLabel":"object[]"}},"uniqueKey":"reply.oneOf.2","typeLabel":"object"}],"uniqueKey":"reply","typeLabel":"object"},"toolApprovalRequest":{"type":"object","description":"Tool-lifecycle ledger row for a gated tool call. Pair with `reply.toolApprovalCard` (or another reply shape) to deliver the approval UI.","required":["approvalId","toolCallId","name"],"properties":{"approvalId":{"type":"string","description":"Unique id for this approval request (matches the AI SDK approvalId).","example":"apr_01HZX","isRequired":true,"uniqueKey":"toolApprovalRequest.approvalId","typeLabel":"string"},"toolCallId":{"type":"string","description":"Id of the tool call awaiting approval.","example":"call_refund_1","isRequired":true,"uniqueKey":"toolApprovalRequest.toolCallId","typeLabel":"string"},"name":{"type":"string","description":"Name of the gated tool.","example":"issue_refund","isRequired":true,"uniqueKey":"toolApprovalRequest.name","typeLabel":"string"},"input":{"type":"object","description":"Tool input the model proposed.","additionalProperties":true,"example":{"orderId":"ORD-42","amountCents":2500},"uniqueKey":"toolApprovalRequest.input","typeLabel":"object"},"approveActionId":{"type":"string","description":"Server-minted approve action id. When omitted, self-hosted tool-approval:* is minted at persist.","example":"tool-approval:approve:apr_01HZX","uniqueKey":"toolApprovalRequest.approveActionId","typeLabel":"string"},"denyActionId":{"type":"string","description":"Server-minted deny action id. When omitted, self-hosted tool-approval:* is minted at persist.","example":"tool-approval:deny:apr_01HZX","uniqueKey":"toolApprovalRequest.denyActionId","typeLabel":"string"},"mcpServerName":{"type":"string","description":"MCP server name when the gated tool is from an MCP server (for UI labels).","example":"GitHub","uniqueKey":"toolApprovalRequest.mcpServerName","typeLabel":"string"},"to":{"type":"object","description":"Novu subscriberId(s) allowed to settle this tool gate when HITL is enabled.","uniqueKey":"toolApprovalRequest.to","typeLabel":"object"},"from":{"type":"string","description":"Attribution label shown on the HITL card.","uniqueKey":"toolApprovalRequest.from","typeLabel":"string"},"ttlSeconds":{"type":"number","description":"Seconds until the HITL tool-gate expires.","uniqueKey":"toolApprovalRequest.ttlSeconds","typeLabel":"number"}},"uniqueKey":"toolApprovalRequest","typeLabel":"object"},"edit":{"type":"object","description":"In-place edit of a previously posted agent message. Cannot be combined with reply, resolve, signals, toolResults, toolApprovalRequest, addReactions, or deleteMessages.","required":["messageId","content"],"properties":{"messageId":{"type":"string","description":"Platform message id of the message to edit.","example":"1712345678.123456","isRequired":true,"uniqueKey":"edit.messageId","typeLabel":"string"},"content":{"oneOf":[{"type":"object","description":"Replacement content. Exactly one of markdown, card, or toolApprovalCard.","required":["markdown"],"properties":{"markdown":{"type":"string","description":"Plain text or markdown body. Converted to the platform-native format by Novu.","example":"**Report ready.** Your weekly summary is attached.","isRequired":true,"uniqueKey":"edit.content.oneOf.0.markdown","typeLabel":"string"},"files":{"description":"Optional attachments (max 15). Each file needs exactly one of data or url.","type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Filename shown to the end user, including extension.","example":"report.pdf","isRequired":true,"uniqueKey":"edit.content.oneOf.0.files.items.[INDEX].filename","typeLabel":"string"},"mimeType":{"type":"string","description":"IANA MIME type of the file.","example":"application/pdf","uniqueKey":"edit.content.oneOf.0.files.items.[INDEX].mimeType","typeLabel":"string"},"data":{"type":"string","description":"Base64-encoded inline file bytes. Mutually exclusive with `url`. Decoded size must be ≤ 5 MB. Prefer `url` for larger files.","example":"JVBERi0xLjQK...","uniqueKey":"edit.content.oneOf.0.files.items.[INDEX].data","typeLabel":"string"},"url":{"type":"string","description":"Publicly accessible HTTP(S) URL. Mutually exclusive with `data`. Server-side limits: 25 MB per file, 15 files per message, 50 MB aggregate.","example":"https://example.com/files/report.pdf","uniqueKey":"edit.content.oneOf.0.files.items.[INDEX].url","typeLabel":"string"}},"required":["filename"],"uniqueKey":"edit.content.oneOf.0.files.items.[INDEX]","typeLabel":"object"},"uniqueKey":"edit.content.oneOf.0.files","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"edit.content.oneOf.0","typeLabel":"object"},{"type":"object","description":"Replacement content. Exactly one of markdown, card, or toolApprovalCard.","required":["card"],"properties":{"card":{"type":"object","description":"Interactive card as a Chat SDK element tree (`type: \"card\"`). Prefer building with `@novu/framework` Card helpers when using TypeScript.","additionalProperties":true,"example":{"type":"card","title":"Order #123","children":[{"type":"text","content":"Your order is ready for pickup."},{"type":"button","id":"confirm","label":"Confirm","style":"primary"}]},"isRequired":true,"uniqueKey":"edit.content.oneOf.1.card","typeLabel":"object"},"files":{"description":"Optional attachments (max 15). Supported alongside cards on platforms that allow it (e.g. WhatsApp).","type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Filename shown to the end user, including extension.","example":"report.pdf","isRequired":true,"uniqueKey":"edit.content.oneOf.1.files.items.[INDEX].filename","typeLabel":"string"},"mimeType":{"type":"string","description":"IANA MIME type of the file.","example":"application/pdf","uniqueKey":"edit.content.oneOf.1.files.items.[INDEX].mimeType","typeLabel":"string"},"data":{"type":"string","description":"Base64-encoded inline file bytes. Mutually exclusive with `url`. Decoded size must be ≤ 5 MB. Prefer `url` for larger files.","example":"JVBERi0xLjQK...","uniqueKey":"edit.content.oneOf.1.files.items.[INDEX].data","typeLabel":"string"},"url":{"type":"string","description":"Publicly accessible HTTP(S) URL. Mutually exclusive with `data`. Server-side limits: 25 MB per file, 15 files per message, 50 MB aggregate.","example":"https://example.com/files/report.pdf","uniqueKey":"edit.content.oneOf.1.files.items.[INDEX].url","typeLabel":"string"}},"required":["filename"],"uniqueKey":"edit.content.oneOf.1.files.items.[INDEX]","typeLabel":"object"},"uniqueKey":"edit.content.oneOf.1.files","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"edit.content.oneOf.1","typeLabel":"object"},{"type":"object","description":"Replacement content. Exactly one of markdown, card, or toolApprovalCard.","required":["toolApprovalCard"],"properties":{"toolApprovalCard":{"type":"object","description":"Novu tool-approval card descriptor (`type: \"tool-approval-card\"`). Used with `toolApprovalRequest` to render Approve/Deny UI.","additionalProperties":true,"example":{"type":"tool-approval-card","title":"Approve refund?","subtitle":"issue_refund · ORD-42 · $25.00","approveLabel":"Approve","denyLabel":"Deny"},"isRequired":true,"uniqueKey":"edit.content.oneOf.2.toolApprovalCard","typeLabel":"object"},"files":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","description":"Filename shown to the end user, including extension.","example":"report.pdf","isRequired":true,"uniqueKey":"edit.content.oneOf.2.files.items.[INDEX].filename","typeLabel":"string"},"mimeType":{"type":"string","description":"IANA MIME type of the file.","example":"application/pdf","uniqueKey":"edit.content.oneOf.2.files.items.[INDEX].mimeType","typeLabel":"string"},"data":{"type":"string","description":"Base64-encoded inline file bytes. Mutually exclusive with `url`. Decoded size must be ≤ 5 MB. Prefer `url` for larger files.","example":"JVBERi0xLjQK...","uniqueKey":"edit.content.oneOf.2.files.items.[INDEX].data","typeLabel":"string"},"url":{"type":"string","description":"Publicly accessible HTTP(S) URL. Mutually exclusive with `data`. Server-side limits: 25 MB per file, 15 files per message, 50 MB aggregate.","example":"https://example.com/files/report.pdf","uniqueKey":"edit.content.oneOf.2.files.items.[INDEX].url","typeLabel":"string"}},"required":["filename"],"uniqueKey":"edit.content.oneOf.2.files.items.[INDEX]","typeLabel":"object"},"uniqueKey":"edit.content.oneOf.2.files","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"edit.content.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"edit.content","typeLabel":"object"}},"uniqueKey":"edit","typeLabel":"object"},"resolve":{"type":"object","description":"Mark the conversation resolved. May be combined with a final `reply`.","properties":{"summary":{"type":"string","description":"Optional human-readable resolution summary stored on the conversation.","example":"Answered billing question about invoice INV-42.","uniqueKey":"resolve.summary","typeLabel":"string"}},"uniqueKey":"resolve","typeLabel":"object"},"signals":{"type":"array","description":"Side-effect signals executed during this turn: conversation metadata mutations, Novu workflow triggers, or human-in-the-loop interactions.","items":{"oneOf":[{"type":"object","required":["type","key","value"],"properties":{"type":{"type":"string","enum":["metadata"],"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"key":{"type":"string","description":"Metadata key (1–128 chars; letters, digits, and `-` `_` `:` separators).","example":"crm:ticketId","isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.0.key","typeLabel":"string"},"value":{"type":"object","description":"JSON-serializable value to store.","example":"TCK-1001","isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.0.value","typeLabel":"object"},"action":{"type":"string","enum":["set"],"description":"Defaults to `set` when omitted.","default":"set","uniqueKey":"signals.items.[INDEX].oneOf.0.action","typeLabel":"enum\u003cstring>"}},"uniqueKey":"signals.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","action","key"],"properties":{"type":{"type":"string","enum":["metadata"],"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"action":{"type":"string","enum":["delete"],"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.1.action","typeLabel":"enum\u003cstring>"},"key":{"type":"string","description":"Metadata key to remove.","example":"crm:ticketId","isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.1.key","typeLabel":"string"}},"uniqueKey":"signals.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","action"],"properties":{"type":{"type":"string","enum":["metadata"],"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"action":{"type":"string","enum":["clear"],"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.2.action","typeLabel":"enum\u003cstring>"}},"uniqueKey":"signals.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","workflowId"],"properties":{"type":{"type":"string","enum":["trigger"],"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"workflowId":{"type":"string","description":"Workflow identifier (same string used with `events.trigger`).","example":"order-shipped","isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.3.workflowId","typeLabel":"string"},"to":{"oneOf":[{"type":"string","description":"Recipient(s). Accepts a subscriberId string, subscriber object, topic object, or an array of those. When omitted, Novu falls back to the conversation subscriber.","example":"subscriber-123","uniqueKey":"signals.items.[INDEX].oneOf.3.to.oneOf.0","typeLabel":"string"},{"type":"object","description":"Recipient(s). Accepts a subscriberId string, subscriber object, topic object, or an array of those. When omitted, Novu falls back to the conversation subscriber.","example":{"subscriberId":"subscriber-123"},"additionalProperties":true,"uniqueKey":"signals.items.[INDEX].oneOf.3.to.oneOf.1","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"signals.items.[INDEX].oneOf.3.to.oneOf.2.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"object","additionalProperties":true,"uniqueKey":"signals.items.[INDEX].oneOf.3.to.oneOf.2.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"signals.items.[INDEX].oneOf.3.to.oneOf.2.items.[INDEX]","typeLabel":"string | object"},"description":"Recipient(s). Accepts a subscriberId string, subscriber object, topic object, or an array of those. When omitted, Novu falls back to the conversation subscriber.","uniqueKey":"signals.items.[INDEX].oneOf.3.to.oneOf.2","typeLabel":"(string | object)[]"}],"uniqueKey":"signals.items.[INDEX].oneOf.3.to","typeLabel":"string | object | (string | object)[]"},"payload":{"type":"object","description":"Arbitrary payload forwarded to the workflow.","additionalProperties":true,"example":{"orderId":"ORD-42"},"uniqueKey":"signals.items.[INDEX].oneOf.3.payload","typeLabel":"object"}},"uniqueKey":"signals.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["type","kind","card","requestId"],"properties":{"type":{"type":"string","enum":["human"],"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"kind":{"type":"string","enum":["ask","approve","choose","tell"],"description":"Interaction verb queued by `ctx.ask` / `ctx.approve` / `ctx.choose` / `ctx.tell`.","example":"approve","isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.4.kind","typeLabel":"enum\u003cstring>"},"card":{"oneOf":[{"type":"object","description":"Markdown, HITL chrome, or a posted Card element (`type: \"card\"`) from `{ render }`.","example":{"markdown":"Please approve in the thread."},"additionalProperties":true,"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.4.card.oneOf.0","typeLabel":"object"},{"type":"object","description":"Markdown, HITL chrome, or a posted Card element (`type: \"card\"`) from `{ render }`.","example":{"title":"Deploy v2.4.1?","approveLabel":"Ship it"},"additionalProperties":true,"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.4.card.oneOf.1","typeLabel":"object"},{"type":"object","description":"Markdown, HITL chrome, or a posted Card element (`type: \"card\"`) from `{ render }`.","example":{"type":"card","title":"Refund $25?","children":[{"type":"button","id":"human:hr_1:approve","label":"OK","style":"primary"}]},"additionalProperties":true,"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.4.card.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.4.card","typeLabel":"object"},"requestId":{"type":"string","pattern":"/\\S/","description":"Client-minted id returned by the framework helper; echoed on `ctx.humanResponse.requestId`.","example":"hr_7c2e1a3b-4d5f-6789-abcd-ef0123456789","isRequired":true,"uniqueKey":"signals.items.[INDEX].oneOf.4.requestId","typeLabel":"string"},"actionIdentifier":{"type":"string","description":"When set, pending chrome buttons use `human:{actionIdentifier}:…` (the client `requestId` for `renderApprove`).","example":"hr_7c2e1a3b-4d5f-6789-abcd-ef0123456789","uniqueKey":"signals.items.[INDEX].oneOf.4.actionIdentifier","typeLabel":"string"},"from":{"type":"string","description":"Attribution label rendered in the card.","example":"deploy-bot","uniqueKey":"signals.items.[INDEX].oneOf.4.from","typeLabel":"string"},"ttlSeconds":{"type":"number","minimum":60,"description":"Seconds until the interaction expires. Default 86400 (24h), max 432000.","example":3600,"uniqueKey":"signals.items.[INDEX].oneOf.4.ttlSeconds","typeLabel":"number"},"to":{"oneOf":[{"type":"string","description":"Novu subscriberId(s) allowed to settle this interaction (max 50). First valid answer wins. When omitted, the conversation subscriber is used. Subscriber ids only — not workflow topic recipients.","example":"alice","uniqueKey":"signals.items.[INDEX].oneOf.4.to.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"signals.items.[INDEX].oneOf.4.to.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Novu subscriberId(s) allowed to settle this interaction (max 50). First valid answer wins. When omitted, the conversation subscriber is used. Subscriber ids only — not workflow topic recipients.","example":["alice","bob"],"uniqueKey":"signals.items.[INDEX].oneOf.4.to.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"signals.items.[INDEX].oneOf.4.to","typeLabel":"string | string[]"}},"uniqueKey":"signals.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"signals.items.[INDEX]","typeLabel":"object"},"uniqueKey":"signals","typeLabel":"object[]"},"toolResults":{"description":"Tool-call outcomes to persist in conversation history (typically before the assistant reply).","type":"array","items":{"type":"object","properties":{"toolCallId":{"type":"string","description":"Id of the tool call this result resolves.","example":"call_abc123","isRequired":true,"uniqueKey":"toolResults.items.[INDEX].toolCallId","typeLabel":"string"},"toolName":{"type":"string","description":"Name of the tool that produced this result.","example":"lookup_order","uniqueKey":"toolResults.items.[INDEX].toolName","typeLabel":"string"},"output":{"type":"object","description":"JSON-serializable tool output (or the execution-denied marker).","uniqueKey":"toolResults.items.[INDEX].output","typeLabel":"object"},"preview":{"type":"string","description":"Human-readable preview for the display timeline.","example":"Order ORD-42 is shipped","uniqueKey":"toolResults.items.[INDEX].preview","typeLabel":"string"}},"required":["toolCallId"],"uniqueKey":"toolResults.items.[INDEX]","typeLabel":"object"},"uniqueKey":"toolResults","typeLabel":"object[]"},"addReactions":{"description":"Emoji reactions to add to existing platform messages.","type":"array","items":{"type":"object","properties":{"messageId":{"type":"string","description":"Platform message id to react to.","example":"1712345678.123456","isRequired":true,"uniqueKey":"addReactions.items.[INDEX].messageId","typeLabel":"string"},"emojiName":{"type":"string","description":"Well-known cross-platform emoji name (e.g. `white_check_mark`, `thumbsup`).","example":"white_check_mark","isRequired":true,"uniqueKey":"addReactions.items.[INDEX].emojiName","typeLabel":"string"}},"required":["messageId","emojiName"],"uniqueKey":"addReactions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"addReactions","typeLabel":"object[]"},"deleteMessages":{"description":"Delete previously posted platform messages. Removes the rendered message only — history is preserved.","type":"array","items":{"type":"object","properties":{"messageId":{"type":"string","description":"Platform message id to delete. Removes the rendered message only — history is preserved.","example":"1712345678.123456","isRequired":true,"uniqueKey":"deleteMessages.items.[INDEX].messageId","typeLabel":"string"}},"required":["messageId"],"uniqueKey":"deleteMessages.items.[INDEX]","typeLabel":"object"},"uniqueKey":"deleteMessages","typeLabel":"object[]"},"typing":{"oneOf":[{"type":"string","description":"Per-turn typing/status control. Pass `{ status?: string }` to set/update the status (omit `status` for \"Thinking…\"), or `\"stop\"` to clear it. Best-effort per platform.","enum":["stop"],"example":{"status":"Looking up your order…"},"uniqueKey":"typing.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"object","description":"Per-turn typing/status control. Pass `{ status?: string }` to set/update the status (omit `status` for \"Thinking…\"), or `\"stop\"` to clear it. Best-effort per platform.","example":{"status":"Looking up your order…"},"properties":{"status":{"type":"string","description":"Status text shown while the agent works. Omit for the default \"Thinking…\".","example":"Looking up your order…","uniqueKey":"typing.oneOf.1.status","typeLabel":"string"}},"uniqueKey":"typing.oneOf.1","typeLabel":"object"}],"uniqueKey":"typing","typeLabel":"enum\u003cstring> | object"},"error":{"type":"boolean","description":"Bridge reports that the customer runtime failed this turn. Cannot be combined with other actions. Novu delivers generic user-facing error copy.","example":true,"uniqueKey":"error","typeLabel":"boolean"}},"required":["conversationId","integrationIdentifier"],"uniqueKey":"","typeLabel":"object"},"examples":{"markdownReply":{"title":"markdownReply","description":"Send a markdown (or plain text) message into an existing conversation.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","reply":{"markdown":"**Report ready.** Your weekly summary is attached."}}},"replyWithFile":{"title":"replyWithFile","description":"Attach files to a markdown reply. Provide exactly one of `url` or `data` per file. Prefer `url` for larger files.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","reply":{"markdown":"Here is your report.","files":[{"filename":"report.pdf","mimeType":"application/pdf","url":"https://example.com/files/report.pdf"}]}}},"cardReply":{"title":"cardReply","description":"Send a Chat SDK card (buttons, text, links). Build cards with `@novu/framework` helpers or an equivalent JSON tree.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","reply":{"card":{"type":"card","title":"Order #123","children":[{"type":"text","content":"Your order is ready for pickup."},{"type":"button","id":"confirm","label":"Confirm","style":"primary"}]}}}},"editMessage":{"title":"editMessage","description":"Update a previously delivered agent message in place. Cannot be combined with resolve, signals, or reactions.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","edit":{"messageId":"1712345678.123456","content":{"markdown":"Updated: the report is now final."}}}},"typingStart":{"title":"typingStart","description":"Best-effort status text on platforms that support it. Omit `status` for the default \"Thinking…\".","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","typing":{"status":"Looking up your order…"}}},"typingStop":{"title":"typingStop","description":"Clear the typing / status indicator for this turn.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","typing":"stop"}},"addReaction":{"title":"addReaction","description":"React to a platform message with a well-known emoji name.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","addReactions":[{"messageId":"1712345678.123456","emojiName":"white_check_mark"}]}},"deleteMessage":{"title":"deleteMessage","description":"Remove a previously posted platform message. Conversation history is preserved.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","deleteMessages":[{"messageId":"1712345678.123456"}]}},"resolveConversation":{"title":"resolveConversation","description":"Mark the conversation resolved. Optionally include a summary and/or a final reply in the same request.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","reply":{"markdown":"Glad that helped — marking this as resolved."},"resolve":{"summary":"Answered billing question about invoice INV-42."}}},"metadataSignal":{"title":"metadataSignal","description":"Persist key/value metadata on the conversation for later turns. Keys: 1–128 chars, letters/digits with `-`, `_`, `:` separators.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","signals":[{"type":"metadata","action":"set","key":"crm:ticketId","value":"TCK-1001"}]}},"humanApprove":{"title":"humanApprove","description":"Create an approve/deny card in the current conversation thread. The verdict arrives later on `onAction` with `ctx.humanResponse`.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","signals":[{"type":"human","kind":"approve","card":{"title":"Deploy v2.4.1 to production?"},"requestId":"hr_7c2e1a3b-4d5f-6789-abcd-ef0123456789"}]}},"triggerWorkflow":{"title":"triggerWorkflow","description":"Fire a workflow from the agent turn. When `to` is omitted, Novu uses the conversation subscriber if one is resolved.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","signals":[{"type":"trigger","workflowId":"order-shipped","to":"subscriber-123","payload":{"orderId":"ORD-42"}}]}},"toolResult":{"title":"toolResult","description":"Persist tool-call outcomes into conversation history (typically before the assistant reply).","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","toolResults":[{"toolCallId":"call_abc123","toolName":"lookup_order","output":{"status":"shipped","eta":"2026-07-16"},"preview":"Order ORD-42 is shipped"}],"reply":{"markdown":"Your order **ORD-42** has shipped and should arrive by July 16."}}},"toolApprovalRequest":{"title":"toolApprovalRequest","description":"Ledger a gated tool call and optionally deliver an approval card via `reply.toolApprovalCard` or a normal card/markdown reply.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","toolApprovalRequest":{"approvalId":"apr_01HZX","toolCallId":"call_refund_1","name":"issue_refund","input":{"orderId":"ORD-42","amountCents":2500}},"reply":{"toolApprovalCard":{"type":"tool-approval-card","title":"Approve refund?","subtitle":"issue_refund · ORD-42 · $25.00","approveLabel":"Approve","denyLabel":"Deny"}}}},"turnError":{"title":"turnError","description":"Bridge reports that the customer runtime failed. Cannot be combined with other actions. Novu delivers generic user-facing copy.","value":{"conversationId":"64f5a1c2e8b7a3d9f0c1b2a3","integrationIdentifier":"slack-support","error":true}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"f8d2bc36-e7bf-48ed-b776-e82de718621d":{"description":"OK. When a reply or edit is delivered, `data` contains the platform message identifiers. Side-effect-only requests (typing, reactions, deletes, signals without an outbound message) return `data: null`.","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["messageId","platformThreadId"],"properties":{"messageId":{"type":"string","description":"Platform-native message id of the delivered or edited message (e.g. Slack `ts`, Teams activity id).","example":"1712345678.123456","isRequired":true,"uniqueKey":"oneOf.0.messageId","typeLabel":"string"},"platformThreadId":{"type":"string","description":"Platform-native thread / conversation id where the message was delivered.","example":"C0123456789","isRequired":true,"uniqueKey":"oneOf.0.platformThreadId","typeLabel":"string"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"oneOf.1","typeLabel":"null"}],"uniqueKey":"","typeLabel":"object | null"},"examples":{"Example":{"title":"Example","value":{"messageId":"1712345678.123456","platformThreadId":"C0123456789"}}},"exampleType":"generated"}},"exampleType":"generated"},"49a3d0a7-c977-4c21-8693-9cff1b575169":{"description":"Bad Request","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"5d0c9864-3071-4371-8152-f50a34ea2a71":{"description":"Unauthorized","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"5cdcfe84-fb63-4457-85cf-8e043805a3b2":{"description":"Forbidden","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"2ad607ba-b134-4e8c-bfa7-b43cb4d6cd5a":{"description":"The agent or conversation was not found.","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"f69cca9d-099c-4718-9955-7f553b98ac91":{"description":"Method Not Allowed","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"53be2c0e-d1e7-483c-a40a-b44c65b02b9b":{"description":"Conflict","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"467aa851-a1fc-4c2b-bcaf-31138124518a":{"description":"Payload Too Large","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"05e9ebb2-e986-43e3-9bc6-18d0f230c4d6":{"description":"URI Too Long","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"c03bb392-f111-4054-803a-67eca33a25a4":{"description":"Unsupported Media Type","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"8895f7e7-c279-4164-8e26-6b02b82cf4dc":{"description":"Unprocessable Entity","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"errors":{"type":"object","description":"A record of validation errors keyed by field name","additionalProperties":{"type":"object","properties":{"messages":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.messages.items.[INDEX]","typeLabel":"string"},"description":"List of validation error messages","example":["Field is required","Invalid format"],"isRequired":true,"uniqueKey":"errors.additionalProperties.messages","typeLabel":"string[]"},"value":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.4","typeLabel":"object"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"errors.additionalProperties.value.oneOf.5.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"errors.additionalProperties.value.oneOf.5","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"errors.additionalProperties.value","typeLabel":"string | null | number | boolean | object | (string | null | number | boolean | object)[]"}},"required":["messages"],"uniqueKey":"errors.additionalProperties","typeLabel":"object"},"example":{"fieldName1":{"messages":["Field is required","Must be a valid email address"],"value":"invalidEmail"},"fieldName2":{"messages":["Must be at least 18 years old"],"value":17},"fieldName3":{"messages":["Must be a boolean value"],"value":true},"fieldName4":{"messages":["Must be a valid object"],"value":{"key":"value"}},"fieldName5":{"messages":["Field is missing"],"value":null},"fieldName6":{"messages":["Undefined value"]}},"isRequired":true,"uniqueKey":"errors","typeLabel":"object"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","errors":{"fieldName1":{"messages":["Field is required","Must be a valid email address"],"value":"invalidEmail"},"fieldName2":{"messages":["Must be at least 18 years old"],"value":17},"fieldName3":{"messages":["Must be a boolean value"],"value":true},"fieldName4":{"messages":["Must be a valid object"],"value":{"key":"value"}},"fieldName5":{"messages":["Field is missing"],"value":null},"fieldName6":{"messages":["Undefined value"]}},"message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"6d6c8468-10bd-4eeb-9d18-38488ca2e9ea":{"description":"The client has sent too many requests in a given amount of time. ","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"},"Retry-After":{"required":false,"description":"The number of seconds after which the client may retry the request that was previously rejected.","schema":{"type":"string"},"example":"8"}},"content":{"application/json":{"schema":{"type":"string","example":"API rate limit exceeded","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"API rate limit exceeded"}},"exampleType":"generated"}},"exampleType":"generated"},"bd6a4c50-1c2c-4d9b-a61d-b8168803385b":{"description":"Internal Server Error","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"}},"content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","description":"HTTP status code of the error response.","example":404,"isRequired":true,"uniqueKey":"statusCode","typeLabel":"number"},"timestamp":{"type":"string","description":"Timestamp of when the error occurred.","example":"2024-12-12T13:00:00Z","isRequired":true,"uniqueKey":"timestamp","typeLabel":"string"},"path":{"type":"string","description":"The path where the error occurred.","example":"/api/v1/resource","isRequired":true,"uniqueKey":"path","typeLabel":"string"},"message":{"oneOf":[{"type":"string","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.1","typeLabel":"null"},{"type":"number","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.2","typeLabel":"number"},{"type":"boolean","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.3","typeLabel":"boolean"},{"type":"object","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.4","typeLabel":"object"},{"type":"null","description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.5","typeLabel":"null"},{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.1","typeLabel":"null"},{"type":"number","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.3","typeLabel":"boolean"},{"type":"object","additionalProperties":true,"uniqueKey":"message.oneOf.6.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"message.oneOf.6.items.[INDEX]","typeLabel":"string | null | number | boolean | object"},"description":"Value that failed validation","example":"xx xx xx ","uniqueKey":"message.oneOf.6","typeLabel":"(string | null | number | boolean | object)[]"}],"uniqueKey":"message","typeLabel":"string · null · number · boolean · object · null · (string | null | number | boolean | object)[]"},"ctx":{"type":"object","description":"Optional context object for additional error details.","additionalProperties":true,"example":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"uniqueKey":"ctx","typeLabel":"object"},"errorId":{"type":"string","description":"Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500.","example":"abc123","uniqueKey":"errorId","typeLabel":"string"}},"required":["statusCode","timestamp","path"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"statusCode":404,"timestamp":"2024-12-12T13:00:00Z","path":"/api/v1/resource","message":"xx xx xx ","ctx":{"workflowId":"some_wf_id","stepId":"some_wf_id"},"errorId":"abc123"}}},"exampleType":"generated"}},"exampleType":"generated"},"d62d954e-bc93-476a-8361-ec342cd41850":{"description":"The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.","headers":{"Content-Type":{"required":true,"description":"The MIME type of the response body.","schema":{"type":"string"},"example":"application/json"},"RateLimit-Limit":{"required":false,"description":"The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.","schema":{"type":"string"},"example":"100"},"RateLimit-Remaining":{"required":false,"description":"The number of requests remaining until the next window.","schema":{"type":"string"},"example":"93"},"RateLimit-Reset":{"required":false,"description":"The remaining seconds until a request of the same cost will be refreshed.","schema":{"type":"string"},"example":"8"},"RateLimit-Policy":{"required":false,"description":"The rate limit policy that was used to evaluate the request.","schema":{"type":"string"},"example":"100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""},"Idempotency-Key":{"required":false,"description":"The idempotency key used to evaluate the request.","schema":{"type":"string"},"example":"8"},"Idempotency-Replay":{"required":false,"description":"Whether the request was a replay of a previous request.","schema":{"type":"string"},"example":"true"},"Retry-After":{"required":false,"description":"The number of seconds after which the client may retry the request that was previously rejected.","schema":{"type":"string"},"example":"8"}},"content":{"application/json":{"schema":{"type":"string","example":"Please wait some time, then try again.","uniqueKey":"","typeLabel":"string"},"examples":{"Example":{"title":"Example","value":"Please wait some time, then try again."}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"dd82efc0-8aae-4698-a730-87e29d1b8cfd":{"secretKey":{"type":"apiKey","name":"Authorization","in":"header","description":"API key authentication. Allowed headers-- \"Authorization: ApiKey \u003cnovu_secret_key>\".","x-speakeasy-example":"YOUR_SECRET_KEY_HERE","scopes":[]}}},"servers":{"29cc13d7-64c7-40f9-8a35-9c01537b78f4":{"url":"https://api.novu.co"},"7588375a-aa7e-462d-a5bf-d94b8564f985":{"url":"https://eu.api.novu.co"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","name":"Authorization","in":"header","description":"API key authentication. Allowed headers-- \"Authorization: ApiKey \u003cnovu_secret_key>\".","x-speakeasy-example":"YOUR_SECRET_KEY_HERE","scopes":[]},"schema":{"title":"Authorization","type":"string","description":"API key authentication. Allowed headers-- \"Authorization: ApiKey \u003cnovu_secret_key>\".","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"secretKey","name":"Authorization"}],"title":"secretKey"}]},"originalFileLocation":"https://spec.speakeasy.com/novu/novu/json-development-with-code-samples"},"subdomain":"novu-c5de82d9","siteName":"Novu","title":"Send an agent reply - Novu","contextualStarterQuestions":[{"_id":"6ab23d99bb3a1ecbc61e89d6","deploymentId":"6a3b890b89d2acbacf3fa68a","questionText":"How do I send a reply?","status":"active","generatedBy":"contextual","path":"api-reference/agents/send-an-agent-reply","createdAt":"2026-09-22T08:34:33.549Z","updatedAt":"2026-09-22T08:34:33.549Z","__v":0},{"_id":"6ab23d99bb3a1ecbc61e89d7","deploymentId":"6a3b890b89d2acbacf3fa68a","questionText":"What actions can I perform?","status":"active","generatedBy":"contextual","path":"api-reference/agents/send-an-agent-reply","createdAt":"2026-09-22T08:34:33.549Z","updatedAt":"2026-09-22T08:34:33.549Z","__v":0},{"_id":"6ab23d99bb3a1ecbc61e89d8","deploymentId":"6a3b890b89d2acbacf3fa68a","questionText":"How do tool results work?","status":"active","generatedBy":"contextual","path":"api-reference/agents/send-an-agent-reply","createdAt":"2026-09-22T08:34:33.549Z","updatedAt":"2026-09-22T08:34:33.549Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-22T08:34:28.320Z","originalFileLocation":"api-reference/agents/send-an-agent-reply.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Deprecated — use POST /v1/agents/events/ingest (AgentEvent protocol). This route stays live for old @novu/framework and existing OpenAPI sendReply clients. Do not use it for new integrations. Message actions - reply — markdown, interactive card, or tool-approval card (optional files) - edit — update a previously delivered message in place - deleteMessages — remove rendered platform messages (history is kept) - addReactions — add emoji reactions to existing messages Turn control - typing — { status?: string } to set status, or \u0026quot;stop\u0026quot; to clear - resolve — mark the conversation resolved (optionally with a final reply) - error: true — report a customer-runtime failure (cannot combine with other actions) Signals \u0026amp; tools - signals — metadata set/delete/clear, or trigger a Novu workflow - toolResults — persist tool outputs into conversation history - toolApprovalRequest — ledger a gated tool call (pair with an approval card reply) Returns { data: { messageId, platformThreadId } } when a reply or edit is delivered; otherwise { data: null }.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Novu\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_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/novu-c5de82d9/hif-BqO_gbG8zfWr/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Send an agent reply - Novu\">\u003cmeta data-mint-head property=\"og:description\" content=\"Deprecated — use POST /v1/agents/events/ingest (AgentEvent protocol). This route stays live for old @novu/framework and existing OpenAPI sendReply clients. Do not use it for new integrations. Message actions - reply — markdown, interactive card, or tool-approval card (optional files) - edit — update a previously delivered message in place - deleteMessages — remove rendered platform messages (history is kept) - addReactions — add emoji reactions to existing messages Turn control - typing — { status?: string } to set status, or \u0026quot;stop\u0026quot; to clear - resolve — mark the conversation resolved (optionally with a final reply) - error: true — report a customer-runtime failure (cannot combine with other actions) Signals \u0026amp; tools - signals — metadata set/delete/clear, or trigger a Novu workflow - toolResults — persist tool outputs into conversation history - toolApprovalRequest — ledger a gated tool call (pair with an approval card reply) Returns { data: { messageId, platformThreadId } } when a reply or edit is delivered; otherwise { data: null }.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Novu\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.novu.co/api-reference/agents/send-an-agent-reply\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://novu-c5de82d9.mintlify.site/_mintlify/api/og/v2?division=Runtime\u0026amp;title=Send+an+agent+reply\u0026amp;description=**Deprecated**+%E2%80%94+use+%60POST+%2Fv1%2Fagents%2Fevents%2Fingest%60+%28AgentEvent+protocol%29.%0AThis+route+stays+live+for+old+%60%40novu%2Fframework%60+and+existing+OpenAPI+%60sendReply%60+cli\u0026amp;theme=1ee19fc55ed421ff750b0681\u0026amp;signature=6c7e1b1aea39eb6b1066ab1a3126b8a87f3127abb372d7b00526bf52b2dc4e59\">\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=\"Send an agent reply - Novu\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Deprecated — use POST /v1/agents/events/ingest (AgentEvent protocol). This route stays live for old @novu/framework and existing OpenAPI sendReply clients. Do not use it for new integrations. Message actions - reply — markdown, interactive card, or tool-approval card (optional files) - edit — update a previously delivered message in place - deleteMessages — remove rendered platform messages (history is kept) - addReactions — add emoji reactions to existing messages Turn control - typing — { status?: string } to set status, or \u0026quot;stop\u0026quot; to clear - resolve — mark the conversation resolved (optionally with a final reply) - error: true — report a customer-runtime failure (cannot combine with other actions) Signals \u0026amp; tools - signals — metadata set/delete/clear, or trigger a Novu workflow - toolResults — persist tool outputs into conversation history - toolApprovalRequest — ledger a gated tool call (pair with an approval card reply) Returns { data: { messageId, platformThreadId } } when a reply or edit is delivered; otherwise { data: null }.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://novu-c5de82d9.mintlify.site/_mintlify/api/og/v2?division=Runtime\u0026amp;title=Send+an+agent+reply\u0026amp;description=**Deprecated**+%E2%80%94+use+%60POST+%2Fv1%2Fagents%2Fevents%2Fingest%60+%28AgentEvent+protocol%29.%0AThis+route+stays+live+for+old+%60%40novu%2Fframework%60+and+existing+OpenAPI+%60sendReply%60+cli\u0026amp;theme=1ee19fc55ed421ff750b0681\u0026amp;signature=6c7e1b1aea39eb6b1066ab1a3126b8a87f3127abb372d7b00526bf52b2dc4e59\">\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/novu-c5de82d9/hif-BqO_gbG8zfWr/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Novu\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0e121b\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.novu.co/api-reference/agents/send-an-agent-reply\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/agents/send-an-agent-reply.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.novu.co/#organization\",\"name\":\"Novu\",\"url\":\"https://docs.novu.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/novu-c5de82d9/2Q_L4HxwUfLmJjB8/logo/light.svg?fit=max\u0026auto=format\u0026n=2Q_L4HxwUfLmJjB8\u0026q=85\u0026s=23e7050191303b6a0ac4a671dfed8df4\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.novu.co#website\",\"name\":\"Novu\",\"url\":\"https://docs.novu.co\",\"publisher\":{\"@id\":\"https://docs.novu.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.novu.co/api-reference/agents/send-an-agent-reply#webpage\",\"url\":\"https://docs.novu.co/api-reference/agents/send-an-agent-reply\",\"name\":\"Send an agent reply\",\"description\":\"Deprecated — use POST /v1/agents/events/ingest (AgentEvent protocol). This route stays live for old @novu/framework and existing OpenAPI sendReply clients. Do not use it for new integrations. Message actions - reply — markdown, interactive card, or tool-approval card (optional files) - edit — update a previously delivered message in place - deleteMessages — remove rendered platform messages (history is kept) - addReactions — add emoji reactions to existing messages Turn control - typing — { status?: string } to set status, or \\\"stop\\\" to clear - resolve — mark the conversation resolved (optionally with a final reply) - error: true — report a customer-runtime failure (cannot combine with other actions) Signals \u0026 tools - signals — metadata set/delete/clear, or trigger a Novu workflow - toolResults — persist tool outputs into conversation history - toolApprovalRequest — ledger a gated tool call (pair with an approval card reply) Returns { data: { messageId, platformThreadId } } when a reply or edit is delivered; otherwise { data: null }.\",\"dateModified\":\"2026-09-22T08:34:28.320Z\",\"isPartOf\":{\"@id\":\"https://docs.novu.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.novu.co/api-reference/agents/send-an-agent-reply#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.novu.co/api-reference/agents/send-an-agent-reply#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agents\",\"item\":\"https://docs.novu.co/api-reference/agents/agent-schema\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Runtime\",\"item\":\"https://docs.novu.co/api-reference/agents/update-an-agent-bridge\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Send an agent reply\",\"item\":\"https://docs.novu.co/api-reference/agents/send-an-agent-reply\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.novu.co/api-reference/agents/send-an-agent-reply#apireference\",\"headline\":\"Send an agent reply\",\"name\":\"Send an agent reply\",\"description\":\"Deprecated — use POST /v1/agents/events/ingest (AgentEvent protocol). This route stays live for old @novu/framework and existing OpenAPI sendReply clients. Do not use it for new integrations. Message actions - reply — markdown, interactive card, or tool-approval card (optional files) - edit — update a previously delivered message in place - deleteMessages — remove rendered platform messages (history is kept) - addReactions — add emoji reactions to existing messages Turn control - typing — { status?: string } to set status, or \\\"stop\\\" to clear - resolve — mark the conversation resolved (optionally with a final reply) - error: true — report a customer-runtime failure (cannot combine with other actions) Signals \u0026 tools - signals — metadata set/delete/clear, or trigger a Novu workflow - toolResults — persist tool outputs into conversation history - toolApprovalRequest — ledger a gated tool call (pair with an approval card reply) Returns { data: { messageId, platformThreadId } } when a reply or edit is delivered; otherwise { data: null }.\",\"url\":\"https://docs.novu.co/api-reference/agents/send-an-agent-reply\",\"mainEntityOfPage\":{\"@id\":\"https://docs.novu.co/api-reference/agents/send-an-agent-reply#webpage\"},\"dateModified\":\"2026-09-22T08:34:28.320Z\",\"publisher\":{\"@id\":\"https://docs.novu.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.novu.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Novu\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Novu","nav":{"global":{"anchors":[]},"tabs":[{"tab":"Notify","pages":[{"title":"Notify","href":"/platform"}]},{"tab":"Agent Connect","pages":[{"title":"Agent Connect","href":"/agents"}]},{"tab":"API Reference","groups":[{"group":"Getting Started","pages":[{"title":"Novu REST API Reference","sidebarTitle":"Overview","href":"/api-reference"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Errors","href":"/api-reference/errors"},{"title":"Pagination","href":"/api-reference/pagination"},{"title":"Rate Limiting","href":"/api-reference/rate-limiting"},{"title":"Idempotency","href":"/api-reference/idempotency"},{"title":"Payload Limits","href":"/api-reference/payload-limits"}]},{"group":"Notification delivery","icon":"send","pages":[{"group":"Events","expanded":false,"pages":[{"title":"Trigger event","openapi":"POST /v1/events/trigger","href":"/api-reference/events/trigger-event"},{"title":"Bulk trigger event","openapi":"POST /v1/events/trigger/bulk","href":"/api-reference/events/bulk-trigger-event"},{"title":"Broadcast event to all","openapi":"POST /v1/events/trigger/broadcast","href":"/api-reference/events/broadcast-event-to-all"},{"title":"Cancel triggered event","openapi":"DELETE /v1/events/trigger/{transactionId}","href":"/api-reference/events/cancel-triggered-event"}]},{"group":"Notifications","expanded":false,"pages":[{"title":"Notification event schema","sidebarTitle":"Schema","href":"/api-reference/notifications/notification-event-schema"},{"title":"List all events","openapi":"GET /v1/notifications","href":"/api-reference/notifications/list-all-events"},{"title":"Retrieve an event","openapi":"GET /v1/notifications/{notificationId}","href":"/api-reference/notifications/retrieve-an-event"}]},{"group":"Messages","expanded":false,"pages":[{"title":"Message schema","sidebarTitle":"Schema","href":"/api-reference/messages/message-schema"},{"title":"List all messages","openapi":"GET /v1/messages","href":"/api-reference/messages/list-all-messages"},{"title":"Delete a message","openapi":"DELETE /v1/messages/{messageId}","href":"/api-reference/messages/delete-a-message"},{"title":"Delete messages by transactionId","openapi":"DELETE /v1/messages/transaction/{transactionId}","href":"/api-reference/messages/delete-messages-by-transactionid"}]},{"group":"Activity","expanded":false,"pages":[{"title":"Track activity and engagement events","openapi":"POST /v2/inbound-webhooks/delivery-providers/{environmentId}/{integrationId}","href":"/api-reference/activity/track-activity-and-engagement-events"}]}]},{"group":"Agents","icon":"bot","pages":[{"title":"Agent schema","sidebarTitle":"Schema","href":"/api-reference/agents/agent-schema"},{"group":"Management","expanded":false,"pages":[{"title":"Create an agent","openapi":"POST /v1/agents","href":"/api-reference/agents/create-an-agent"},{"title":"List all agents","openapi":"GET /v1/agents","href":"/api-reference/agents/list-all-agents"},{"title":"Retrieve an agent","openapi":"GET /v1/agents/{identifier}","href":"/api-reference/agents/retrieve-an-agent"},{"title":"Update an agent","openapi":"PATCH /v1/agents/{identifier}","href":"/api-reference/agents/update-an-agent"},{"title":"Delete an agent","openapi":"DELETE /v1/agents/{identifier}","href":"/api-reference/agents/delete-an-agent"}]},{"group":"Runtime","expanded":false,"pages":[{"title":"Update an agent bridge","openapi":"PUT /v1/agents/{identifier}/bridge","description":"Update the bridge URL configuration for an agent. Used by the CLI to register dev tunnel URLs. Refuses to activate dev bridges on production environments.","href":"/api-reference/agents/update-an-agent-bridge"},{"title":"Send an agent reply","openapi":"POST /v1/agents/{agentId}/reply","href":"/api-reference/agents/send-an-agent-reply"}]},{"group":"Integrations","expanded":false,"pages":[{"title":"Create an agent integration","openapi":"POST /v1/agents/{identifier}/integrations","description":"Create a link between an agent (by identifier) and an integration (by integration **identifier**, not the internal _id).","href":"/api-reference/agents/create-an-agent-integration"},{"title":"List agent integrations","openapi":"GET /v1/agents/{identifier}/integrations","href":"/api-reference/agents/list-agent-integrations"},{"title":"Update an agent integration","openapi":"PATCH /v1/agents/{identifier}/integrations/{agentIntegrationId}","href":"/api-reference/agents/update-an-agent-integration"},{"title":"Delete an agent integration","openapi":"DELETE /v1/agents/{identifier}/integrations/{agentIntegrationId}","href":"/api-reference/agents/delete-an-agent-integration"}]}]},{"group":"Data","icon":"database","pages":[{"group":"Subscribers","expanded":false,"pages":[{"title":"Subscriber schema","sidebarTitle":"Schema","href":"/api-reference/subscribers/subscriber-schema"},{"group":"Management","expanded":false,"pages":[{"title":"Create a subscriber","openapi":"POST /v2/subscribers","href":"/api-reference/subscribers/create-a-subscriber"},{"title":"Retrieve a subscriber","openapi":"GET /v2/subscribers/{subscriberId}","href":"/api-reference/subscribers/retrieve-a-subscriber"},{"title":"Update a subscriber","openapi":"PATCH /v2/subscribers/{subscriberId}","href":"/api-reference/subscribers/update-a-subscriber"},{"title":"Delete a subscriber","openapi":"DELETE /v2/subscribers/{subscriberId}","href":"/api-reference/subscribers/delete-a-subscriber"},{"title":"Search subscribers","openapi":"GET /v2/subscribers","href":"/api-reference/subscribers/search-subscribers"},{"title":"Bulk create subscribers","openapi":"POST /v1/subscribers/bulk","href":"/api-reference/subscribers/bulk-create-subscribers"}]},{"group":"Subscriptions","expanded":false,"pages":[{"title":"Retrieve subscriber subscriptions","openapi":"GET /v2/subscribers/{subscriberId}/subscriptions","href":"/api-reference/subscribers/retrieve-subscriber-subscriptions"}]},{"group":"Preferences","expanded":false,"pages":[{"title":"Retrieve subscriber preferences","openapi":"GET /v2/subscribers/{subscriberId}/preferences","href":"/api-reference/subscribers/retrieve-subscriber-preferences"},{"title":"Update subscriber preferences","openapi":"PATCH /v2/subscribers/{subscriberId}/preferences","href":"/api-reference/subscribers/update-subscriber-preferences"},{"title":"Bulk update subscriber preferences","openapi":"PATCH /v2/subscribers/{subscriberId}/preferences/bulk","href":"/api-reference/subscribers/bulk-update-subscriber-preferences"}]},{"group":"Credentials","expanded":false,"pages":[{"title":"Update provider credentials","openapi":"PUT /v1/subscribers/{subscriberId}/credentials","href":"/api-reference/subscribers/update-provider-credentials"},{"title":"Upsert provider credentials","openapi":"PATCH /v1/subscribers/{subscriberId}/credentials","href":"/api-reference/subscribers/upsert-provider-credentials"},{"title":"Delete provider credentials","openapi":"DELETE /v1/subscribers/{subscriberId}/credentials/{providerId}","href":"/api-reference/subscribers/delete-provider-credentials"}]},{"group":"Notification state","expanded":false,"pages":[{"title":"Retrieve subscriber notifications","openapi":"GET /v1/subscribers/{subscriberId}/notifications/feed","href":"/api-reference/subscribers/retrieve-subscriber-notifications"},{"title":"Update notifications state","openapi":"POST /v1/subscribers/{subscriberId}/messages/mark-as","href":"/api-reference/subscribers/update-notifications-state"},{"title":"Update all notifications state","openapi":"POST /v1/subscribers/{subscriberId}/messages/mark-all","href":"/api-reference/subscribers/update-all-notifications-state"},{"title":"Update subscriber online status","openapi":"PATCH /v1/subscribers/{subscriberId}/online-status","href":"/api-reference/subscribers/update-subscriber-online-status"},{"title":"Retrieve unseen notifications count","openapi":"GET /v1/subscribers/{subscriberId}/notifications/unseen","href":"/api-reference/subscribers/retrieve-unseen-notifications-count"},{"title":"Update notification action status","openapi":"POST /v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}","href":"/api-reference/subscribers/update-notification-action-status"}]}]},{"group":"Inbox","expanded":false,"pages":[{"group":"Counts","expanded":false,"pages":[{"title":"Retrieve subscriber notifications count","openapi":"GET /v2/subscribers/{subscriberId}/notifications/count","href":"/api-reference/subscribers/retrieve-subscriber-notifications-count"}]},{"group":"Read \u0026 seen","expanded":false,"pages":[{"title":"Mark a notification as read","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/read","href":"/api-reference/subscribers/mark-a-notification-as-read"},{"title":"Mark a notification as unread","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/unread","href":"/api-reference/subscribers/mark-a-notification-as-unread"},{"title":"Mark all notifications as read","openapi":"POST /v2/subscribers/{subscriberId}/notifications/read","href":"/api-reference/subscribers/mark-all-notifications-as-read"},{"title":"Mark notifications as seen","openapi":"POST /v2/subscribers/{subscriberId}/notifications/seen","href":"/api-reference/subscribers/mark-notifications-as-seen"}]},{"group":"Snooze","expanded":false,"pages":[{"title":"Snooze a notification","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/snooze","href":"/api-reference/subscribers/snooze-a-notification"},{"title":"Unsnooze a notification","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/unsnooze","href":"/api-reference/subscribers/unsnooze-a-notification"}]},{"group":"Archive","expanded":false,"pages":[{"title":"Archive a notification","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/archive","href":"/api-reference/subscribers/archive-a-notification"},{"title":"Unarchive a notification","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/unarchive","href":"/api-reference/subscribers/unarchive-a-notification"},{"title":"Archive all notifications","openapi":"POST /v2/subscribers/{subscriberId}/notifications/archive","href":"/api-reference/subscribers/archive-all-notifications"},{"title":"Archive all read notifications","openapi":"POST /v2/subscribers/{subscriberId}/notifications/read-archive","href":"/api-reference/subscribers/archive-all-read-notifications"}]},{"group":"Delete","expanded":false,"pages":[{"title":"Delete a notification","openapi":"DELETE /v2/subscribers/{subscriberId}/notifications/{notificationId}","href":"/api-reference/subscribers/delete-a-notification"},{"title":"Delete all notifications","openapi":"POST /v2/subscribers/{subscriberId}/notifications/delete","href":"/api-reference/subscribers/delete-all-notifications"}]},{"group":"Actions","expanded":false,"pages":[{"title":"Complete a notification action","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/actions/{actionType}/complete","href":"/api-reference/subscribers/complete-a-notification-action"},{"title":"Revert a notification action","openapi":"PATCH /v2/subscribers/{subscriberId}/notifications/{notificationId}/actions/{actionType}/revert","href":"/api-reference/subscribers/revert-a-notification-action"}]}]},{"group":"Topics","expanded":false,"pages":[{"title":"Topic schema","sidebarTitle":"Schema","href":"/api-reference/topics/topic-schema"},{"group":"Management","expanded":false,"pages":[{"title":"Create a topic","openapi":"POST /v2/topics","href":"/api-reference/topics/create-a-topic"},{"title":"Retrieve a topic","openapi":"GET /v2/topics/{topicKey}","href":"/api-reference/topics/retrieve-a-topic"},{"title":"Update a topic","openapi":"PATCH /v2/topics/{topicKey}","href":"/api-reference/topics/update-a-topic"},{"title":"Delete a topic","openapi":"DELETE /v2/topics/{topicKey}","href":"/api-reference/topics/delete-a-topic"},{"title":"List all topics","openapi":"GET /v2/topics","href":"/api-reference/topics/list-all-topics"}]},{"group":"Subscriptions","expanded":false,"pages":[{"title":"Create topic subscriptions","openapi":"POST /v2/topics/{topicKey}/subscriptions","href":"/api-reference/topics/create-topic-subscriptions"},{"title":"Delete topic subscriptions","openapi":"DELETE /v2/topics/{topicKey}/subscriptions","href":"/api-reference/topics/delete-topic-subscriptions"},{"title":"Update a topic subscription","openapi":"PATCH /v2/topics/{topicKey}/subscriptions/{identifier}","href":"/api-reference/topics/update-a-topic-subscription"},{"title":"List topic subscriptions","openapi":"GET /v2/topics/{topicKey}/subscriptions","href":"/api-reference/topics/list-topic-subscriptions"},{"title":"Check topic subscriber","openapi":"GET /v1/topics/{topicKey}/subscribers/{externalSubscriberId}","href":"/api-reference/topics/check-topic-subscriber"},{"title":"Retrieve a topic subscription","openapi":"GET /v2/topics/{topicKey}/subscriptions/{identifier}","href":"/api-reference/topics/retrieve-a-topic-subscription"}]}]},{"group":"Contexts","expanded":false,"pages":[{"title":"Context schema","sidebarTitle":"Schema","href":"/api-reference/contexts/context-schema"},{"title":"Create a context","openapi":"POST /v2/contexts","href":"/api-reference/contexts/create-a-context"},{"title":"Retrieve a context","openapi":"GET /v2/contexts/{type}/{id}","href":"/api-reference/contexts/retrieve-a-context"},{"title":"Update a context","openapi":"PATCH /v2/contexts/{type}/{id}","href":"/api-reference/contexts/update-a-context"},{"title":"Delete a context","openapi":"DELETE /v2/contexts/{type}/{id}","href":"/api-reference/contexts/delete-a-context"},{"title":"List all contexts","openapi":"GET /v2/contexts","href":"/api-reference/contexts/list-all-contexts"}]},{"group":"Channel Connections","expanded":false,"pages":[{"title":"Create a channel connection","openapi":"POST /v1/channel-connections","href":"/api-reference/channel-connections/create-a-channel-connection"},{"title":"Retrieve a channel connection","openapi":"GET /v1/channel-connections/{identifier}","href":"/api-reference/channel-connections/retrieve-a-channel-connection"},{"title":"Update a channel connection","openapi":"PATCH /v1/channel-connections/{identifier}","href":"/api-reference/channel-connections/update-a-channel-connection"},{"title":"Delete a channel connection","openapi":"DELETE /v1/channel-connections/{identifier}","href":"/api-reference/channel-connections/delete-a-channel-connection"},{"title":"List all channel connections","openapi":"GET /v1/channel-connections","href":"/api-reference/channel-connections/list-all-channel-connections"}]},{"group":"Channel Endpoints","expanded":false,"pages":[{"title":"Create a channel endpoint","openapi":"POST /v1/channel-endpoints","href":"/api-reference/channel-endpoints/create-a-channel-endpoint"},{"title":"Retrieve a channel endpoint","openapi":"GET /v1/channel-endpoints/{identifier}","href":"/api-reference/channel-endpoints/retrieve-a-channel-endpoint"},{"title":"Update a channel endpoint","openapi":"PATCH /v1/channel-endpoints/{identifier}","href":"/api-reference/channel-endpoints/update-a-channel-endpoint"},{"title":"Delete a channel endpoint","openapi":"DELETE /v1/channel-endpoints/{identifier}","href":"/api-reference/channel-endpoints/delete-a-channel-endpoint"},{"title":"List all channel endpoints","openapi":"GET /v1/channel-endpoints","href":"/api-reference/channel-endpoints/list-all-channel-endpoints"}]}]},{"group":"Workflows \u0026 content","icon":"git-branch","pages":[{"group":"Workflows","expanded":false,"pages":[{"title":"Workflow schema","sidebarTitle":"Schema","href":"/api-reference/workflows/workflow-schema"},{"title":"Create a workflow","openapi":"POST /v2/workflows","href":"/api-reference/workflows/create-a-workflow"},{"title":"Retrieve a workflow","openapi":"GET /v2/workflows/{workflowId}","href":"/api-reference/workflows/retrieve-a-workflow"},{"title":"Update a workflow","openapi":"PUT /v2/workflows/{workflowId}","href":"/api-reference/workflows/update-a-workflow"},{"title":"Delete a workflow","openapi":"DELETE /v2/workflows/{workflowId}","href":"/api-reference/workflows/delete-a-workflow"},{"title":"List all workflows","openapi":"GET /v2/workflows","href":"/api-reference/workflows/list-all-workflows"},{"title":"Sync a workflow","openapi":"PUT /v2/workflows/{workflowId}/sync","href":"/api-reference/workflows/sync-a-workflow"},{"title":"Retrieve workflow step","openapi":"GET /v2/workflows/{workflowId}/steps/{stepId}","href":"/api-reference/workflows/retrieve-workflow-step"},{"title":"Generate a step preview","openapi":"POST /v2/workflows/{workflowId}/step/{stepId}/preview","href":"/api-reference/workflows/generate-a-step-preview"}]},{"group":"Translations","expanded":false,"pages":[{"title":"Create a translation","openapi":"POST /v2/translations","href":"/api-reference/translations/create-a-translation"},{"title":"Retrieve a translation","openapi":"GET /v2/translations/{resourceType}/{resourceId}/{locale}","href":"/api-reference/translations/retrieve-a-translation"},{"title":"Delete a translation","openapi":"DELETE /v2/translations/{resourceType}/{resourceId}/{locale}","href":"/api-reference/translations/delete-a-translation"},{"title":"Retrieve a translation group","openapi":"GET /v2/translations/group/{resourceType}/{resourceId}","href":"/api-reference/translations/retrieve-a-translation-group"},{"title":"Delete a translation group","openapi":"DELETE /v2/translations/{resourceType}/{resourceId}","href":"/api-reference/translations/delete-a-translation-group"},{"title":"Import master translations JSON","openapi":"POST /v2/translations/master-json","href":"/api-reference/translations/import-master-translations-json"},{"title":"Retrieve master translations JSON","openapi":"GET /v2/translations/master-json","href":"/api-reference/translations/retrieve-master-translations-json"},{"title":"Upload master translations JSON file","openapi":"POST /v2/translations/master-json/upload","href":"/api-reference/translations/upload-master-translations-json-file"},{"title":"Upload translation files","openapi":"POST /v2/translations/upload","href":"/api-reference/translations/upload-translation-files"}]},{"group":"Layouts","expanded":false,"pages":[{"title":"Create a layout","openapi":"POST /v2/layouts","href":"/api-reference/layouts/create-a-layout"},{"title":"Delete a layout","openapi":"DELETE /v2/layouts/{layoutId}","href":"/api-reference/layouts/delete-a-layout"},{"title":"Duplicate a layout","openapi":"POST /v2/layouts/{layoutId}/duplicate","href":"/api-reference/layouts/duplicate-a-layout"},{"title":"Generate layout preview","openapi":"POST /v2/layouts/{layoutId}/preview","href":"/api-reference/layouts/generate-layout-preview"},{"title":"Get layout usage","openapi":"GET /v2/layouts/{layoutId}/usage","href":"/api-reference/layouts/get-layout-usage"},{"title":"List all layouts","openapi":"GET /v2/layouts","href":"/api-reference/layouts/list-all-layouts"},{"title":"Retrieve a layout","openapi":"GET /v2/layouts/{layoutId}","href":"/api-reference/layouts/retrieve-a-layout"},{"title":"Update a layout","openapi":"PUT /v2/layouts/{layoutId}","href":"/api-reference/layouts/update-a-layout"}]}]},{"group":"Platform \u0026 channels","icon":"settings","pages":[{"group":"Environments","expanded":false,"pages":[{"title":"Environment schema","sidebarTitle":"Schema","href":"/api-reference/environments/environment-schema"},{"title":"Create an environment","openapi":"POST /v1/environments","href":"/api-reference/environments/create-an-environment"},{"title":"Update an environment","openapi":"PUT /v1/environments/{environmentId}","href":"/api-reference/environments/update-an-environment"},{"title":"Delete an environment","openapi":"DELETE /v1/environments/{environmentId}","href":"/api-reference/environments/delete-an-environment"},{"title":"List all environments","openapi":"GET /v1/environments","href":"/api-reference/environments/list-all-environments"},{"title":"List environment tags","openapi":"GET /v2/environments/{environmentId}/tags","href":"/api-reference/environments/list-environment-tags"},{"title":"Compare resources between environments","openapi":"POST /v2/environments/{targetEnvironmentId}/diff","href":"/api-reference/environments/compare-resources-between-environments"},{"title":"Publish resources to target environment","openapi":"POST /v2/environments/{targetEnvironmentId}/publish","href":"/api-reference/environments/publish-resources-to-target-environment"}]},{"group":"Environment Variables","expanded":false,"pages":[{"title":"Environment variable schema","sidebarTitle":"Schema","href":"/api-reference/environment-variables/environment-variable-schema"},{"title":"Create a variable","openapi":"POST /v1/environment-variables","href":"/api-reference/environment-variables/create-a-variable"},{"title":"Retrieve a variable","openapi":"GET /v1/environment-variables/{variableKey}","href":"/api-reference/environment-variables/retrieve-a-variable"},{"title":"Update a variable","openapi":"PATCH /v1/environment-variables/{variableKey}","href":"/api-reference/environment-variables/update-a-variable"},{"title":"Delete a variable","openapi":"DELETE /v1/environment-variables/{variableKey}","href":"/api-reference/environment-variables/delete-a-variable"},{"title":"List all variables","openapi":"GET /v1/environment-variables","href":"/api-reference/environment-variables/list-all-variables"},{"title":"Retrieve a variable usage","openapi":"GET /v1/environment-variables/{variableKey}/usage","href":"/api-reference/environment-variables/retrieve-a-variable-usage"}]},{"group":"Integrations","expanded":false,"pages":[{"title":"Integration schema","sidebarTitle":"Schema","href":"/api-reference/integrations/integration-schema"},{"title":"Create an integration","openapi":"POST /v1/integrations","href":"/api-reference/integrations/create-an-integration"},{"title":"Update an integration","openapi":"PUT /v1/integrations/{integrationId}","href":"/api-reference/integrations/update-an-integration"},{"title":"Delete an integration","openapi":"DELETE /v1/integrations/{integrationId}","href":"/api-reference/integrations/delete-an-integration"},{"title":"List all integrations","openapi":"GET /v1/integrations","href":"/api-reference/integrations/list-all-integrations"},{"title":"List active integrations","openapi":"GET /v1/integrations/active","href":"/api-reference/integrations/list-active-integrations"},{"title":"Update integration as primary","openapi":"POST /v1/integrations/{integrationId}/set-primary","href":"/api-reference/integrations/update-integration-as-primary"},{"title":"Generate chat OAuth URL","openapi":"POST /v1/integrations/chat/oauth","href":"/api-reference/integrations/generate-chat-oauth-url"},{"title":"Auto-configure an integration for inbound webhooks","openapi":"POST /v1/integrations/{integrationId}/auto-configure","href":"/api-reference/integrations/auto-configure-an-integration-for-inbound-webhooks"}]}]}]},{"tab":"Resources","menu":[{"item":"Guides","pages":[{"title":"Guides","href":"/guides"}]},{"item":"Framework","pages":[{"title":"Framework","href":"/framework"}]},{"item":"Community","pages":[{"title":"Community","href":"/community"}]}],"pages":[{"title":"Resources","href":"/guides"}]}]},"basePath":"","title":"Send an agent reply - Novu","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-CBsVopKK.js","utils-DZAk68jJ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D32AYZrP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D_A5_cny.js","snippetPresets-xNRfS9th.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-Dr40SSJq.js","ApiExamples-BIB25-tq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CydJ4w4j.js","shallow-CYPBeQSG.js","getApiPlaygroundDisplay-A5xJVBOu.js","CodeSnippet-BVRTgi3m.js","CodeSnippets-DjD6BSlt.js","getPastedJson-D4V4JyrR.js","icon-uhcnG22T.js","MethodPill-CM-ZQdGH.js","DuplicateIcon-B_WnOiNf.js","createIcon-CJsb8utt.js","DynamicMarkdown-D-2HDKEp.js","SectionHeading-KP5xmMgQ.js","axios-vUo_bRtp.js","Markdown-D_k0dg6k.js","clsx-DK3K4Z1S.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DE3EVdvd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fN9H9n9g.js"]}