Always, for any POST you might retry — creating chatbots, articles, conversations messages, submissions, etc. The cost of including the header is one UUID per request.
Especially for POSTs triggered by user actions (form submits, button clicks), where a network blip otherwise creates duplicates.
Especially inside webhook handlers and queue workers, where retries are normal.
import { randomUUID } from "node:crypto"const idempotencyKey = randomUUID()async function createWithRetry(body, attempts = 3) { for (let i = 0; i < attempts; i++) { const res = await fetch("https://api.awardee.com/v1/chatbots", { method: "POST", headers: { Authorization: "Bearer aw_live_4f8a3c7e2d1b9a5c6f8e3d2c1b4a9f7e", "Idempotency-Key": idempotencyKey, "Content-Type": "application/json", }, body: JSON.stringify(body), }) if (res.ok) return res.json() if (res.status >= 500) continue throw new Error(`${res.status}: ${await res.text()}`) }}await createWithRetry({ name: "Support bot" })
import uuid, requestsidempotency_key = str(uuid.uuid4())def create_with_retry(body, attempts=3): for _ in range(attempts): res = requests.post( "https://api.awardee.com/v1/chatbots", headers={ "Authorization": "Bearer aw_live_4f8a3c7e2d1b9a5c6f8e3d2c1b4a9f7e", "Idempotency-Key": idempotency_key, "Content-Type": "application/json", }, json=body, ) if res.ok: return res.json() if res.status_code >= 500: continue res.raise_for_status()create_with_retry({"name": "Support bot"})
Persist the idempotency key alongside the work it represents (in your job
queue row, your outbox table, the user’s form-submission record). On retry,
look it up and reuse it. Generating a fresh UUID per retry defeats the
purpose.
If you derive keys from content — a source-document hash plus a slug, say — rather than a fresh UUID, the same input produces the same key on every run. That is what you want when retrying a run, but it has a sharp edge: deleting a resource does not invalidate the cached response that created it.Delete a batch of articles and re-import the same source within the 24-hour window and you will get one of two results, neither of them a new resource:
Same body → the original 201 is replayed, carrying IDs of records that no longer exist.
Changed body (a new parent ID, a reordered field) → 409 idempotency_conflict.
Put a run or version segment in the key and bump it whenever you intend to genuinely re-create resources:
import-v7-<source-sha>-<slug> ^^ bump this to force a fresh create
Outside the 24-hour window the key is fresh again and no bump is needed.
The X-Request-Id reflects the replay request, not the original. Log both — the cached request_id inside the JSON body (if your original response had one) ties back to the first attempt.
Reusing a key with a different body within 24 hours returns:
{ "error": "idempotency_conflict", "message": "Idempotency-Key was reused with a different request body.", "request_id": "req_8fK2x9aLp0qR"}
Either generate a new key, or send the same body. If you are re-importing content you previously deleted, see Deterministic keys and deleted resources — the key is still holding the response from the original import.
Cached responses live for 24 hours, sliding from the original request’s completion time. After expiration the key is fresh — sending it again with the same body issues a new request and creates a new cache entry.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Awardee API Docs","description":"The Awardee API. Programmable scan URLs, AI chatbots, dynamic pages, knowledge bases, and the data flowing between them. One platform, one REST API.","colors":{"primary":"#007495","light":"#007495","dark":"#007495"},"logo":{"light":"https://mintcdn.com/awardee/7I10fGCy_lj2kAK9/images/logo.png?fit=max\u0026auto=format\u0026n=7I10fGCy_lj2kAK9\u0026q=85\u0026s=bef1392e0027469937f4188e5805d952","dark":"https://mintcdn.com/awardee/7I10fGCy_lj2kAK9/images/logo-dark.png?fit=max\u0026auto=format\u0026n=7I10fGCy_lj2kAK9\u0026q=85\u0026s=d2b74502b57db56f1fb9ee4d5afb6e47","href":"https://awardee.com"},"favicon":"https://mintcdn.com/awardee/7I10fGCy_lj2kAK9/images/favicon.ico?fit=max\u0026auto=format\u0026n=7I10fGCy_lj2kAK9\u0026q=85\u0026s=ffe5ac4fc2e5971a90f56c86c4267386","api":{"openapi":"openapi.json","playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python"]}},"appearance":{"default":"light"},"navbar":{"links":[{"href":"https://app.awardee.com","label":"Dashboard"},{"href":"mailto:[email protected]","label":"Support"}],"primary":{"type":"button","label":"Get started","href":"https://awardee.com/login"}},"search":{"prompt":"Search the Awardee API"},"fonts":{"family":"Geist"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"awardee","hasAudioNarration":false,"actualSubdomain":"awardee","customDomains":["docs.awardee.com"],"gitSource":{"type":"github","owner":"awardee-pty-ltd","repo":"awardee","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ac37648f2a73d93d63d5107","collectionId":"bee74cda-cdab-43bc-856f-35cfaafa67d6","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac37648f2a73d93d63d5107"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ac37648f2a73d93d63d5107","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Endpoints","count":121},{"language":"default","tag":"Articles","count":28},{"language":"default","tag":"Conversations","count":13},{"language":"default","tag":"Products","count":13},{"language":"default","tag":"Objects","count":12},{"language":"default","tag":"Chatbots","count":11},{"language":"default","tag":"QR Codes","count":11},{"language":"default","tag":"Team","count":11},{"language":"default","tag":"Webhooks","count":11},{"language":"default","tag":"QR Groups","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"concepts/idempotency","slug":"/concepts/idempotency","pageMetadata":{"title":"Idempotency","sidebarTitle":"Idempotency","description":"Retry POST requests safely with the Idempotency-Key header.","href":"/concepts/idempotency"},"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: \"Retry POST requests safely with the Idempotency-Key header.\"\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`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Network calls fail in the middle. Idempotency keys let you retry a `,_jsx(_components.code,{children:`POST`}),` without worrying about creating the same resource twice.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it works`}),`\n`,_jsxs(_components.p,{children:[`Send `,_jsx(_components.code,{children:`Idempotency-Key: \u003copaque-string>`}),` on any `,_jsx(_components.code,{children:`POST`}),` request. Awardee caches the response keyed by `,_jsx(_components.code,{children:`(api_key, method, path, idempotency_key)`}),` for `,_jsx(_components.strong,{children:`24 hours`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Same key, same body`}),` within the window → the cached response is replayed verbatim. The response carries `,_jsx(_components.code,{children:`Idempotent-Replayed: true`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Same key, different body`}),` → `,_jsx(_components.code,{children:`409 idempotency_conflict`}),`. This catches client bugs that reuse a key for unrelated requests.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`New key`}),` → the request runs normally and the result is cached.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`GET`}),`, `,_jsx(_components.code,{children:`PATCH`}),`, `,_jsx(_components.code,{children:`PUT`}),`, and `,_jsx(_components.code,{children:`DELETE`}),` are naturally idempotent on the server side, so the header is ignored on those methods. Only `,_jsx(_components.code,{children:`POST`}),` honors it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`when-to-use-it`,children:`When to use it`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Always`}),`, for any `,_jsx(_components.code,{children:`POST`}),` you might retry — creating chatbots, articles, conversations messages, submissions, etc. The cost of including the header is one UUID per request.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Especially`}),` for `,_jsx(_components.code,{children:`POST`}),`s triggered by user actions (form submits, button clicks), where a network blip otherwise creates duplicates.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Especially`}),` inside webhook handlers and queue workers, where retries are normal.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`choosing-a-key`,children:`Choosing a key`}),`\n`,_jsx(_components.p,{children:`Use a fresh UUIDv4 per logical operation. Generate it on the client and reuse it across retries of the same request.`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`8`,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:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`$(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`uuidgen`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_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.awardee.com/v1/chatbots`}),_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:` \"Authorization: Bearer aw_live_4f8a3c7e2d1b9a5c6f8e3d2c1b4a9f7e\"`}),_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:` \"Idempotency-Key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_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:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{ \"name\": \"Support bot\" }'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`]})})}),_jsx(CodeBlock,{filename:`JavaScript`,numberOfLines:`22`,language:`javascript`,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:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`22`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`randomUUID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"node:crypto\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` idempotencyKey`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` randomUUID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` createWithRetry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`attempts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` i`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`i`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` attempts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`i`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`++`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` res`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://api.awardee.com/v1/chatbots\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` method:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"POST\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Authorization:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Bearer aw_live_4f8a3c7e2d1b9a5c6f8e3d2c1b4a9f7e\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` idempotencyKey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"application/json\"`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` body:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`stringify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ok`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 500`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`continue`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` throw`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`text`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`()`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},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`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` createWithRetry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`name:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Support bot\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` })`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`22`,language:`python`,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:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`22`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` uuid, requests`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`idempotency_key `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` str`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(uuid.uuid4())`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` create_with_retry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`attempts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` _ `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` range`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(attempts):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` res `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` requests.post(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.awardee.com/v1/chatbots\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` headers`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bearer aw_live_4f8a3c7e2d1b9a5c6f8e3d2c1b4a9f7e\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: idempotency_key,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"application/json\"`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` json`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`body,`})]}),`\n`,_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:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` res.ok:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` res.json()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` res.status_code `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 500`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` continue`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` res.raise_for_status()`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`create_with_retry({`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Support bot\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})`})]}),`\n`]})})})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Persist the idempotency key alongside the work it represents (in your job\nqueue row, your outbox table, the user’s form-submission record). On retry,\nlook it up and reuse it. Generating a fresh UUID per retry defeats the\npurpose.`})}),`\n`,_jsx(Heading,{level:`2`,id:`deterministic-keys-and-deleted-resources`,children:`Deterministic keys and deleted resources`}),`\n`,_jsxs(_components.p,{children:[`If you derive keys from content — a source-document hash plus a slug, say — rather than a fresh UUID, the same input produces the same key on every run. That is what you want when retrying a run, but it has a sharp edge: `,_jsx(_components.strong,{children:`deleting a resource does not invalidate the cached response that created it.`})]}),`\n`,_jsx(_components.p,{children:`Delete a batch of articles and re-import the same source within the 24-hour window and you will get one of two results, neither of them a new resource:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Same body`}),` → the original `,_jsx(_components.code,{children:`201`}),` is replayed, carrying IDs of records that no longer exist.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Changed body`}),` (a new parent ID, a reordered field) → `,_jsx(_components.code,{children:`409 idempotency_conflict`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Put a run or version segment in the key and bump it whenever you intend to genuinely re-create resources:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`3`,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:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`import-v7-\u003csource-sha>-\u003cslug>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ^^ bump this to force a fresh create`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Outside the 24-hour window the key is fresh again and no bump is needed.`}),`\n`,_jsx(Heading,{level:`2`,id:`detecting-a-replay`,children:`Detecting a replay`}),`\n`,_jsx(_components.p,{children:`A replayed response is byte-identical to the original, including the original status code. The only differences are response headers:`}),`\n`,_jsx(CodeBlock,{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:`HTTP/1.1 201 Created`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Idempotent-Replayed: true`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`X-Request-Id: req_\u003cnew-id>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`X-Request-Id`}),` reflects the `,_jsx(_components.strong,{children:`replay`}),` request, not the original. Log both — the cached `,_jsx(_components.code,{children:`request_id`}),` inside the JSON body (if your original response had one) ties back to the first attempt.`]}),`\n`,_jsx(Heading,{level:`2`,id:`conflicts`,children:`Conflicts`}),`\n`,_jsx(_components.p,{children:`Reusing a key with a different body within 24 hours returns:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,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:`5`,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:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"idempotency_conflict\"`}),_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:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Idempotency-Key was reused with a different request body.\"`}),_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:` \"request_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"req_8fK2x9aLp0qR\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Either generate a new key, or send the same body. If you are re-importing content you previously deleted, see `,_jsx(_components.a,{href:`#deterministic-keys-and-deleted-resources`,children:`Deterministic keys and deleted resources`}),` — the key is still holding the response from the original import.`]}),`\n`,_jsx(Heading,{level:`2`,id:`window-expiration`,children:`Window expiration`}),`\n`,_jsx(_components.p,{children:`Cached responses live for 24 hours, sliding from the original request’s completion time. After expiration the key is fresh — sending it again with the same body issues a new request and creates a new cache entry.`})]})}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":"Idempotency","sidebarTitle":"Idempotency","description":"Retry POST requests safely with the Idempotency-Key header.","href":"/concepts/idempotency"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How it works","slug":"how-it-works","depth":2,"children":[]},{"title":"When to use it","slug":"when-to-use-it","depth":2,"children":[]},{"title":"Choosing a key","slug":"choosing-a-key","depth":2,"children":[]},{"title":"Deterministic keys and deleted resources","slug":"deterministic-keys-and-deleted-resources","depth":2,"children":[]},{"title":"Detecting a replay","slug":"detecting-a-replay","depth":2,"children":[]},{"title":"Conflicts","slug":"conflicts","depth":2,"children":[]},{"title":"Window expiration","slug":"window-expiration","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"awardee","siteName":"Awardee API Docs","title":"Idempotency - Awardee API Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-29T08:58:12.878Z","originalFileLocation":"concepts/idempotency.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Retry POST requests safely with the Idempotency-Key header.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Awardee API Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/awardee/zDXRVEiJfSlk9OQP/_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/awardee/zDXRVEiJfSlk9OQP/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/awardee/zDXRVEiJfSlk9OQP/_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/awardee/zDXRVEiJfSlk9OQP/_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/awardee/zDXRVEiJfSlk9OQP/_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/awardee/zDXRVEiJfSlk9OQP/_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/awardee/zDXRVEiJfSlk9OQP/_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/awardee/zDXRVEiJfSlk9OQP/_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/awardee/zDXRVEiJfSlk9OQP/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Idempotency - Awardee API Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Retry POST requests safely with the Idempotency-Key header.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Awardee API Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.awardee.com/concepts/idempotency\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://awardee.mintlify.app/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Idempotency\u0026amp;description=Retry+POST+requests+safely+with+the+Idempotency-Key+header.\u0026amp;theme=5814cdf6573aa1102c88c209\u0026amp;signature=1ac5624a9486a9d4fd660c9b21d7183c88dbfbb168ec14b80818905905bcf66d\">\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=\"Idempotency - Awardee API Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Retry POST requests safely with the Idempotency-Key header.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://awardee.mintlify.app/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Idempotency\u0026amp;description=Retry+POST+requests+safely+with+the+Idempotency-Key+header.\u0026amp;theme=5814cdf6573aa1102c88c209\u0026amp;signature=1ac5624a9486a9d4fd660c9b21d7183c88dbfbb168ec14b80818905905bcf66d\">\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/awardee/zDXRVEiJfSlk9OQP/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Awardee API Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#007495\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.awardee.com/concepts/idempotency\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/concepts/idempotency.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.awardee.com/#organization\",\"name\":\"Awardee API Docs\",\"url\":\"https://docs.awardee.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/awardee/7I10fGCy_lj2kAK9/images/logo.png?fit=max\u0026auto=format\u0026n=7I10fGCy_lj2kAK9\u0026q=85\u0026s=bef1392e0027469937f4188e5805d952\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.awardee.com#website\",\"name\":\"Awardee API Docs\",\"url\":\"https://docs.awardee.com\",\"publisher\":{\"@id\":\"https://docs.awardee.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.awardee.com/concepts/idempotency#webpage\",\"url\":\"https://docs.awardee.com/concepts/idempotency\",\"name\":\"Idempotency\",\"description\":\"Retry POST requests safely with the Idempotency-Key header.\",\"dateModified\":\"2026-09-29T08:58:12.878Z\",\"isPartOf\":{\"@id\":\"https://docs.awardee.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.awardee.com/concepts/idempotency#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.awardee.com/concepts/idempotency#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Concepts\",\"item\":\"https://docs.awardee.com/concepts/authentication\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Idempotency\",\"item\":\"https://docs.awardee.com/concepts/idempotency\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.awardee.com/concepts/idempotency#article\",\"headline\":\"Idempotency\",\"name\":\"Idempotency\",\"description\":\"Retry POST requests safely with the Idempotency-Key header.\",\"url\":\"https://docs.awardee.com/concepts/idempotency\",\"mainEntityOfPage\":{\"@id\":\"https://docs.awardee.com/concepts/idempotency#webpage\"},\"dateModified\":\"2026-09-29T08:58:12.878Z\",\"publisher\":{\"@id\":\"https://docs.awardee.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.awardee.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Awardee API Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Awardee API Docs","nav":{"global":null,"groups":[{"group":"Get started","pages":[{"title":"Awardee API","href":"/index"},{"title":"Quickstart","sidebarTitle":"Quickstart","href":"/quickstart"},{"title":"Verify your key","sidebarTitle":"Verify your key","href":"/verify"}]},{"group":"Identity","pages":[{"group":"Endpoints","pages":[{"title":"Get the current identity","deprecated":null,"version":null,"openapi":"/openapi.json get /me","href":"/api-reference/identity/get-the-current-identity"}]}]},{"group":"Concepts","pages":[{"title":"Authentication","sidebarTitle":"Authentication","description":"Org-scoped bearer keys, the Authorization header, rotation, and revocation.","href":"/concepts/authentication"},{"title":"Idempotency","sidebarTitle":"Idempotency","href":"/concepts/idempotency"},{"title":"Pagination","sidebarTitle":"Pagination","description":"Offset pagination for catalog resources, cursor pagination for high-volume streams.","href":"/concepts/pagination"},{"title":"Rate limits","sidebarTitle":"Rate limits","href":"/concepts/rate-limits"},{"title":"Errors","sidebarTitle":"Errors","href":"/concepts/errors"},{"title":"Versioning","sidebarTitle":"Versioning","href":"/concepts/versioning"}]},{"group":"Webhooks","pages":[{"title":"Webhooks","sidebarTitle":"Overview","href":"/webhooks/overview"},{"title":"Event catalog","sidebarTitle":"Events","href":"/webhooks/events"},{"title":"Verify signatures","sidebarTitle":"Signing","href":"/webhooks/signing"},{"title":"Retries and ordering","sidebarTitle":"Retries","href":"/webhooks/retries"},{"title":"Delivery idempotency","sidebarTitle":"Idempotency","href":"/webhooks/idempotency"},{"title":"Testing webhooks","sidebarTitle":"Testing","href":"/webhooks/testing"},{"title":"Managing","href":"/webhooks/managing"},{"group":"Endpoints","pages":[{"title":"Create a webhook","deprecated":null,"version":null,"openapi":"/openapi.json post /webhooks","href":"/api-reference/webhooks/create-a-webhook"},{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/openapi.json get /webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Get a webhook","deprecated":null,"version":null,"openapi":"/openapi.json get /webhooks/{id}","href":"/api-reference/webhooks/get-a-webhook"},{"title":"Update a webhook","deprecated":null,"version":null,"openapi":"/openapi.json patch /webhooks/{id}","href":"/api-reference/webhooks/update-a-webhook"},{"title":"Delete a webhook","deprecated":null,"version":null,"openapi":"/openapi.json delete /webhooks/{id}","href":"/api-reference/webhooks/delete-a-webhook"}]}]},{"group":"Chatbots","pages":[{"title":"Chatbots","href":"/chatbots/overview"},{"title":"The Chatbot object","href":"/chatbots/object"},{"title":"Scan-specific knowledge","href":"/chatbots/scan-specific-knowledge"},{"title":"Retrieval preview","href":"/chatbots/retrieval-preview"},{"title":"Models","href":"/chatbots/models"},{"group":"Endpoints","pages":[{"title":"Create a chatbot","deprecated":null,"version":null,"openapi":"/openapi.json post /chatbots","href":"/api-reference/chatbots/create-a-chatbot"},{"title":"List chatbots","deprecated":null,"version":null,"openapi":"/openapi.json get /chatbots","href":"/api-reference/chatbots/list-chatbots"},{"title":"Get a chatbot","deprecated":null,"version":null,"openapi":"/openapi.json get /chatbots/{id}","href":"/api-reference/chatbots/get-a-chatbot"},{"title":"Update a chatbot","deprecated":null,"version":null,"openapi":"/openapi.json patch /chatbots/{id}","href":"/api-reference/chatbots/update-a-chatbot"},{"title":"Delete a chatbot","deprecated":null,"version":null,"openapi":"/openapi.json delete /chatbots/{id}","href":"/api-reference/chatbots/delete-a-chatbot"},{"title":"Preview knowledge retrieval for a query","deprecated":null,"version":null,"openapi":"/openapi.json post /chatbots/{id}/retrieval-preview","href":"/api-reference/chatbots/preview-knowledge-retrieval-for-a-query"}]}]},{"group":"Customers","pages":[{"title":"Customers","href":"/customers/overview"},{"group":"Endpoints","pages":[{"title":"Upsert a customer","deprecated":null,"version":null,"openapi":"/openapi.json post /customers","href":"/api-reference/customers/upsert-a-customer"},{"title":"List customers","deprecated":null,"version":null,"openapi":"/openapi.json get /customers","href":"/api-reference/customers/list-customers"},{"title":"Get a customer","deprecated":null,"version":null,"openapi":"/openapi.json get /customers/{id}","href":"/api-reference/customers/get-a-customer"},{"title":"Update a customer","deprecated":null,"version":null,"openapi":"/openapi.json patch /customers/{id}","href":"/api-reference/customers/update-a-customer"},{"title":"Delete a customer","deprecated":null,"version":null,"openapi":"/openapi.json delete /customers/{id}","href":"/api-reference/customers/delete-a-customer"}]}]},{"group":"Articles","pages":[{"title":"Articles","href":"/articles/overview"},{"title":"The article object","href":"/articles/object"},{"title":"Publishing \u0026 indexing","href":"/articles/publishing"},{"title":"Translations","href":"/articles/translations"},{"title":"Versions","href":"/articles/versions"},{"title":"Relations","href":"/articles/relations"},{"title":"Chunks","href":"/articles/chunks"},{"group":"Endpoints","pages":[{"title":"Create an article","deprecated":null,"version":null,"openapi":"/openapi.json post /articles","href":"/api-reference/articles/create-an-article"},{"title":"List articles","deprecated":null,"version":null,"openapi":"/openapi.json get /articles","href":"/api-reference/articles/list-articles"},{"title":"Get an article","deprecated":null,"version":null,"openapi":"/openapi.json get /articles/{id}","href":"/api-reference/articles/get-an-article"},{"title":"Update an article","deprecated":null,"version":null,"openapi":"/openapi.json patch /articles/{id}","href":"/api-reference/articles/update-an-article"},{"title":"Delete an article","deprecated":null,"version":null,"openapi":"/openapi.json delete /articles/{id}","href":"/api-reference/articles/delete-an-article"},{"title":"List article versions","deprecated":null,"version":null,"openapi":"/openapi.json get /articles/{id}/versions","href":"/api-reference/articles/list-article-versions"},{"title":"Snapshot the current article body as a new version","deprecated":null,"version":null,"openapi":"/openapi.json post /articles/{id}/versions","href":"/api-reference/articles/snapshot-the-current-article-body-as-a-new-version"},{"title":"Get a specific version of an article","deprecated":null,"version":null,"openapi":"/openapi.json get /articles/{id}/versions/{version}","href":"/api-reference/articles/get-a-specific-version-of-an-article"},{"title":"Restore an article to a prior version","deprecated":null,"version":null,"openapi":"/openapi.json post /articles/{id}/versions/{version}/restore","href":"/api-reference/articles/restore-an-article-to-a-prior-version"},{"title":"List article translations","deprecated":null,"version":null,"openapi":"/openapi.json get /articles/{id}/translations","href":"/api-reference/articles/list-article-translations"},{"title":"Create a translation","deprecated":null,"version":null,"openapi":"/openapi.json post /articles/{id}/translations","href":"/api-reference/articles/create-a-translation"},{"title":"Get a translation","deprecated":null,"version":null,"openapi":"/openapi.json get /articles/{id}/translations/{language}","href":"/api-reference/articles/get-a-translation"},{"title":"Update a translation","deprecated":null,"version":null,"openapi":"/openapi.json patch /articles/{id}/translations/{language}","href":"/api-reference/articles/update-a-translation"},{"title":"Delete a translation","deprecated":null,"version":null,"openapi":"/openapi.json delete /articles/{id}/translations/{language}","href":"/api-reference/articles/delete-a-translation"},{"title":"List tags on an article","deprecated":null,"version":null,"openapi":"/openapi.json get /articles/{id}/tags","href":"/api-reference/articles/list-tags-on-an-article"},{"title":"Replace the set of tag assignments on an article","deprecated":null,"version":null,"openapi":"/openapi.json put /articles/{id}/tags","href":"/api-reference/articles/replace-the-set-of-tag-assignments-on-an-article"},{"title":"List related articles","deprecated":null,"version":null,"openapi":"/openapi.json get /articles/{id}/relations","href":"/api-reference/articles/list-related-articles"},{"title":"Add a related article","deprecated":null,"version":null,"openapi":"/openapi.json post /articles/{id}/relations","href":"/api-reference/articles/add-a-related-article"},{"title":"Set related articles (bulk)","deprecated":null,"version":null,"openapi":"/openapi.json put /articles/{id}/relations","href":"/api-reference/articles/set-related-articles-bulk"},{"title":"Remove a related-article link","deprecated":null,"version":null,"openapi":"/openapi.json delete /articles/{id}/relations/{relatedId}","href":"/api-reference/articles/remove-a-related-article-link"},{"title":"List an article's retrieval chunks","deprecated":null,"version":null,"openapi":"/openapi.json get /articles/{id}/chunks","href":"/api-reference/articles/list-an-articles-retrieval-chunks"},{"title":"Preview how a body would be chunked","deprecated":null,"version":null,"openapi":"/openapi.json post /articles/chunk-preview","href":"/api-reference/articles/preview-how-a-body-would-be-chunked"}]}]},{"group":"Article Categories","pages":[{"title":"Article Categories","href":"/article-categories/overview"},{"title":"The category object","href":"/article-categories/object"},{"group":"Endpoints","pages":[{"title":"Create an article category","deprecated":null,"version":null,"openapi":"/openapi.json post /article-categories","href":"/api-reference/article-categories/create-an-article-category"},{"title":"List article categories","deprecated":null,"version":null,"openapi":"/openapi.json get /article-categories","href":"/api-reference/article-categories/list-article-categories"},{"title":"Get an article category","deprecated":null,"version":null,"openapi":"/openapi.json get /article-categories/{id}","href":"/api-reference/article-categories/get-an-article-category"},{"title":"Update an article category","deprecated":null,"version":null,"openapi":"/openapi.json patch /article-categories/{id}","href":"/api-reference/article-categories/update-an-article-category"},{"title":"Delete an article category","deprecated":null,"version":null,"openapi":"/openapi.json delete /article-categories/{id}","href":"/api-reference/article-categories/delete-an-article-category"}]}]},{"group":"Article Tags","pages":[{"title":"Article Tags","href":"/article-tags/overview"},{"group":"Endpoints","pages":[{"title":"Create an article tag","deprecated":null,"version":null,"openapi":"/openapi.json post /article-tags","href":"/api-reference/article-tags/create-an-article-tag"},{"title":"List article tags","deprecated":null,"version":null,"openapi":"/openapi.json get /article-tags","href":"/api-reference/article-tags/list-article-tags"},{"title":"Delete an article tag","deprecated":null,"version":null,"openapi":"/openapi.json delete /article-tags/{id}","href":"/api-reference/article-tags/delete-an-article-tag"}]}]},{"group":"Knowledge Bases","pages":[{"title":"Knowledge Bases","href":"/knowledge-bases/overview"},{"title":"The knowledge base object","href":"/knowledge-bases/object"},{"group":"Endpoints","pages":[{"title":"List knowledge bases","deprecated":null,"version":null,"openapi":"/openapi.json get /knowledge-bases","href":"/api-reference/knowledge-bases/list-knowledge-bases"},{"title":"Get a knowledge base","deprecated":null,"version":null,"openapi":"/openapi.json get /knowledge-bases/{id}","href":"/api-reference/knowledge-bases/get-a-knowledge-base"}]}]},{"group":"Conversations","pages":[{"title":"Conversations","sidebarTitle":"Overview","href":"/conversations/overview"},{"title":"The Conversation object","sidebarTitle":"Object","href":"/conversations/object"},{"title":"Posting agent replies","sidebarTitle":"Agent replies","href":"/conversations/agent-replies"},{"title":"Conversation lifecycle","sidebarTitle":"Lifecycle","href":"/conversations/lifecycle"},{"group":"Endpoints","pages":[{"title":"List conversations","deprecated":null,"version":null,"openapi":"/openapi.json get /conversations","href":"/api-reference/conversations/list-conversations"},{"title":"Get a conversation","deprecated":null,"version":null,"openapi":"/openapi.json get /conversations/{id}","href":"/api-reference/conversations/get-a-conversation"},{"title":"Update a conversation","deprecated":null,"version":null,"openapi":"/openapi.json patch /conversations/{id}","href":"/api-reference/conversations/update-a-conversation"},{"title":"List messages in a conversation","deprecated":null,"version":null,"openapi":"/openapi.json get /conversations/{id}/messages","href":"/api-reference/conversations/list-messages-in-a-conversation"},{"title":"Send an agent message (human-takeover only)","deprecated":null,"version":null,"openapi":"/openapi.json post /conversations/{id}/messages","href":"/api-reference/conversations/send-an-agent-message-human-takeover-only"},{"title":"List internal notes on a conversation","deprecated":null,"version":null,"openapi":"/openapi.json get /conversations/{id}/notes","href":"/api-reference/conversations/list-internal-notes-on-a-conversation"},{"title":"Add an internal note to a conversation","deprecated":null,"version":null,"openapi":"/openapi.json post /conversations/{id}/notes","href":"/api-reference/conversations/add-an-internal-note-to-a-conversation"},{"title":"List tags assigned to a conversation","deprecated":null,"version":null,"openapi":"/openapi.json get /conversations/{id}/tags","href":"/api-reference/conversations/list-tags-assigned-to-a-conversation"},{"title":"Replace the full set of tag assignments","deprecated":null,"version":null,"openapi":"/openapi.json put /conversations/{id}/tags","href":"/api-reference/conversations/replace-the-full-set-of-tag-assignments"}]}]},{"group":"Conversation Tags","pages":[{"title":"Conversation Tags","sidebarTitle":"Overview","href":"/conversation-tags/overview"},{"group":"Endpoints","pages":[{"title":"Create a conversation tag","deprecated":null,"version":null,"openapi":"/openapi.json post /conversation-tags","href":"/api-reference/conversation-tags/create-a-conversation-tag"},{"title":"List conversation tags","deprecated":null,"version":null,"openapi":"/openapi.json get /conversation-tags","href":"/api-reference/conversation-tags/list-conversation-tags"},{"title":"Delete a conversation tag","deprecated":null,"version":null,"openapi":"/openapi.json delete /conversation-tags/{id}","href":"/api-reference/conversation-tags/delete-a-conversation-tag"}]}]},{"group":"Submissions","pages":[{"title":"Submissions","sidebarTitle":"Overview","href":"/submissions/overview"},{"title":"The Submission object","sidebarTitle":"Object","href":"/submissions/object"},{"group":"Endpoints","pages":[{"title":"List form submissions","deprecated":null,"version":null,"openapi":"/openapi.json get /submissions","href":"/api-reference/submissions/list-form-submissions"},{"title":"Get a submission","deprecated":null,"version":null,"openapi":"/openapi.json get /submissions/{id}","href":"/api-reference/submissions/get-a-submission"},{"title":"Update a submission","deprecated":null,"version":null,"openapi":"/openapi.json patch /submissions/{id}","href":"/api-reference/submissions/update-a-submission"},{"title":"Get a submission's activity timeline","deprecated":null,"version":null,"openapi":"/openapi.json get /submissions/{id}/events","href":"/api-reference/submissions/get-a-submissions-activity-timeline"}]}]},{"group":"Pages","pages":[{"title":"Pages","sidebarTitle":"Overview","href":"/pages/overview"},{"title":"The Page object","sidebarTitle":"Object","href":"/pages/object"},{"title":"Page blocks","sidebarTitle":"Blocks","href":"/pages/blocks"},{"group":"Endpoints","pages":[{"title":"List pages","deprecated":null,"version":null,"openapi":"/openapi.json get /pages","href":"/api-reference/pages/list-pages"},{"title":"Get a page","deprecated":null,"version":null,"openapi":"/openapi.json get /pages/{id}","href":"/api-reference/pages/get-a-page"}]}]},{"group":"QR Codes","pages":[{"title":"QR Codes","sidebarTitle":"Overview","href":"/qr-codes/overview"},{"title":"The QR Code object","sidebarTitle":"Object","href":"/qr-codes/object"},{"group":"Endpoints","pages":[{"title":"List QR codes","deprecated":null,"version":null,"openapi":"/openapi.json get /qr-codes","href":"/api-reference/qr-codes/list-qr-codes"},{"title":"Get a QR code","deprecated":null,"version":null,"openapi":"/openapi.json get /qr-codes/{id}","href":"/api-reference/qr-codes/get-a-qr-code"},{"title":"Update a QR code","deprecated":null,"version":null,"openapi":"/openapi.json patch /qr-codes/{id}","href":"/api-reference/qr-codes/update-a-qr-code"},{"title":"Render a QR code image","deprecated":null,"version":null,"openapi":"/openapi.json get /qr-codes/{id}/image","href":"/api-reference/qr-codes/render-a-qr-code-image"},{"title":"List QR code properties","deprecated":null,"version":null,"openapi":"/openapi.json get /qr-codes/{id}/properties","href":"/api-reference/qr-codes/list-qr-code-properties"},{"title":"Replace QR code properties","deprecated":null,"version":null,"openapi":"/openapi.json put /qr-codes/{id}/properties","href":"/api-reference/qr-codes/replace-qr-code-properties"},{"title":"List QR code URL params","deprecated":null,"version":null,"openapi":"/openapi.json get /qr-codes/{id}/url-params","href":"/api-reference/qr-codes/list-qr-code-url-params"},{"title":"Replace QR code URL params","deprecated":null,"version":null,"openapi":"/openapi.json put /qr-codes/{id}/url-params","href":"/api-reference/qr-codes/replace-qr-code-url-params"},{"title":"List QR code scans","deprecated":null,"version":null,"openapi":"/openapi.json get /qr-codes/{id}/scans","href":"/api-reference/qr-codes/list-qr-code-scans"}]}]},{"group":"QR Groups","pages":[{"title":"QR Groups","sidebarTitle":"Overview","href":"/qr-groups/overview"},{"title":"The QR Group object","sidebarTitle":"Object","href":"/qr-groups/object"},{"group":"Endpoints","pages":[{"title":"Create a QR group","deprecated":null,"version":null,"openapi":"/openapi.json post /qr-groups","href":"/api-reference/qr-groups/create-a-qr-group"},{"title":"List QR groups","deprecated":null,"version":null,"openapi":"/openapi.json get /qr-groups","href":"/api-reference/qr-groups/list-qr-groups"},{"title":"Get a QR group","deprecated":null,"version":null,"openapi":"/openapi.json get /qr-groups/{id}","href":"/api-reference/qr-groups/get-a-qr-group"},{"title":"Update a QR group","deprecated":null,"version":null,"openapi":"/openapi.json patch /qr-groups/{id}","href":"/api-reference/qr-groups/update-a-qr-group"},{"title":"Delete a QR group","deprecated":null,"version":null,"openapi":"/openapi.json delete /qr-groups/{id}","href":"/api-reference/qr-groups/delete-a-qr-group"},{"title":"List QR group properties","deprecated":null,"version":null,"openapi":"/openapi.json get /qr-groups/{id}/properties","href":"/api-reference/qr-groups/list-qr-group-properties"},{"title":"Replace QR group properties","deprecated":null,"version":null,"openapi":"/openapi.json put /qr-groups/{id}/properties","href":"/api-reference/qr-groups/replace-qr-group-properties"}]}]},{"group":"Products","pages":[{"title":"Products","sidebarTitle":"Overview","href":"/products/overview"},{"title":"The Product object","sidebarTitle":"Object","href":"/products/object"},{"group":"Endpoints","pages":[{"title":"Create a product","deprecated":null,"version":null,"openapi":"/openapi.json post /products","href":"/api-reference/products/create-a-product"},{"title":"List products","deprecated":null,"version":null,"openapi":"/openapi.json get /products","href":"/api-reference/products/list-products"},{"title":"Get a product","deprecated":null,"version":null,"openapi":"/openapi.json get /products/{id}","href":"/api-reference/products/get-a-product"},{"title":"Update a product","deprecated":null,"version":null,"openapi":"/openapi.json patch /products/{id}","href":"/api-reference/products/update-a-product"},{"title":"Delete a product","deprecated":null,"version":null,"openapi":"/openapi.json delete /products/{id}","href":"/api-reference/products/delete-a-product"},{"title":"Lookup a product by GTIN","deprecated":null,"version":null,"openapi":"/openapi.json get /products/by-gtin/{gtin}","href":"/api-reference/products/lookup-a-product-by-gtin"},{"title":"List product properties","deprecated":null,"version":null,"openapi":"/openapi.json get /products/{id}/properties","href":"/api-reference/products/list-product-properties"},{"title":"Replace product properties","deprecated":null,"version":null,"openapi":"/openapi.json put /products/{id}/properties","href":"/api-reference/products/replace-product-properties"},{"title":"List product images","deprecated":null,"version":null,"openapi":"/openapi.json get /products/{id}/images","href":"/api-reference/products/list-product-images"},{"title":"Attach a product image by URL","deprecated":null,"version":null,"openapi":"/openapi.json post /products/{id}/images","href":"/api-reference/products/attach-a-product-image-by-url"},{"title":"Delete a product image","deprecated":null,"version":null,"openapi":"/openapi.json delete /products/{id}/images/{imageId}","href":"/api-reference/products/delete-a-product-image"}]}]},{"group":"Objects","pages":[{"title":"Objects","href":"/objects/overview"},{"title":"The Object object","href":"/objects/object"},{"title":"Examples","href":"/objects/examples"},{"group":"Endpoints","pages":[{"title":"Create or upsert an object","deprecated":null,"version":null,"openapi":"/openapi.json post /objects","href":"/api-reference/objects/create-or-upsert-an-object"},{"title":"List objects","deprecated":null,"version":null,"openapi":"/openapi.json get /objects","href":"/api-reference/objects/list-objects"},{"title":"Get an object","deprecated":null,"version":null,"openapi":"/openapi.json get /objects/{id}","href":"/api-reference/objects/get-an-object"},{"title":"Update an object","deprecated":null,"version":null,"openapi":"/openapi.json patch /objects/{id}","href":"/api-reference/objects/update-an-object"},{"title":"Delete an object","deprecated":null,"version":null,"openapi":"/openapi.json delete /objects/{id}","href":"/api-reference/objects/delete-an-object"},{"title":"List object properties","deprecated":null,"version":null,"openapi":"/openapi.json get /objects/{id}/properties","href":"/api-reference/objects/list-object-properties"},{"title":"Replace object properties","deprecated":null,"version":null,"openapi":"/openapi.json put /objects/{id}/properties","href":"/api-reference/objects/replace-object-properties"},{"title":"List object URL params","deprecated":null,"version":null,"openapi":"/openapi.json get /objects/{id}/url-params","href":"/api-reference/objects/list-object-url-params"},{"title":"Replace object URL params","deprecated":null,"version":null,"openapi":"/openapi.json put /objects/{id}/url-params","href":"/api-reference/objects/replace-object-url-params"}]}]},{"group":"Custom Domains","pages":[{"title":"Custom Domains","sidebarTitle":"Overview","href":"/custom-domains/overview"},{"title":"The Custom Domain object","sidebarTitle":"Object","href":"/custom-domains/object"},{"title":"DNS verification","href":"/custom-domains/verification"},{"group":"Endpoints","pages":[{"title":"Connect a custom domain","deprecated":null,"version":null,"openapi":"/openapi.json post /custom-domains","href":"/api-reference/custom-domains/connect-a-custom-domain"},{"title":"List custom domains","deprecated":null,"version":null,"openapi":"/openapi.json get /custom-domains","href":"/api-reference/custom-domains/list-custom-domains"},{"title":"Get a custom domain","deprecated":null,"version":null,"openapi":"/openapi.json get /custom-domains/{id}","href":"/api-reference/custom-domains/get-a-custom-domain"},{"title":"Delete a custom domain","deprecated":null,"version":null,"openapi":"/openapi.json delete /custom-domains/{id}","href":"/api-reference/custom-domains/delete-a-custom-domain"},{"title":"Re-check verification","deprecated":null,"version":null,"openapi":"/openapi.json post /custom-domains/{id}/verify","href":"/api-reference/custom-domains/re-check-verification"}]}]},{"group":"Custom Domain Routes","pages":[{"title":"Custom Domain Routes","sidebarTitle":"Overview","href":"/custom-domain-routes/overview"},{"title":"The Custom Domain Route object","sidebarTitle":"Object","href":"/custom-domain-routes/object"},{"group":"Endpoints","pages":[{"title":"Create a route","deprecated":null,"version":null,"openapi":"/openapi.json post /custom-domain-routes","href":"/api-reference/custom-domain-routes/create-a-route"},{"title":"List routes for a domain","deprecated":null,"version":null,"openapi":"/openapi.json get /custom-domain-routes","href":"/api-reference/custom-domain-routes/list-routes-for-a-domain"},{"title":"Get a route","deprecated":null,"version":null,"openapi":"/openapi.json get /custom-domain-routes/{id}","href":"/api-reference/custom-domain-routes/get-a-route"},{"title":"Update a route","deprecated":null,"version":null,"openapi":"/openapi.json patch /custom-domain-routes/{id}","href":"/api-reference/custom-domain-routes/update-a-route"},{"title":"Delete a route","deprecated":null,"version":null,"openapi":"/openapi.json delete /custom-domain-routes/{id}","href":"/api-reference/custom-domain-routes/delete-a-route"}]}]},{"group":"Team","pages":[{"title":"Team","href":"/team/overview"},{"title":"Members","href":"/team/members"},{"title":"Invitations","href":"/team/invitations"},{"group":"Endpoints","pages":[{"title":"List members","deprecated":null,"version":null,"openapi":"/openapi.json get /team/members","href":"/api-reference/team/list-members"},{"title":"Get a member","deprecated":null,"version":null,"openapi":"/openapi.json get /team/members/{id}","href":"/api-reference/team/get-a-member"},{"title":"Change a member's role","deprecated":null,"version":null,"openapi":"/openapi.json patch /team/members/{id}","href":"/api-reference/team/change-a-members-role"},{"title":"Remove a member","deprecated":null,"version":null,"openapi":"/openapi.json delete /team/members/{id}","href":"/api-reference/team/remove-a-member"},{"title":"List pending invitations","deprecated":null,"version":null,"openapi":"/openapi.json get /team/invitations","href":"/api-reference/team/list-pending-invitations"},{"title":"Create an invitation","deprecated":null,"version":null,"openapi":"/openapi.json post /team/invitations","href":"/api-reference/team/create-an-invitation"},{"title":"Get an invitation","deprecated":null,"version":null,"openapi":"/openapi.json get /team/invitations/{id}","href":"/api-reference/team/get-an-invitation"},{"title":"Revoke an invitation","deprecated":null,"version":null,"openapi":"/openapi.json delete /team/invitations/{id}","href":"/api-reference/team/revoke-an-invitation"}]}]}]},"title":"Idempotency - Awardee API Docs","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}