[{"data":1,"prerenderedAt":544},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-errors-and-retries":55,"-getting-started-errors-and-retries-surround":539},[4,30],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,13,17,21,25],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Authentication","\u002Fgetting-started\u002Fauthentication","1.getting-started\u002F2.authentication",{"title":18,"path":19,"stem":20},"Concepts","\u002Fgetting-started\u002Fconcepts","1.getting-started\u002F3.concepts",{"title":22,"path":23,"stem":24},"Order keys","\u002Fgetting-started\u002Forder-keys","1.getting-started\u002F4.order-keys",{"title":26,"path":27,"stem":28},"Errors and retries","\u002Fgetting-started\u002Ferrors-and-retries","1.getting-started\u002F5.errors-and-retries",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"API","\u002Fapi","2.api",[35,39,43,47,51],{"title":36,"path":37,"stem":38},"Create order","\u002Fapi\u002Fcreate-order","2.api\u002F1.create-order",{"title":40,"path":41,"stem":42},"Fetch printers","\u002Fapi\u002Ffetch-printers","2.api\u002F2.fetch-printers",{"title":44,"path":45,"stem":46},"Print orders","\u002Fapi\u002Fprint-orders","2.api\u002F3.print-orders",{"title":48,"path":49,"stem":50},"Fetch order PDF","\u002Fapi\u002Ffetch-order-pdf","2.api\u002F4.fetch-order-pdf",{"title":52,"path":53,"stem":54},"Links","\u002Fapi\u002Flinks","2.api\u002F5.links",{"id":56,"title":26,"body":57,"description":533,"extension":534,"links":535,"meta":536,"navigation":400,"path":27,"seo":537,"stem":28,"__hash__":538},"docs\u002F1.getting-started\u002F5.errors-and-retries.md",{"type":58,"value":59,"toc":528},"minimark",[60,64,68,73,158,162,173,193,197,524],[61,62,26],"h1",{"id":63},"errors-and-retries",[65,66,67],"p",{},"Yuzu uses standard HTTP status codes. Error bodies include a message or validation details when available.",[69,70,72],"h2",{"id":71},"status-codes","Status codes",[74,75,76,89],"table",{},[77,78,79],"thead",{},[80,81,82,86],"tr",{},[83,84,85],"th",{},"Status",[83,87,88],{},"What to do",[90,91,92,104,118,128,138,148],"tbody",{},[80,93,94,101],{},[95,96,97],"td",{},[98,99,100],"code",{},"400",[95,102,103],{},"Fix the request body or query parameters. Do not retry unchanged.",[80,105,106,111],{},[95,107,108],{},[98,109,110],{},"401",[95,112,113,114,117],{},"Check the ",[98,115,116],{},"X-API-Key"," header and key status.",[80,119,120,125],{},[95,121,122],{},[98,123,124],{},"403",[95,126,127],{},"Check that the key belongs to the expected team.",[80,129,130,135],{},[95,131,132],{},[98,133,134],{},"404",[95,136,137],{},"Check the order ID, order key, printer, or template reference.",[80,139,140,145],{},[95,141,142],{},[98,143,144],{},"429",[95,146,147],{},"Retry with exponential backoff and jitter.",[80,149,150,155],{},[95,151,152],{},[98,153,154],{},"5xx",[95,156,157],{},"Retry with backoff. Contact Yuzu if it continues.",[69,159,161],{"id":160},"retry-safely","Retry safely",[65,163,164,165,168,169,172],{},"Create-order retries are safe when you reuse the same ",[98,166,167],{},"source"," and ",[98,170,171],{},"sourceId",". Yuzu uses those values as the order identity, so a repeated request updates the existing order instead of creating a duplicate.",[65,174,175,176,178,179,181,182,185,186,178,189,192],{},"For print requests, retry only when you did not receive a response or received ",[98,177,144],{}," or ",[98,180,154],{},". If a print request returns ",[98,183,184],{},"200",", inspect the response array: individual batches can still have ",[98,187,188],{},"warning",[98,190,191],{},"error"," statuses.",[69,194,196],{"id":195},"backoff-example","Backoff example",[198,199,204],"pre",{"className":200,"code":201,"language":202,"meta":203,"style":203},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","async function requestWithRetry(url: string, options: RequestInit) {\n  for (let attempt = 0; attempt \u003C 4; attempt++) {\n    const response = await fetch(url, options)\n    if (![429, 500, 502, 503, 504].includes(response.status)) return response\n\n    const delayMs = (2 ** attempt) * 1000 + Math.random() * 500\n    await new Promise(resolve => setTimeout(resolve, delayMs))\n  }\n\n  throw new Error('Yuzu request failed after retries')\n}\n","ts","",[98,205,206,254,303,331,395,402,449,483,489,494,518],{"__ignoreMap":203},[207,208,211,215,218,222,226,230,233,237,240,243,245,248,251],"span",{"class":209,"line":210},"line",1,[207,212,214],{"class":213},"spNyl","async",[207,216,217],{"class":213}," function",[207,219,221],{"class":220},"s2Zo4"," requestWithRetry",[207,223,225],{"class":224},"sMK4o","(",[207,227,229],{"class":228},"sHdIc","url",[207,231,232],{"class":224},":",[207,234,236],{"class":235},"sBMFI"," string",[207,238,239],{"class":224},",",[207,241,242],{"class":228}," options",[207,244,232],{"class":224},[207,246,247],{"class":235}," RequestInit",[207,249,250],{"class":224},")",[207,252,253],{"class":224}," {\n",[207,255,257,261,265,268,272,275,279,282,284,287,290,292,294,297,300],{"class":209,"line":256},2,[207,258,260],{"class":259},"s7zQu","  for",[207,262,264],{"class":263},"swJcz"," (",[207,266,267],{"class":213},"let",[207,269,271],{"class":270},"sTEyZ"," attempt",[207,273,274],{"class":224}," =",[207,276,278],{"class":277},"sbssI"," 0",[207,280,281],{"class":224},";",[207,283,271],{"class":270},[207,285,286],{"class":224}," \u003C",[207,288,289],{"class":277}," 4",[207,291,281],{"class":224},[207,293,271],{"class":270},[207,295,296],{"class":224},"++",[207,298,299],{"class":263},") ",[207,301,302],{"class":224},"{\n",[207,304,306,309,312,314,317,320,322,324,326,328],{"class":209,"line":305},3,[207,307,308],{"class":213},"    const",[207,310,311],{"class":270}," response",[207,313,274],{"class":224},[207,315,316],{"class":259}," await",[207,318,319],{"class":220}," fetch",[207,321,225],{"class":263},[207,323,229],{"class":270},[207,325,239],{"class":224},[207,327,242],{"class":270},[207,329,330],{"class":263},")\n",[207,332,334,337,339,342,345,347,349,352,354,357,359,362,364,367,370,373,376,378,381,383,386,389,392],{"class":209,"line":333},4,[207,335,336],{"class":259},"    if",[207,338,264],{"class":263},[207,340,341],{"class":224},"!",[207,343,344],{"class":263},"[",[207,346,144],{"class":277},[207,348,239],{"class":224},[207,350,351],{"class":277}," 500",[207,353,239],{"class":224},[207,355,356],{"class":277}," 502",[207,358,239],{"class":224},[207,360,361],{"class":277}," 503",[207,363,239],{"class":224},[207,365,366],{"class":277}," 504",[207,368,369],{"class":263},"]",[207,371,372],{"class":224},".",[207,374,375],{"class":220},"includes",[207,377,225],{"class":263},[207,379,380],{"class":270},"response",[207,382,372],{"class":224},[207,384,385],{"class":270},"status",[207,387,388],{"class":263},")) ",[207,390,391],{"class":259},"return",[207,393,394],{"class":270}," response\n",[207,396,398],{"class":209,"line":397},5,[207,399,401],{"emptyLinePlaceholder":400},true,"\n",[207,403,405,407,410,412,414,417,420,422,424,427,430,433,436,438,441,444,446],{"class":209,"line":404},6,[207,406,308],{"class":213},[207,408,409],{"class":270}," delayMs",[207,411,274],{"class":224},[207,413,264],{"class":263},[207,415,416],{"class":277},"2",[207,418,419],{"class":224}," **",[207,421,271],{"class":270},[207,423,299],{"class":263},[207,425,426],{"class":224},"*",[207,428,429],{"class":277}," 1000",[207,431,432],{"class":224}," +",[207,434,435],{"class":270}," Math",[207,437,372],{"class":224},[207,439,440],{"class":220},"random",[207,442,443],{"class":263},"() ",[207,445,426],{"class":224},[207,447,448],{"class":277}," 500\n",[207,450,452,455,458,461,463,466,469,472,474,476,478,480],{"class":209,"line":451},7,[207,453,454],{"class":259},"    await",[207,456,457],{"class":224}," new",[207,459,460],{"class":235}," Promise",[207,462,225],{"class":263},[207,464,465],{"class":228},"resolve",[207,467,468],{"class":213}," =>",[207,470,471],{"class":220}," setTimeout",[207,473,225],{"class":263},[207,475,465],{"class":270},[207,477,239],{"class":224},[207,479,409],{"class":270},[207,481,482],{"class":263},"))\n",[207,484,486],{"class":209,"line":485},8,[207,487,488],{"class":224},"  }\n",[207,490,492],{"class":209,"line":491},9,[207,493,401],{"emptyLinePlaceholder":400},[207,495,497,500,502,505,507,510,514,516],{"class":209,"line":496},10,[207,498,499],{"class":259},"  throw",[207,501,457],{"class":224},[207,503,504],{"class":220}," Error",[207,506,225],{"class":263},[207,508,509],{"class":224},"'",[207,511,513],{"class":512},"sfazB","Yuzu request failed after retries",[207,515,509],{"class":224},[207,517,330],{"class":263},[207,519,521],{"class":209,"line":520},11,[207,522,523],{"class":224},"}\n",[525,526,527],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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":203,"searchDepth":256,"depth":256,"links":529},[530,531,532],{"id":71,"depth":256,"text":72},{"id":160,"depth":256,"text":161},{"id":195,"depth":256,"text":196},"Handle Yuzu API failures safely.","md",null,{},{"title":26,"description":533},"aRrcYbp-RbGk-3ftl6BDeIZ55w9Zli8O4muRS6CDpqo",[540,542],{"title":22,"path":23,"stem":24,"description":541,"children":-1},"Understand source IDs and stable order identifiers.",{"title":36,"path":37,"stem":38,"description":543,"children":-1},"Create an order in Yuzu.",1780070563195]