[{"data":1,"prerenderedAt":203},["ShallowReactive",2],{"doc-\u002Fdocs\u002Ferrors":3},{"id":4,"title":5,"body":6,"description":194,"extension":195,"icon":196,"meta":197,"navigation":198,"order":93,"path":199,"seo":200,"stem":201,"__hash__":202},"docs\u002Fdocs\u002Ferrors.md","Errors and limits",{"type":7,"value":8,"toc":187},"minimark",[9,14,18,97,103,107,153,157,169,173,176,180,183],[10,11,13],"h2",{"id":12},"error-envelope","Error envelope",[15,16,17],"p",{},"Service errors use a compact JSON envelope:",[19,20,25],"pre",{"className":21,"code":22,"language":23,"meta":24,"style":24},"language-json shiki shiki-themes github-light github-dark","{\n  \"error\": {\n    \"message\": \"Human-readable summary\",\n    \"code\": \"MACHINE_READABLE_CODE\",\n    \"details\": {}\n  }\n}\n","json","",[26,27,28,37,47,63,76,85,91],"code",{"__ignoreMap":24},[29,30,33],"span",{"class":31,"line":32},"line",1,[29,34,36],{"class":35},"sVt8B","{\n",[29,38,40,44],{"class":31,"line":39},2,[29,41,43],{"class":42},"sj4cs","  \"error\"",[29,45,46],{"class":35},": {\n",[29,48,50,53,56,60],{"class":31,"line":49},3,[29,51,52],{"class":42},"    \"message\"",[29,54,55],{"class":35},": ",[29,57,59],{"class":58},"sZZnC","\"Human-readable summary\"",[29,61,62],{"class":35},",\n",[29,64,66,69,71,74],{"class":31,"line":65},4,[29,67,68],{"class":42},"    \"code\"",[29,70,55],{"class":35},[29,72,73],{"class":58},"\"MACHINE_READABLE_CODE\"",[29,75,62],{"class":35},[29,77,79,82],{"class":31,"line":78},5,[29,80,81],{"class":42},"    \"details\"",[29,83,84],{"class":35},": {}\n",[29,86,88],{"class":31,"line":87},6,[29,89,90],{"class":35},"  }\n",[29,92,94],{"class":31,"line":93},7,[29,95,96],{"class":35},"}\n",[15,98,99,100,102],{},"Do not parse the message. Branch on the HTTP status and stable ",[26,101,26],{}," when present.",[10,104,106],{"id":105},"common-statuses","Common statuses",[108,109,110,117,123,129,135,141,147],"ul",{},[111,112,113,116],"li",{},[26,114,115],{},"400"," — request validation failed. Correct the payload before retrying.",[111,118,119,122],{},[26,120,121],{},"402"," — payment is required or payment verification failed. Follow the x402 challenge.",[111,124,125,128],{},[26,126,127],{},"403"," — the target URL is blocked by policy. Do not retry the same URL.",[111,130,131,134],{},[26,132,133],{},"413"," — the upstream response exceeds the configured limit.",[111,136,137,140],{},[26,138,139],{},"429"," — the route's rate limit was exceeded. Respect retry headers and back off.",[111,142,143,146],{},[26,144,145],{},"502"," — a direct upstream fetch failed.",[111,148,149,152],{},[26,150,151],{},"503"," — a required upstream integration is unavailable or not configured.",[10,154,156],{"id":155},"retry-policy","Retry policy",[15,158,159,160,162,163,165,166,168],{},"Retry transient ",[26,161,139],{},", ",[26,164,145],{},", and ",[26,167,151],{}," responses with exponential backoff and jitter. Cap attempts,\npreserve payment identifiers, and avoid retrying validation or policy failures.",[10,170,172],{"id":171},"rate-limit-identity","Rate-limit identity",[15,174,175],{},"Paid traffic is limited by payment or wallet identity rather than relying only on source IP.\nIndividual routes can publish different limits. Limits protect upstream capacity and do not replace\nyour own concurrency controls.",[10,177,179],{"id":178},"observability","Observability",[15,181,182],{},"Responses include request correlation metadata where available. Preserve it in logs when reporting a\nfailure, but never log wallet private keys or full payment payloads.",[184,185,186],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":24,"searchDepth":39,"depth":39,"links":188},[189,190,191,192,193],{"id":12,"depth":39,"text":13},{"id":105,"depth":39,"text":106},{"id":155,"depth":39,"text":156},{"id":171,"depth":39,"text":172},{"id":178,"depth":39,"text":179},"Handle validation, payment, policy, upstream, and rate-limit failures predictably.","md","lucide:triangle-alert",{},true,"\u002Fdocs\u002Ferrors",{"title":5,"description":194},"docs\u002Ferrors","e97fJE2ixMjyHAy3TOZ5FglhfPVrCX8yXi44fN_mgiQ",1787093955740]