Best practices on handling retries in an idempotent way.
The API supports idempotent requests allowing the safe retrying of
requests without accidentally performing the same operation again. When making an
idempotent request, if an error occurs in the request to the API (such as
a timeout or loss of connection), you can safely retry the request without the
risk of creating a second resource or performing the update twice.Idempotency works by storing the status code and body of the first
response for a given idempotency key, regardless of whether the request
succeeded or failed. Subsequent requests with the same idempotency key will
return the same response.An idempotency key is a unique key generated by you that the API uses to
identify subsequent retries of the same request. We recommend using V4 UUIDs,
or another random string with enough entropy to avoid collisions. Idempotency
keys can be up to 255 characters long, and remain valid for 24 hours, after
which the idempotency key may be reused for another request.The response of an idempotent request is only saved if the API started
executing. If your request fails validation or the request conflicts with
another that was performed concurrently, no response is saved. It is safe to
retry these requests.
Currently, only the POST /transactions endpoint supports idempotent requests.
When making an idempotent request using the same Idemoptency-Key as a previous
request, and the original request is still being processed, you will receive an
error. You can safely retry this request. We recommend applying an exponential
back-off when retrying transactions.
{ "type": "error", "code": "concurrent_request", "status": 409, "message": "A request with this idempotency key is still being processed. Retry later.", "details": []}
When making an idempotent request using the same Idempotency-Key as a previous
request, and the request is not the same (for example, the request body is
different), you will receive an error. Retrying this request will not change the
error response. You should check your request.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"mattilda Pay","colors":{"primary":"#0069ED","light":"#4D9CFF","dark":"#0050B4"},"logo":{"light":"https://mintcdn.com/mattilda/yVMPq-_dro0vSEiX/assets/logos/light.svg?fit=max\u0026auto=format\u0026n=yVMPq-_dro0vSEiX\u0026q=85\u0026s=ebe404856efad414fe0e5816e122fbf3","dark":"https://mintcdn.com/mattilda/yVMPq-_dro0vSEiX/assets/logos/dark.svg?fit=max\u0026auto=format\u0026n=yVMPq-_dro0vSEiX\u0026q=85\u0026s=5064d58e92f6cf9e1b73945b8043e745"},"favicon":"https://mintcdn.com/mattilda/NYRslQ0epuL-JaEH/assets/favicon.png?fit=max\u0026auto=format\u0026n=NYRslQ0epuL-JaEH\u0026q=85\u0026s=0b246d2ab24fa7d49ab657027a1a4bf8","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["csharp","go","java","php","python","typescript"]},"mdx":{"auth":{"method":"bearer"},"server":["https://api.sandbox.mattildapayments.com","https://api.mattildapayments.com"]}},"navbar":{"links":[{"icon":"github","href":"https://github.com/gr4vy","label":"GitHub"}],"primary":{"type":"button","label":"mattilda Pay","href":"https://mattildapay.com"}},"footer":{"socials":{"website":"https://mattildapay.com","github":"https://github.com/gr4vy","linkedin":"https://www.linkedin.com/company/mattilda.io"}},"styling":{"eyebrows":"breadcrumbs","codeblocks":"dark","latex":true},"integrations":{"intercom":{"appId":"bp5sj6z7"}},"contextual":{"options":["chatgpt","claude","copy","view"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mattilda","hasAudioNarration":false,"actualSubdomain":"mattilda","customDomains":["docs.mattildapayments.com"],"gitSource":{"type":"github","owner":"mattilda-education","repo":"gr4vy-docs-mintlify","deployBranch":"mattilda_pay","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ad7fc40b86df1a05c8ecc42","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Payments","count":133},{"language":"default","tag":"API Reference","count":80},{"language":"default","tag":"Integration","count":69},{"language":"default","tag":"Features","count":47},{"language":"default","tag":"Quick start","count":32},{"language":"default","tag":"Vault","count":18},{"language":"default","tag":"E-commerce Plugins","count":15},{"language":"default","tag":"Embed","count":13},{"language":"default","tag":"Other","count":12},{"language":"default","tag":"Network tokens","count":11}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".payment-service-definition{background-color:white!important;border:1px solid #0a0e0d1a;border-radius:16px;padding:2em;vertical-align:middle}.payment-service-definition img{margin:0 1em 0 0;max-width:3em;display:inline-block}.payment-service-definition h2{margin:0;display:inline-block;position:relative;top:0.1em}"}],"page":{"pagePath":"guides/api/idempotent-requests","slug":"/guides/api/idempotent-requests","pageMetadata":{"title":"Idempotent Requests","description":"Best practices on handling retries in an idempotent way.","href":"/guides/api/idempotent-requests"},"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: \"Best practices on handling retries in an idempotent way.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The API supports idempotent requests allowing the safe retrying of\nrequests without accidentally performing the same operation again. When making an\nidempotent request, if an error occurs in the request to the API (such as\na timeout or loss of connection), you can safely retry the request without the\nrisk of creating a second resource or performing the update twice.`}),`\n`,_jsx(_components.p,{children:`Idempotency works by storing the status code and body of the first\nresponse for a given idempotency key, regardless of whether the request\nsucceeded or failed. Subsequent requests with the same idempotency key will\nreturn the same response.`}),`\n`,_jsx(_components.p,{children:`An idempotency key is a unique key generated by you that the API uses to\nidentify subsequent retries of the same request. We recommend using V4 UUIDs,\nor another random string with enough entropy to avoid collisions. Idempotency\nkeys can be up to 255 characters long, and remain valid for 24 hours, after\nwhich the idempotency key may be reused for another request.`}),`\n`,_jsx(_components.p,{children:`The response of an idempotent request is only saved if the API started\nexecuting. If your request fails validation or the request conflicts with\nanother that was performed concurrently, no response is saved. It is safe to\nretry these requests.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Currently, only the `,_jsx(_components.code,{children:`POST /transactions`}),` endpoint supports idempotent requests.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`making-an-idempotent-request`,children:`Making an idempotent request`}),`\n`,_jsxs(_components.p,{children:[`To make an idempotent request, specify the `,_jsx(_components.code,{children:`Idempotency-Key`}),` header in the\nrequest.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -i`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.mattildapayments.com/transactions\"`}),_jsx(_components.span,{style:{color:`#D7BA7D`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer [JWT]\"`}),_jsx(_components.span,{style:{color:`#D7BA7D`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key: bffa9ce6-7a8a-449c-889a-65bd2ee86903\"`}),_jsx(_components.span,{style:{color:`#D7BA7D`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"{...}\"`})]}),`\n`]})})}),`\n`,_jsxs(Note,{children:[`Most of `,_jsx(_components.a,{href:`/guides/api/authentication`,children:`our SDKs`}),` support passing through this header on the `,_jsx(_components.code,{children:`POST transactions`}),` call.`]}),`\n`,_jsx(Heading,{level:`2`,id:`concurrent-requests`,children:`Concurrent requests`}),`\n`,_jsxs(_components.p,{children:[`When making an idempotent request using the same `,_jsx(_components.code,{children:`Idemoptency-Key`}),` as a previous\nrequest, and the original request is still being processed, you will receive an\nerror. You can safely retry this request. We recommend applying an exponential\nback-off when retrying transactions.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"error\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"concurrent_request\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#B5CEA8`,\"--shiki-dark\":`#B5CEA8`},children:`409`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"A request with this idempotency key is still being processed. Retry later.\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"details\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`conflicting-requests`,children:`Conflicting requests`}),`\n`,_jsxs(_components.p,{children:[`When making an idempotent request using the same `,_jsx(_components.code,{children:`Idempotency-Key`}),` as a previous\nrequest, and the request is not the same (for example, the request body is\ndifferent), you will receive an error. Retrying this request will not change the\nerror response. You should check your request.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"error\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"bad_request\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#B5CEA8`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"Idempotency key already in use.\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` \"details\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Idempotent Requests","description":"Best practices on handling retries in an idempotent way.","href":"/guides/api/idempotent-requests"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Making an idempotent request","slug":"making-an-idempotent-request","depth":2,"children":[]},{"title":"Concurrent requests","slug":"concurrent-requests","depth":2,"children":[]},{"title":"Conflicting requests","slug":"conflicting-requests","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/mattilda/eb353c0e6fdb81a8/assets/data/payment-service-definitions.js"],"subdomain":"mattilda","siteName":"mattilda Pay","title":"Idempotent Requests - mattilda Pay","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-10-09T21:51:08.476Z","originalFileLocation":"guides/api/idempotent-requests.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=\"Best practices on handling retries in an idempotent way.\">\u003cmeta data-mint-head name=\"application-name\" content=\"mattilda Pay\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mattilda/OkS2-p2fdXqcdBmD/_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/mattilda/OkS2-p2fdXqcdBmD/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mattilda/OkS2-p2fdXqcdBmD/_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/mattilda/OkS2-p2fdXqcdBmD/_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/mattilda/OkS2-p2fdXqcdBmD/_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/mattilda/OkS2-p2fdXqcdBmD/_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/mattilda/OkS2-p2fdXqcdBmD/_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/mattilda/OkS2-p2fdXqcdBmD/_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/mattilda/OkS2-p2fdXqcdBmD/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Idempotent Requests - mattilda Pay\">\u003cmeta data-mint-head property=\"og:description\" content=\"Best practices on handling retries in an idempotent way.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"mattilda Pay\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mattildapayments.com/guides/api/idempotent-requests\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mattilda.mintlify.site/_mintlify/api/og/v2?division=Introduction\u0026amp;title=Idempotent+Requests\u0026amp;description=Best+practices+on+handling+retries+in+an+idempotent+way.\u0026amp;theme=ffab5479dabb3f0f858d7f90\u0026amp;signature=40d954c7a1cf3b4af7faa2508cd9771d48359f3dfeb77c970f94b3d41db66112\">\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=\"Idempotent Requests - mattilda Pay\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Best practices on handling retries in an idempotent way.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mattilda.mintlify.site/_mintlify/api/og/v2?division=Introduction\u0026amp;title=Idempotent+Requests\u0026amp;description=Best+practices+on+handling+retries+in+an+idempotent+way.\u0026amp;theme=ffab5479dabb3f0f858d7f90\u0026amp;signature=40d954c7a1cf3b4af7faa2508cd9771d48359f3dfeb77c970f94b3d41db66112\">\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/mattilda/OkS2-p2fdXqcdBmD/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"mattilda Pay\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0069ED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mattildapayments.com/guides/api/idempotent-requests\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/api/idempotent-requests.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mattildapayments.com/#organization\",\"name\":\"mattilda Pay\",\"url\":\"https://docs.mattildapayments.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mattilda/yVMPq-_dro0vSEiX/assets/logos/light.svg?fit=max\u0026auto=format\u0026n=yVMPq-_dro0vSEiX\u0026q=85\u0026s=ebe404856efad414fe0e5816e122fbf3\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mattildapayments.com#website\",\"name\":\"mattilda Pay\",\"url\":\"https://docs.mattildapayments.com\",\"publisher\":{\"@id\":\"https://docs.mattildapayments.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mattildapayments.com/guides/api/idempotent-requests#webpage\",\"url\":\"https://docs.mattildapayments.com/guides/api/idempotent-requests\",\"name\":\"Idempotent Requests\",\"description\":\"Best practices on handling retries in an idempotent way.\",\"dateModified\":\"2025-10-09T21:51:08.476Z\",\"isPartOf\":{\"@id\":\"https://docs.mattildapayments.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mattildapayments.com/guides/api/idempotent-requests#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mattildapayments.com/guides/api/idempotent-requests#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Introduction\",\"item\":\"https://docs.mattildapayments.com/guides/api/authentication\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Idempotent Requests\",\"item\":\"https://docs.mattildapayments.com/guides/api/idempotent-requests\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.mattildapayments.com/guides/api/idempotent-requests#article\",\"headline\":\"Idempotent Requests\",\"name\":\"Idempotent Requests\",\"description\":\"Best practices on handling retries in an idempotent way.\",\"url\":\"https://docs.mattildapayments.com/guides/api/idempotent-requests\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mattildapayments.com/guides/api/idempotent-requests#webpage\"},\"dateModified\":\"2025-10-09T21:51:08.476Z\",\"publisher\":{\"@id\":\"https://docs.mattildapayments.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mattildapayments.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"mattilda Pay\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"mattilda Pay","nav":{"global":null,"tabs":[{"tab":"Payments","pages":[{"title":"Payments","href":"/guides/get-started"}]},{"tab":"Dashboard","pages":[{"title":"Dashboard","href":"/guides/dashboard/insights/homepage"}]},{"tab":"API Reference","icon":{"style":"light","name":"square-terminal"},"groups":[{"group":"Introduction","pages":[{"title":"Authentication","mode":"wide","href":"/guides/api/authentication"},{"sidebarTitle":"JWTs","title":"Authentication with JWTs","href":"/guides/api/jwts"},{"title":"Environments","href":"/guides/api/environments"},{"title":"Error handling","sidebarTitle":"Errors","description":"Best practices on handling errors and other exceptions.","mode":"wide","href":"/guides/api/errors"},{"title":"Idempotent Requests","href":"/guides/api/idempotent-requests"},{"title":"IP Address Forwarding","description":"Best practices on handling the original IP address for a transaction.","href":"/guides/api/ip-address-forwarding"},{"title":"Pagination","href":"/guides/api/pagination"},{"title":"Rate limiting","href":"/guides/api/rate-limiting"}]},{"group":"Transactions","pages":[{"openapi":"/openapi.speakeasy.json GET /transactions","title":"List transactions","href":"/reference/transactions/list-transactions"},{"openapi":"/openapi.speakeasy.json POST /transactions","title":"Create transaction","href":"/reference/transactions/new-transaction"},{"openapi":"/openapi.speakeasy.json GET /transactions/{transaction_id}","title":"Get transaction","href":"/reference/transactions/get-transaction"},{"openapi":"/openapi.speakeasy.json POST /transactions/{transaction_id}/capture","title":"Capture transaction","href":"/reference/transactions/capture-transaction"},{"openapi":"/openapi.speakeasy.json POST /transactions/{transaction_id}/void","title":"Void transaction","href":"/reference/transactions/void-transaction"},{"openapi":"/openapi.speakeasy.json GET /transactions/{transaction_id}/events","title":"List transaction events","href":"/reference/transactions/list-transaction-events"},{"openapi":"/openapi.speakeasy.json POST /transactions/{transaction_id}/sync","title":"Sync transaction","href":"/reference/transactions/sync-transaction"}]},{"group":"Buyers","pages":[{"openapi":"/openapi.speakeasy.json GET /buyers","title":"List all buyers","href":"/reference/buyers/list-buyers"},{"openapi":"/openapi.speakeasy.json POST /buyers","title":"Add a buyer","href":"/reference/buyers/new-buyer"},{"openapi":"/openapi.speakeasy.json GET /buyers/{buyer_id}","title":"Get a buyer","href":"/reference/buyers/get-buyer"},{"openapi":"/openapi.speakeasy.json PUT /buyers/{buyer_id}","title":"Update a buyer","href":"/reference/buyers/update-buyer"},{"openapi":"/openapi.speakeasy.json DELETE /buyers/{buyer_id}","title":"Delete a buyer","href":"/reference/buyers/delete-buyer"},{"group":"Shipping details","pages":[{"openapi":"/openapi.speakeasy.json GET /buyers/{buyer_id}/shipping-details","title":"List a buyer's shipping details","href":"/reference/buyers/get-buyer-shipping-details"},{"openapi":"/openapi.speakeasy.json POST /buyers/{buyer_id}/shipping-details","title":"Add buyer shipping details","href":"/reference/buyers/new-buyer-shipping-detail"},{"openapi":"/openapi.speakeasy.json PUT /buyers/{buyer_id}/shipping-details/{shipping_details_id}","title":"Update a buyer's shipping details","href":"/reference/buyers/update-buyer-shipping-detail"},{"openapi":"/openapi.speakeasy.json DELETE /buyers/{buyer_id}/shipping-details/{shipping_details_id}","title":"Delete a buyer's shipping details","href":"/reference/buyers/delete-buyer-shipping-detail"}]}]},{"group":"Checkout Sessions","pages":[{"openapi":"/openapi.speakeasy.json POST /checkout/sessions","title":"Create checkout session","href":"/reference/checkout-sessions/new-checkout-session"},{"openapi":"/openapi.speakeasy.json GET /checkout/sessions/{session_id}","title":"Get checkout session","href":"/reference/checkout-sessions/get-checkout-session"},{"openapi":"/openapi.speakeasy.json PUT /checkout/sessions/{session_id}","title":"Update checkout session","href":"/reference/checkout-sessions/update-checkout-session"},{"openapi":"/openapi.speakeasy.json DELETE /checkout/sessions/{session_id}","title":"Delete checkout session","href":"/reference/checkout-sessions/delete-checkout-session"},{"openapi":"/openapi.v1.json PUT /checkout/sessions/{checkout_session_id}/fields","sidebarTitle":"Update session fields","title":null,"href":"/reference/checkout-sessions/update-checkout-session-fields"}]},{"group":"Payment links","pages":[{"openapi":"/openapi.speakeasy.json GET /payment-links","title":"List all payment links","href":"/reference/payment-links/list-payment-links"},{"openapi":"/openapi.speakeasy.json POST /payment-links","title":"Add a payment link","href":"/reference/payment-links/new-payment-link"},{"openapi":"/openapi.speakeasy.json GET /payment-links/{payment_link_id}","title":"Get payment link","href":"/reference/payment-links/get-payment-link"},{"openapi":"/openapi.speakeasy.json POST /payment-links/{payment_link_id}/expire","title":"Expire a payment link","href":"/reference/payment-links/expire-payment-link"}]},{"group":"Payment options","pages":[{"openapi":"/openapi.speakeasy.json POST /payment-options","sidebarTitle":"List payment option","title":"List payment options","href":"/reference/payment-options/list-payment-options-with-post"}]},{"group":"Refunds","pages":[{"openapi":"/openapi.speakeasy.json GET /transactions/{transaction_id}/refunds","title":"List transaction refunds","href":"/reference/transactions/list-transaction-refunds"},{"openapi":"/openapi.speakeasy.json POST /transactions/{transaction_id}/refunds","title":"Create transaction refund","href":"/reference/transactions/refund-transaction"},{"openapi":"/openapi.speakeasy.json POST /transactions/{transaction_id}/refunds/all","sidebarTitle":"Refund all instruments","title":"Create batch transaction refund","href":"/reference/transactions/refund-all"},{"sidebarTitle":"Get refund","title":"Get refund","openapi":"/openapi.speakeasy.json GET /refunds/{refund_id}","href":"/reference/transactions/get-refund"}]},{"group":"Sessions","pages":[{"openapi":"/openapi.speakeasy.json POST /payment-service-definitions/{payment_service_definition_id}/sessions","sidebarTitle":"Get session","title":"Create a session for apayment service definition","href":"/reference/payment-service-sessions/create-payment-service-session"},{"openapi":"/openapi.speakeasy.json POST /payment-services/{payment_service_id}/sessions","sidebarTitle":"Get session by ID","title":"Create a session for apayment service definition","href":"/reference/payment-service-sessions/create-payment-service-session-by-id"}]},{"group":"Instruments","pages":[{"group":"Card schemes","pages":[{"openapi":"/openapi.speakeasy.json GET /card-scheme-definitions","title":"List card scheme definitions","href":"/reference/card-schemes/list-card-scheme-definitions"}]},{"group":"Card details","pages":[{"openapi":"/openapi.v1.json GET /card-details","title":null,"href":"/reference/card-details/get-card-details"}]},{"group":"Digital wallets","pages":[{"openapi":"/openapi.speakeasy.json POST /digital-wallets/apple/session","title":"Create a Apple Pay session","href":"/reference/digital-wallets/get-apple-pay-session"},{"openapi":"/openapi.speakeasy.json POST /digital-wallets/google/session","title":"Create a Google Pay session","href":"/reference/digital-wallets/get-google-pay-session"},{"openapi":"/openapi.speakeasy.json POST /digital-wallets/click-to-pay/session","title":"Create a Click to Pay session","href":"/reference/digital-wallets/get-click-to-pay-session"}]},{"group":"Payment methods","pages":[{"openapi":"/openapi.speakeasy.json GET /buyers/payment-methods","title":"List payment methods for a buyer","href":"/reference/payment-methods/list-buyer-payment-methods"},{"openapi":"/openapi.speakeasy.json GET /payment-methods","title":"List all payment methods","href":"/reference/payment-methods/list-payment-methods"},{"openapi":"/openapi.speakeasy.json POST /payment-methods","title":"Create payment method","href":"/reference/payment-methods/new-payment-method"},{"openapi":"/openapi.speakeasy.json GET /payment-methods/{payment_method_id}","title":"Get payment method","href":"/reference/payment-methods/get-payment-method"},{"openapi":"/openapi.speakeasy.json DELETE /payment-methods/{payment_method_id}","title":"Delete payment method","href":"/reference/payment-methods/delete-payment-method"}]},{"group":"Payment method definitions","pages":[{"openapi":"/openapi.v1.json GET /payment-method-definitions","title":null,"href":"/reference/payment-method-definitions/list-payment-method-definitions"}]}]},{"group":"Vault","pages":[{"group":"Account updater","pages":[{"openapi":"/openapi.speakeasy.json POST /account-updater/jobs","sidebarTitle":"Create a job","title":"Create account updater job","href":"/reference/account-updater/new-account-updater-job"}]},{"group":"Network tokens","pages":[{"openapi":"/openapi.speakeasy.json GET /payment-methods/{payment_method_id}/network-tokens","title":"List network tokens","href":"/reference/network-tokens/list-network-tokens"},{"openapi":"/openapi.speakeasy.json POST /payment-methods/{payment_method_id}/network-tokens","title":"Provision network token","href":"/reference/network-tokens/provision-network-token"},{"openapi":"/openapi.speakeasy.json POST /payment-methods/{payment_method_id}/network-tokens/{network_token_id}/cryptogram","title":"Provision network token cryptogram","href":"/reference/network-tokens/get-network-token-cryptogram"},{"openapi":"/openapi.speakeasy.json POST /payment-methods/{payment_method_id}/network-tokens/{network_token_id}/suspend","title":"Suspend network token","href":"/reference/network-tokens/suspend-network-token"},{"openapi":"/openapi.speakeasy.json POST /payment-methods/{payment_method_id}/network-tokens/{network_token_id}/resume","title":"Resume network token","href":"/reference/network-tokens/resume-network-token"},{"openapi":"/openapi.speakeasy.json DELETE /payment-methods/{payment_method_id}/network-tokens/{network_token_id}","title":"Delete network token","href":"/reference/network-tokens/delete-network-token"}]},{"group":"Payment service tokens","pages":[{"openapi":"/openapi.speakeasy.json GET /payment-methods/{payment_method_id}/payment-service-tokens","title":"List payment service tokens","href":"/reference/payment-service-tokens/list-payment-service-tokens"},{"openapi":"/openapi.speakeasy.json POST /payment-methods/{payment_method_id}/payment-service-tokens","title":"Create payment service token","href":"/reference/payment-service-tokens/provision-payment-service-token"},{"openapi":"/openapi.speakeasy.json DELETE /payment-methods/{payment_method_id}/payment-service-tokens/{payment_service_token_id}","title":"Delete payment service token","href":"/reference/payment-service-tokens/delete-payment-service-token"}]},{"group":"Vault Forward","pages":[{"openapi":"/openapi.v1.json POST /vault-forward","title":null,"href":"/reference/vault-forwarding/make-vault-forward"}]},{"group":"Vault Forward endpoints","pages":[{"openapi":"/openapi.v1.json GET /vault-forward/configs","sidebarTitle":"List endpoints","title":null,"href":"/reference/vault-forwarding/list-vault-forward-configs"},{"openapi":"/openapi.v1.json GET /vault-forward/configs/{config_id}","sidebarTitle":"Get endpoint","title":null,"href":"/reference/vault-forwarding/get-vault-forward-config"}]},{"group":"Vault Forward authentication","pages":[{"openapi":"/openapi.v1.json GET /vault-forward/configs/{config_id}/authentications","sidebarTitle":"Get authentications","title":null,"href":"/reference/vault-forwarding/list-vault-forward-authentications"},{"openapi":"/openapi.v1.json GET /vault-forward/configs/{config_id}/authentications/{authentication_id}","sidebarTitle":"Get authentication","title":null,"href":"/reference/vault-forwarding/get-vault-forward-authentication"},{"openapi":"/openapi.v1.json POST /vault-forward/configs/{config_id}/authentications","sidebarTitle":"Add authentication","title":null,"href":"/reference/vault-forwarding/add-vault-forward-authentication"},{"openapi":"/openapi.v1.json PUT /vault-forward/configs/{config_id}/authentications/{authentication_id}","sidebarTitle":"Update authentication","title":null,"href":"/reference/vault-forwarding/update-vault-forward-authentication"},{"openapi":"/openapi.v1.json DELETE /vault-forward/configs/{config_id}/authentications/{authentication_id}","sidebarTitle":"Remove authentication","title":null,"href":"/reference/vault-forwarding/delete-vault-forward-authentication"}]}]},{"group":"Errors","pages":[{"title":"Client-side errors (4XX)","sidebarTitle":"Client errors","href":"/reference/errors/client-errors"},{"title":"Server-side errors (5XX)","sidebarTitle":"Server errors","href":"/reference/errors/server-errors"},{"openapi":"/openapi.v1.json GET /api-logs","title":"List 4XX errors","href":"/reference/logs/list-api-error-logs"}]},{"group":"Other","pages":[{"group":"Reports","pages":[{"openapi":"/openapi.speakeasy.json GET /reports","title":"List configured reports","href":"/reference/reports/list-reports"},{"openapi":"/openapi.speakeasy.json GET /reports/{report_id}","title":"Get a report","href":"/reference/reports/get-report"},{"openapi":"/openapi.speakeasy.json POST /reports","title":"Add a report","href":"/reference/reports/new-report"},{"openapi":"/openapi.speakeasy.json PUT /reports/{report_id}","title":"Update a report","href":"/reference/reports/update-report"}]},{"group":"Report executions","pages":[{"openapi":"/openapi.speakeasy.json GET /report-executions","title":"List executed reports","href":"/reference/reports/list-all-report-executions"},{"openapi":"/openapi.speakeasy.json GET /reports/{report_id}/executions","title":"List executions for report","href":"/reference/reports/list-executions-for-report"},{"openapi":"/openapi.speakeasy.json GET /report-executions/{report_execution_id}","title":"Get executed report","href":"/reference/reports/get-report-execution"},{"openapi":"/openapi.speakeasy.json POST /reports/{report_id}/executions/{report_execution_id}/url","title":"Create URL for executed report","href":"/reference/reports/generate-download-url"}]}]}]},{"tab":"Updates","hidden":true,"pages":[{"title":"Updates","href":"/updates"}]}]},"basePath":"","title":"Idempotent Requests - mattilda Pay","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}