Current built-in Clix skills emit status updates only. The A2A v1 StreamResponse type can carry artifactUpdate, but Clix does not currently emit artifact updates during streaming.
SubscribeToTask is useful when you want the latest known task state over the SSE transport. The current implementation emits a single statusUpdate event and closes the stream.
Clix sends an HTTP POST request whose JSON body is a JSON-RPC request with method: "tasks/pushNotification". The actual task event is nested under params.result.
Clix rejects unsafe webhook destinations. Loopback, link-local, site-local, and other local-only addresses are blocked. Use a publicly reachable HTTPS endpoint.
Always send A2A-Version: 1.0 for new integrations. Missing the header switches you to V0.
Capture X-Request-ID from every response. It is the fastest way to trace a failed task with support logs.
Use explicit data.skill payloads instead of text-only requests when deterministic routing matters.
Document and test only the JSONRPC binding advertised in the Agent Card. Do not assume alternate A2A transports are available.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Clix Documentation","colors":{"primary":"#4B5563","light":"#D1D5DB","dark":"#6B7280"},"logo":{"light":"https://mintcdn.com/greybox/wSbGaWSHkLDcNgOu/logo/clix-docs-logo-light.svg?fit=max\u0026auto=format\u0026n=wSbGaWSHkLDcNgOu\u0026q=85\u0026s=586725d84eabd7c0763ab85e5d452c27","dark":"https://mintcdn.com/greybox/wSbGaWSHkLDcNgOu/logo/clix-docs-logo-dark.svg?fit=max\u0026auto=format\u0026n=wSbGaWSHkLDcNgOu\u0026q=85\u0026s=89c4b1723f93032d83adba84a0388f08"},"favicon":"https://mintcdn.com/greybox/wSbGaWSHkLDcNgOu/favicon.svg?fit=max\u0026auto=format\u0026n=wSbGaWSHkLDcNgOu\u0026q=85\u0026s=d048214af1a0cf72e6a560ae3dc5cd93","api":{},"appearance":{"default":"dark"},"navbar":{"links":[{"href":"mailto:[email protected]","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://console.clix.so"}},"footer":{"socials":{"github":"https://github.com/clix-so","linkedin":"https://www.linkedin.com/company/clix-so/about"}},"seo":{"metatags":{"keywords":"notification, FCM, push","og:title":"Clix Documentation","og:description":"Learn how to get started with Clix using quick guides, API references, and setup examples."}},"integrations":{"ga4":{"measurementId":"G-L4J5JT9D80"},"intercom":{"appId":"ie819zjl"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://blog.clix.so/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"greybox","hasAudioNarration":false,"actualSubdomain":"greybox","customDomains":["docs.clix.so"],"gitSource":{"type":"github","owner":"clix-so","repo":"clix","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6abdda3004d9e77c486bfb6f","collectionId":"29977ba1-f191-4d5f-8c33-b047dff14c7e","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6abdda3004d9e77c486bfb6f"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6abdda3004d9e77c486bfb6f","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API Reference","count":8},{"language":"default","tag":"Quick Start (Installation)","count":8},{"language":"default","tag":"Campaigns","count":7},{"language":"default","tag":"Agent-to-Agent (A2A)","count":6},{"language":"default","tag":"Essentials","count":6},{"language":"default","tag":"Migration","count":6},{"language":"default","tag":"Users","count":3},{"language":"default","tag":"Integrations","count":2},{"language":"default","tag":"Model Context Protocol","count":2},{"language":"default","tag":"Troubleshooting","count":2}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"styles/custom.css","content":"[data-component-part=tab-button][data-active=true]{color:#fff!important;border-bottom-width:2px!important;border-bottom-style:solid!important;border-bottom-color:#fff!important;opacity:1!important}[data-component-part=tab-button][data-active=false]{color:#888!important;opacity:.6!important;border-bottom-color:transparent!important}[data-component-part=tab-button][data-active=false]:hover{color:#bbb!important;opacity:.8!important}"}],"page":{"pagePath":"a2a/advanced-features","slug":"/a2a/advanced-features","pageMetadata":{"title":"Advanced Features","description":"Streaming semantics, task webhooks, idempotency, and operational guidance for Clix A2A.","keywords":["A2A streaming","SSE","task webhooks","idempotency","X-Request-ID"],"href":"/a2a/advanced-features"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Streaming semantics, task webhooks, idempotency, and operational guidance for Clix A2A.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`streaming-behavior`,children:`Streaming Behavior`}),`\n`,_jsx(_components.p,{children:`Clix exposes two streaming methods:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SendStreamingMessage`}),` to create a task and stream status events`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SubscribeToTask`}),` to fetch the current status snapshot for an existing task`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`sse-envelope`,children:`SSE Envelope`}),`\n`,_jsxs(_components.p,{children:[`Each SSE `,_jsx(_components.code,{children:`data:`}),` line contains a JSON-RPC response envelope:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`data: {\"jsonrpc\":\"2.0\",\"id\":\"stream-1\",\"result\":{\"statusUpdate\":{\"taskId\":\"task-uuid\",\"contextId\":\"ctx-uuid\",\"status\":{\"state\":\"submitted\"}}}}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`data: {\"jsonrpc\":\"2.0\",\"id\":\"stream-1\",\"result\":{\"statusUpdate\":{\"taskId\":\"task-uuid\",\"contextId\":\"ctx-uuid\",\"status\":{\"state\":\"completed\",\"timestamp\":\"2026-03-11T12:00:00Z\"}}}}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Current built-in Clix skills emit status updates only. The A2A v1 `,_jsx(_components.code,{children:`StreamResponse`}),` type can carry `,_jsx(_components.code,{children:`artifactUpdate`}),`, but Clix does not currently emit artifact updates during streaming.`]}),`\n`,_jsx(Heading,{level:`3`,id:`subscribetotask`,children:`SubscribeToTask`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`SubscribeToTask`}),` is useful when you want the latest known task state over the SSE transport. The current implementation emits a single `,_jsx(_components.code,{children:`statusUpdate`}),` event and closes the stream.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"jsonrpc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2.0\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"resub-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"method\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SubscribeToTask\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"params\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"task-uuid\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Do not treat `,_jsx(_components.code,{children:`SubscribeToTask`}),` as a long-lived live stream reconnection mechanism. Today it returns a snapshot, not a resumed event stream.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`task-webhooks`,children:`Task Webhooks`}),`\n`,_jsx(_components.p,{children:`Task push notifications are outbound webhooks for task lifecycle events. They are not device push notifications.`}),`\n`,_jsx(Heading,{level:`3`,id:`register-a-webhook`,children:`Register a Webhook`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`14`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"jsonrpc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2.0\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"push-1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"method\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"CreateTaskPushNotificationConfig\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"params\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"taskId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"task-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://example.com/a2a-webhook\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"token\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"verify-me\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"authentication\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"scheme\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bearer\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"credentials\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"webhook-secret\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`callback-shape`,children:`Callback Shape`}),`\n`,_jsxs(_components.p,{children:[`Clix sends an HTTP `,_jsx(_components.code,{children:`POST`}),` request whose JSON body is a JSON-RPC request with `,_jsx(_components.code,{children:`method: \"tasks/pushNotification\"`}),`. The actual task event is nested under `,_jsx(_components.code,{children:`params.result`}),`.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`16`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`16`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"jsonrpc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2.0\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"method\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tasks/pushNotification\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"params\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"result\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"statusUpdate\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"taskId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"task-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"contextId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ctx-uuid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"state\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"completed\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-03-11T12:00:00Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`callback-headers`,children:`Callback Headers`}),`\n`,_jsx(_components.p,{children:`If the config includes authentication or a token, Clix sends:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Authorization: \u003cscheme> \u003ccredentials>`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`X-A2A-Token: \u003ctoken>`})}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`webhook-url-safety`,children:`Webhook URL Safety`}),`\n`,_jsx(_components.p,{children:`Clix rejects unsafe webhook destinations. Loopback, link-local, site-local, and other local-only addresses are blocked. Use a publicly reachable HTTPS endpoint.`}),`\n`,_jsx(Heading,{level:`2`,id:`idempotency`,children:`Idempotency`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`SendMessage`}),` supports idempotent retries.`]}),`\n`,_jsx(Heading,{level:`3`,id:`resolution-order`,children:`Resolution Order`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`If present, Clix uses `,_jsx(_components.code,{children:`X-Clix-Idempotency-Key`})]}),`\n`,_jsxs(_components.li,{children:[`Otherwise, Clix falls back to `,_jsx(_components.code,{children:`message.messageId`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`behavior`,children:`Behavior`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Same key and same request body: cached response is replayed`}),`\n`,_jsxs(_components.li,{children:[`Same key while the original request is still running: HTTP `,_jsx(_components.code,{children:`409 Conflict`})]}),`\n`,_jsxs(_components.li,{children:[`Same key with a different request body: HTTP `,_jsx(_components.code,{children:`409 Conflict`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Example:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.clix.so/a2a`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"A2A-Version: 1.0\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-API-Key: clix_sk_your_secret_key\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-Clix-Idempotency-Key: request-123\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{ ... }'`})]}),`\n`]})})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Set `,_jsx(_components.code,{children:`X-Clix-Idempotency-Key`}),` explicitly in production. It keeps retry behavior independent from your message IDs.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`operational-guidance`,children:`Operational Guidance`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Always send `,_jsx(_components.code,{children:`A2A-Version: 1.0`}),` for new integrations. Missing the header switches you to V0.`]}),`\n`,_jsxs(_components.li,{children:[`Capture `,_jsx(_components.code,{children:`X-Request-ID`}),` from every response. It is the fastest way to trace a failed task with support logs.`]}),`\n`,_jsxs(_components.li,{children:[`Use explicit `,_jsx(_components.code,{children:`data.skill`}),` payloads instead of text-only requests when deterministic routing matters.`]}),`\n`,_jsxs(_components.li,{children:[`Document and test only the `,_jsx(_components.code,{children:`JSONRPC`}),` binding advertised in the Agent Card. Do not assume alternate A2A transports are available.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Advanced Features","description":"Streaming semantics, task webhooks, idempotency, and operational guidance for Clix A2A.","keywords":["A2A streaming","SSE","task webhooks","idempotency","X-Request-ID"],"href":"/a2a/advanced-features"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Streaming Behavior","slug":"streaming-behavior","depth":2,"children":[{"title":"SSE Envelope","slug":"sse-envelope","depth":3,"children":[]},{"title":"SubscribeToTask","slug":"subscribetotask","depth":3,"children":[]}]},{"title":"Task Webhooks","slug":"task-webhooks","depth":2,"children":[{"title":"Register a Webhook","slug":"register-a-webhook","depth":3,"children":[]},{"title":"Callback Shape","slug":"callback-shape","depth":3,"children":[]},{"title":"Callback Headers","slug":"callback-headers","depth":3,"children":[]},{"title":"Webhook URL Safety","slug":"webhook-url-safety","depth":3,"children":[]}]},{"title":"Idempotency","slug":"idempotency","depth":2,"children":[{"title":"Resolution Order","slug":"resolution-order","depth":3,"children":[]},{"title":"Behavior","slug":"behavior","depth":3,"children":[]}]},{"title":"Operational Guidance","slug":"operational-guidance","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"greybox","siteName":"Clix Documentation","title":"Clix Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-03-12T05:55:02.557Z","originalFileLocation":"a2a/advanced-features.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=\"dark\"}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=\"Streaming semantics, task webhooks, idempotency, and operational guidance for Clix A2A.\">\u003cmeta data-mint-head name=\"keywords\" content=\"notification, FCM, push\">\u003cmeta data-mint-head name=\"application-name\" content=\"Clix Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/greybox/oedI4udGZ4JAwid0/_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/greybox/oedI4udGZ4JAwid0/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/greybox/oedI4udGZ4JAwid0/_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/greybox/oedI4udGZ4JAwid0/_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/greybox/oedI4udGZ4JAwid0/_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/greybox/oedI4udGZ4JAwid0/_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/greybox/oedI4udGZ4JAwid0/_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/greybox/oedI4udGZ4JAwid0/_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/greybox/oedI4udGZ4JAwid0/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Clix Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to get started with Clix using quick guides, API references, and setup examples.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Clix Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.clix.so/a2a/advanced-features\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://greybox.mintlify.app/_mintlify/api/og/v2?division=Agent-to-Agent+%28A2A%29\u0026amp;title=Advanced+Features\u0026amp;description=Streaming+semantics%2C+task+webhooks%2C+idempotency%2C+and+operational+guidance+for+Clix+A2A.\u0026amp;theme=d0720c861f81e9898bc050e6\u0026amp;signature=a9332530b10446d27099ae1fb680240369df0ac90b5f95f55ad4c70918722ce7\">\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=\"Clix Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to get started with Clix using quick guides, API references, and setup examples.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://greybox.mintlify.app/_mintlify/api/og/v2?division=Agent-to-Agent+%28A2A%29\u0026amp;title=Advanced+Features\u0026amp;description=Streaming+semantics%2C+task+webhooks%2C+idempotency%2C+and+operational+guidance+for+Clix+A2A.\u0026amp;theme=d0720c861f81e9898bc050e6\u0026amp;signature=a9332530b10446d27099ae1fb680240369df0ac90b5f95f55ad4c70918722ce7\">\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/greybox/oedI4udGZ4JAwid0/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Clix Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4B5563\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.clix.so/a2a/advanced-features\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/a2a/advanced-features.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.clix.so/#organization\",\"name\":\"Clix Documentation\",\"url\":\"https://docs.clix.so\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/greybox/wSbGaWSHkLDcNgOu/logo/clix-docs-logo-light.svg?fit=max\u0026auto=format\u0026n=wSbGaWSHkLDcNgOu\u0026q=85\u0026s=586725d84eabd7c0763ab85e5d452c27\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.clix.so#website\",\"name\":\"Clix Documentation\",\"url\":\"https://docs.clix.so\",\"publisher\":{\"@id\":\"https://docs.clix.so/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.clix.so/a2a/advanced-features#webpage\",\"url\":\"https://docs.clix.so/a2a/advanced-features\",\"name\":\"Advanced Features\",\"description\":\"Streaming semantics, task webhooks, idempotency, and operational guidance for Clix A2A.\",\"dateModified\":\"2026-03-12T05:55:02.557Z\",\"isPartOf\":{\"@id\":\"https://docs.clix.so#website\"},\"breadcrumb\":{\"@id\":\"https://docs.clix.so/a2a/advanced-features#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.clix.so/a2a/advanced-features#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agent-to-Agent (A2A)\",\"item\":\"https://docs.clix.so/a2a/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Advanced Features\",\"item\":\"https://docs.clix.so/a2a/advanced-features\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.clix.so/a2a/advanced-features#article\",\"headline\":\"Advanced Features\",\"name\":\"Advanced Features\",\"description\":\"Streaming semantics, task webhooks, idempotency, and operational guidance for Clix A2A.\",\"url\":\"https://docs.clix.so/a2a/advanced-features\",\"mainEntityOfPage\":{\"@id\":\"https://docs.clix.so/a2a/advanced-features#webpage\"},\"dateModified\":\"2026-03-12T05:55:02.557Z\",\"keywords\":\"A2A streaming, SSE, task webhooks, idempotency, X-Request-ID\",\"publisher\":{\"@id\":\"https://docs.clix.so/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.clix.so#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Clix Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Clix Documentation","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://blog.clix.so/"}]},"groups":[{"group":"User Guide","icon":"book-open","pages":[{"title":"Clix Documentation","sidebarTitle":"Introduction","href":"/index"}]},{"group":"Migration","icon":"arrows-left-right","pages":[{"title":"Migration Overview","sidebarTitle":"Overview","href":"/migrations/overview"},{"title":"Migrate from Clix to Notifly","sidebarTitle":"Notifly","href":"/migrations/notifly"},{"title":"Migrate from Clix to Braze","sidebarTitle":"Braze","href":"/migrations/braze"},{"title":"Migrate from Clix to Customer.io","sidebarTitle":"Customer.io","href":"/migrations/customer-io"},{"title":"Migrate from Clix to Firebase Cloud Messaging","sidebarTitle":"Firebase Cloud Messaging","href":"/migrations/firebase-cloud-messaging"},{"title":"Migrate from Clix to OneSignal","sidebarTitle":"OneSignal","href":"/migrations/onesignal"}]},{"group":"Quick Start (Installation)","icon":"rocket","pages":[{"title":"Clix CLI","href":"/clix-cli"},{"title":"Setup Firebase","href":"/firebase-setting"},{"title":"SDK Quickstart - iOS","href":"/sdk-quickstart-ios"},{"title":"SDK Quickstart - Android","href":"/sdk-quickstart-android"},{"title":"SDK Quickstart - React Native","href":"/sdk-quickstart-react-native"},{"title":"SDK Quickstart - Flutter","href":"/sdk-quickstart-flutter"},{"title":"iOS Notification Service Extension","href":"/sdk-ios-nse"},{"title":"iOS Live Activity","href":"/live-activity"}]},{"group":"Essentials","icon":"book","pages":[{"title":"User","href":"/essentials/user"},{"title":"Deliverability","href":"/essentials/deliverability"},{"title":"Notification Components","href":"/essentials/notification-components"},{"title":"User Management","href":"/user-management/user-management"},{"title":"Event Tracking","href":"/event-tracking/event-tracking"},{"title":"Personalization","href":"/personalization/personalization"}]},{"group":"Campaigns","icon":"megaphone","pages":[{"title":"Quickstart","href":"/campaigns/quickstart"},{"title":"Campaign Types","href":"/campaigns/types"},{"title":"API-Triggered Campaigns","href":"/campaigns/api-triggered"},{"title":"Message","href":"/campaigns/message"},{"title":"Audience","href":"/campaigns/audience"},{"title":"Metrics","href":"/campaigns/metrics"}]},{"group":"Model Context Protocol","icon":"puzzle-piece","pages":[{"title":"Clix MCP Server","href":"/mcp-server/clix-mcp-server"},{"title":"Integrating Clix SDKs into Mobile Apps with MCP","href":"/mcp-server/integrating-clix-sdks-with-mcp"}]},{"group":"Agent Skills","icon":"robot","pages":[{"title":"Agent Skills for Clix","href":"/agent-skills/index"}]},{"group":"Agent-to-Agent (A2A)","icon":"arrows-left-right","pages":[{"title":"Overview","href":"/a2a/overview"},{"title":"Quick Start","href":"/a2a/quickstart"},{"title":"API Reference","description":"Reference for Clix A2A endpoints, JSON-RPC methods, task types, and error semantics.","href":"/a2a/api-reference"},{"title":"Advanced Features","href":"/a2a/advanced-features"},{"title":"Skills","description":"Payload shapes, artifacts, and usage notes for the four built-in Clix A2A skills.","href":"/a2a/skills"},{"title":"Version Compatibility","href":"/a2a/version-compatibility"}]},{"group":"Integrations","icon":"plug","pages":[{"title":"Clix + Supabase Integration Guide","href":"/integrations/supabase-integration"},{"title":"Webhook","href":"/integrations/webhook"}]},{"group":"API Reference","icon":"code","pages":[{"title":"Overview","href":"/api-reference/overview"},{"title":"Rate Limits","href":"/api-reference/rate-limits"},{"group":"Users","pages":[{"title":"Create User","openapi":"POST /api/v1/users","href":"/api-reference/endpoint/users/create"},{"title":"Update User","openapi":"PATCH /api/v1/users/{project_user_id}","href":"/api-reference/endpoint/users/update"},{"title":"Delete User","openapi":"DELETE /api/v1/users/{project_user_id}","href":"/api-reference/endpoint/users/delete"}]},{"group":"Campaigns","pages":[{"title":"Trigger Campaign","openapi":"POST /api/v1/campaigns/{campaign_id}:trigger","href":"/api-reference/endpoint/campaigns:trigger"}]},{"group":"Messages","pages":[{"title":"Send Messages","openapi":"POST /api/v1/messages:send","href":"/api-reference/endpoint/messages:send"}]},{"group":"Live Activities","pages":[{"title":"Start Live Activities","openapi":"POST /api/v1/live-activities:start","href":"/api-reference/endpoint/live-activities:start"}]}]},{"group":"Troubleshooting","icon":"bug","pages":[{"title":"Errors","href":"/troubleshooting/clix-server-errors"},{"title":"Notification Not Delivered to Device","href":"/troubleshooting/not-getting-push-notification"}]},{"group":"Security \u0026 Ops","icon":"shield-alt","pages":[{"title":"Security and Ops","href":"/security/index"}]}]},"title":"Clix Documentation","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":[],"chunks":[]}