The ingest API acknowledges once events are durably queued, not once they are written to the analytics store. Processing typically completes within seconds; events then appear in the dashboard.
Every event is identified by its client-generated id, unique within your space. The first event to arrive with a given ID wins; any later event with the same ID is acknowledged and discarded.This makes retries safe at every layer:
The SDK retries failed batches without creating duplicates.
Your own HTTP retries against the ingest API are safe as long as you reuse the same event id.
Internal queue redeliveries (processing is at-least-once) are deduplicated before storage.
If you implement your own delivery, generate the event id once when the
call happens — not per send attempt — so retries deduplicate correctly.
Events are timestamped by your application (startTimeMs, endTimeMs), so analytics are ordered by when calls actually happened, not by when events arrived. Late delivery — a retried batch, a flushed buffer from a recovered process — lands in the right place on the timeline.
Plan limits are enforced at the API boundary: once a Free space reaches its monthly allowance, or a Plus subscription is inactive, the ingest API rejects the batch with 402 and a stable error id (usage_limit_exceeded or billing_not_active). The SDK reports these rejections through onError (or a throttled console warning) and drops the affected events instead of retrying — see Configuration.Enforcement is also applied during processing as a backstop, so batches already in flight when a limit is crossed may be partially rejected after a 202. Rejected events do not appear in the dashboard and are not billed. On Plus, events beyond the included amount are accepted and billed per event. See Plans and limits.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Carbon","description":"Carbon turns every LLM and tool call into a queryable ledger — sliced by agent, model, user, and thread.","colors":{"primary":"#615fff","light":"#7c86ff","dark":"#615fff"},"logo":{"light":"https://mintcdn.com/carbon-7a946712/7iD67IuKn_mtLDOT/public/logo/light.svg?fit=max\u0026auto=format\u0026n=7iD67IuKn_mtLDOT\u0026q=85\u0026s=dd616325bfec99addef1bfcfd182e6ae","dark":"https://mintcdn.com/carbon-7a946712/7iD67IuKn_mtLDOT/public/logo/dark.svg?fit=max\u0026auto=format\u0026n=7iD67IuKn_mtLDOT\u0026q=85\u0026s=8b2c23a76e8a02b8e5fb1ae5a2ad1d83","href":"https://oncarbon.site"},"favicon":"https://mintcdn.com/carbon-7a946712/-j2qt70BSHGAC0et/favicon.ico?fit=max\u0026auto=format\u0026n=-j2qt70BSHGAC0et\u0026q=85\u0026s=86c93a6fc7610e7fa9532ec1a9cb191e","api":{"mdx":{"auth":{"method":"bearer"},"server":"https://ingest.oncarbon.site"}},"background":{"color":{"light":"#ffffff","dark":"#171717"}},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://oncarbon.site/app"}},"footer":{"socials":{"website":"https://oncarbon.site"}},"fonts":{"family":"Be Vietnam Pro"},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","claude","chatgpt"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"carbon-7a946712","hasAudioNarration":false,"actualSubdomain":"carbon-7a946712","customDomains":["docs.oncarbon.site"],"gitSource":{"type":"github","owner":"beepbop-labs","repo":"carbon-v1","deployBranch":"main","contentDirectory":"core/apps/docs/src","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae959aeb9c52538cea79e86:success","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Documentation","count":26},{"language":"default","tag":"Dashboard","count":7},{"language":"default","tag":"SDK","count":6},{"language":"default","tag":"Integrations","count":5},{"language":"default","tag":"@carbon-js/connect","count":4},{"language":"default","tag":"API Reference","count":3},{"language":"default","tag":"Concepts","count":2},{"language":"default","tag":"Get started","count":2},{"language":"default","tag":"Endpoints","count":1},{"language":"default","tag":"Overview","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"custom.css","content":"#sidebar svg[style*=\"mask-image\"],ul.sidebar-group svg[style*=\"mask-image\"]{background-color:currentColor!important}img[src*=\"/public/icons/\"]{background-color:currentColor!important;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;object-fit:none;object-position:-9999px -9999px}img[src$=\"/public/icons/openai.svg\"]{-webkit-mask-image:url(\"/public/icons/openai.svg\");mask-image:url(\"/public/icons/openai.svg\")}img[src$=\"/public/icons/anthropic.svg\"]{-webkit-mask-image:url(\"/public/icons/anthropic.svg\");mask-image:url(\"/public/icons/anthropic.svg\")}img[src$=\"/public/icons/vercel.svg\"]{-webkit-mask-image:url(\"/public/icons/vercel.svg\");mask-image:url(\"/public/icons/vercel.svg\")}img[src$=\"/public/icons/claude.svg\"]{-webkit-mask-image:url(\"/public/icons/claude.svg\");mask-image:url(\"/public/icons/claude.svg\")}img[src$=\"/public/icons/codex.svg\"]{-webkit-mask-image:url(\"/public/icons/codex.svg\");mask-image:url(\"/public/icons/codex.svg\")}"}],"page":{"pagePath":"documentation/concepts/delivery","slug":"/documentation/concepts/delivery","pageMetadata":{"title":"Delivery guarantees","description":"How events travel from your app to the ledger: batching, queuing, idempotency, and what a 202 means.","icon":"shield-check","href":"/documentation/concepts/delivery"},"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: \"How events travel from your app to the ledger: batching, queuing, idempotency, and what a 202 means.\"\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`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Carbon’s pipeline is built so that events are never duplicated and retries are always safe — from the SDK buffer to durable storage.`}),`\n`,_jsx(Heading,{level:`2`,id:`the-path-of-an-event`,children:`The path of an event`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,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:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`your app`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` → SDK buffer (batched)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` → POST /v1/ingest-events (202 Accepted)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` → durable queue`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` → idempotent processing`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` → archive + analytics store`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`The SDK buffers events and sends them in batches — by count, size, or age. See `,_jsx(_components.a,{href:`/documentation/sdk/configuration`,children:`Configuration`}),`.`]}),`\n`,_jsx(_components.li,{children:`The ingest API authenticates the batch, validates every event, attaches your space, and enriches provider and cost.`}),`\n`,_jsxs(_components.li,{children:[`Each event is placed on a durable queue and the API responds `,_jsx(_components.code,{children:`202 Accepted`}),`.`]}),`\n`,_jsx(_components.li,{children:`A worker processes each event exactly once in effect: the full event is archived, and a lean analytics row is written for querying.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`202-means-queued`,children:`202 means queued`}),`\n`,_jsx(_components.p,{children:`The ingest API acknowledges once events are durably queued, not once they are written to the analytics store. Processing typically completes within seconds; events then appear in the dashboard.`}),`\n`,_jsx(Heading,{level:`2`,id:`idempotency`,children:`Idempotency`}),`\n`,_jsxs(_components.p,{children:[`Every event is identified by its client-generated `,_jsx(_components.code,{children:`id`}),`, unique within your space. The first event to arrive with a given ID wins; any later event with the same ID is acknowledged and discarded.`]}),`\n`,_jsx(_components.p,{children:`This makes retries safe at every layer:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The SDK retries failed batches without creating duplicates.`}),`\n`,_jsxs(_components.li,{children:[`Your own HTTP retries against the ingest API are safe as long as you reuse the same event `,_jsx(_components.code,{children:`id`}),`.`]}),`\n`,_jsx(_components.li,{children:`Internal queue redeliveries (processing is at-least-once) are deduplicated before storage.`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If you implement your own delivery, generate the event `,_jsx(_components.code,{children:`id`}),` once when the\ncall happens — not per send attempt — so retries deduplicate correctly.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`ordering`,children:`Ordering`}),`\n`,_jsxs(_components.p,{children:[`Events are timestamped by your application (`,_jsx(_components.code,{children:`startTimeMs`}),`, `,_jsx(_components.code,{children:`endTimeMs`}),`), so analytics are ordered by when calls actually happened, not by when events arrived. Late delivery — a retried batch, a flushed buffer from a recovered process — lands in the right place on the timeline.`]}),`\n`,_jsx(Heading,{level:`2`,id:`usage-limits`,children:`Usage limits`}),`\n`,_jsxs(_components.p,{children:[`Plan limits are enforced at the API boundary: once a Free space reaches its monthly allowance, or a Plus subscription is inactive, the ingest API rejects the batch with `,_jsx(_components.code,{children:`402`}),` and a stable error id (`,_jsx(_components.code,{children:`usage_limit_exceeded`}),` or `,_jsx(_components.code,{children:`billing_not_active`}),`). The SDK reports these rejections through `,_jsx(_components.code,{children:`onError`}),` (or a throttled console warning) and drops the affected events instead of retrying — see `,_jsx(_components.a,{href:`/documentation/sdk/configuration#delivery-errors`,children:`Configuration`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Enforcement is also applied during processing as a backstop, so batches already in flight when a limit is crossed may be partially rejected after a `,_jsx(_components.code,{children:`202`}),`. Rejected events do not appear in the dashboard and are not billed. On Plus, events beyond the included amount are accepted and billed per event. See `,_jsx(_components.a,{href:`/documentation/dashboard/plans`,children:`Plans and limits`}),`.`]})]})}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":"Delivery guarantees","description":"How events travel from your app to the ledger: batching, queuing, idempotency, and what a 202 means.","icon":"shield-check","href":"/documentation/concepts/delivery"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The path of an event","slug":"the-path-of-an-event","depth":2,"children":[]},{"title":"202 means queued","slug":"202-means-queued","depth":2,"children":[]},{"title":"Idempotency","slug":"idempotency","depth":2,"children":[]},{"title":"Ordering","slug":"ordering","depth":2,"children":[]},{"title":"Usage limits","slug":"usage-limits","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"carbon-7a946712","siteName":"Carbon","title":"Delivery guarantees - Carbon","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-12T18:24:32.459Z","originalFileLocation":"documentation/concepts/delivery.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=\"How events travel from your app to the ledger: batching, queuing, idempotency, and what a 202 means.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Carbon\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/carbon-7a946712/wXCLDvcvLaGT1c9O/_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/carbon-7a946712/wXCLDvcvLaGT1c9O/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/carbon-7a946712/wXCLDvcvLaGT1c9O/_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/carbon-7a946712/wXCLDvcvLaGT1c9O/_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/carbon-7a946712/wXCLDvcvLaGT1c9O/_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/carbon-7a946712/wXCLDvcvLaGT1c9O/_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/carbon-7a946712/wXCLDvcvLaGT1c9O/_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/carbon-7a946712/wXCLDvcvLaGT1c9O/_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/carbon-7a946712/wXCLDvcvLaGT1c9O/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Delivery guarantees - Carbon\">\u003cmeta data-mint-head property=\"og:description\" content=\"How events travel from your app to the ledger: batching, queuing, idempotency, and what a 202 means.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Carbon\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.oncarbon.site/documentation/concepts/delivery\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://carbon-7a946712.mintlify.site/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Delivery+guarantees\u0026amp;description=How+events+travel+from+your+app+to+the+ledger%3A+batching%2C+queuing%2C+idempotency%2C+and+what+a+202+means.\u0026amp;theme=e43adf45b1d878dd970f2bff\u0026amp;signature=8cdf9d072d3a6d8313aedb88337ed58d08457f4749d2b54666369b88382a6188\">\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=\"Delivery guarantees - Carbon\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How events travel from your app to the ledger: batching, queuing, idempotency, and what a 202 means.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://carbon-7a946712.mintlify.site/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Delivery+guarantees\u0026amp;description=How+events+travel+from+your+app+to+the+ledger%3A+batching%2C+queuing%2C+idempotency%2C+and+what+a+202+means.\u0026amp;theme=e43adf45b1d878dd970f2bff\u0026amp;signature=8cdf9d072d3a6d8313aedb88337ed58d08457f4749d2b54666369b88382a6188\">\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/carbon-7a946712/wXCLDvcvLaGT1c9O/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Carbon\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#615fff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.oncarbon.site/documentation/concepts/delivery\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/documentation/concepts/delivery.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.oncarbon.site/#organization\",\"name\":\"Carbon\",\"url\":\"https://docs.oncarbon.site\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/carbon-7a946712/7iD67IuKn_mtLDOT/public/logo/light.svg?fit=max\u0026auto=format\u0026n=7iD67IuKn_mtLDOT\u0026q=85\u0026s=dd616325bfec99addef1bfcfd182e6ae\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.oncarbon.site#website\",\"name\":\"Carbon\",\"url\":\"https://docs.oncarbon.site\",\"publisher\":{\"@id\":\"https://docs.oncarbon.site/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.oncarbon.site/documentation/concepts/delivery#webpage\",\"url\":\"https://docs.oncarbon.site/documentation/concepts/delivery\",\"name\":\"Delivery guarantees\",\"description\":\"How events travel from your app to the ledger: batching, queuing, idempotency, and what a 202 means.\",\"dateModified\":\"2026-06-12T18:24:32.459Z\",\"isPartOf\":{\"@id\":\"https://docs.oncarbon.site#website\"},\"breadcrumb\":{\"@id\":\"https://docs.oncarbon.site/documentation/concepts/delivery#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.oncarbon.site/documentation/concepts/delivery#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Concepts\",\"item\":\"https://docs.oncarbon.site/documentation/concepts/events\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Delivery guarantees\",\"item\":\"https://docs.oncarbon.site/documentation/concepts/delivery\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.oncarbon.site/documentation/concepts/delivery#article\",\"headline\":\"Delivery guarantees\",\"name\":\"Delivery guarantees\",\"description\":\"How events travel from your app to the ledger: batching, queuing, idempotency, and what a 202 means.\",\"url\":\"https://docs.oncarbon.site/documentation/concepts/delivery\",\"mainEntityOfPage\":{\"@id\":\"https://docs.oncarbon.site/documentation/concepts/delivery#webpage\"},\"dateModified\":\"2026-06-12T18:24:32.459Z\",\"publisher\":{\"@id\":\"https://docs.oncarbon.site/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.oncarbon.site#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Carbon\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Carbon\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/documentation/concepts/delivery.md","siteName":"Carbon","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book-open","groups":[{"group":"Get started","pages":[{"title":"What is Carbon?","icon":"house","href":"/documentation/get-started"},{"title":"Quickstart","icon":"rocket","href":"/documentation/get-started/quickstart"}]},{"group":"Integrations","pages":[{"title":"OpenAI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/carbon-7a946712/public/icons/openai.svg","href":"/documentation/integrations/openai"},{"title":"Anthropic","icon":"https://mintlify.s3.us-west-1.amazonaws.com/carbon-7a946712/public/icons/anthropic.svg","href":"/documentation/integrations/anthropic"},{"title":"Vercel AI SDK","icon":"https://mintlify.s3.us-west-1.amazonaws.com/carbon-7a946712/public/icons/vercel.svg","href":"/documentation/integrations/vercel-ai-sdk"},{"title":"Claude Code","icon":"https://mintlify.s3.us-west-1.amazonaws.com/carbon-7a946712/public/icons/claude.svg","href":"/documentation/integrations/claude-code"},{"title":"Codex","icon":"https://mintlify.s3.us-west-1.amazonaws.com/carbon-7a946712/public/icons/codex.svg","href":"/documentation/integrations/codex"}]},{"group":"SDK","pages":[{"title":"Configuration","icon":"settings","href":"/documentation/sdk/configuration"},{"title":"Serverless","icon":"cloud","href":"/documentation/sdk/serverless"},{"title":"Context","icon":"tag","href":"/documentation/sdk/context"},{"title":"Traces","icon":"route","href":"/documentation/sdk/traces"},{"title":"Tool calls","icon":"wrench","href":"/documentation/sdk/tool-calls"},{"title":"Manual capture","icon":"pencil","href":"/documentation/sdk/manual-capture"}]},{"group":"@carbon-js/connect","pages":[{"title":"CLI","icon":"terminal","href":"/documentation/connect/commands"},{"title":"API keys","icon":"key","href":"/documentation/connect/api-keys"},{"title":"How it works","icon":"settings","href":"/documentation/connect/how-it-works"},{"title":"Privacy","icon":"shield-check","href":"/documentation/connect/privacy"}]},{"group":"Concepts","pages":[{"title":"The event model","description":"Events are the unit of Carbon's ledger: what they contain, the two event types, and what Carbon enriches on ingest.","icon":"database","href":"/documentation/concepts/events"},{"title":"Delivery guarantees","icon":"shield-check","href":"/documentation/concepts/delivery"}]},{"group":"Dashboard","pages":[{"title":"Analytics pages","description":"What each dashboard page shows and how to drill from a summary down to the exact call.","icon":"chart-line","href":"/documentation/dashboard/analytics"},{"title":"Alerts","icon":"bell","href":"/documentation/dashboard/alerts"},{"title":"Dashboards","icon":"layout-dashboard","href":"/documentation/dashboard/dashboards"},{"title":"Pivots","icon":"table","href":"/documentation/dashboard/pivots"},{"title":"SQL","icon":"code","href":"/documentation/dashboard/sql"},{"title":"API keys","icon":"key","href":"/documentation/dashboard/api-keys"},{"title":"Plans and limits","icon":"credit-card","href":"/documentation/dashboard/plans"}]}]},{"tab":"API Reference","icon":"square-terminal","pages":[{"title":"API Reference","href":"/api-reference/overview/introduction"}]}]},"basePath":"","title":"Delivery guarantees - Carbon","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}