[{"data":1,"prerenderedAt":2153},["ShallowReactive",2],{"docs-navigation":3,"doc-\u002Fdocs\u002Fexamples":60},[4,8,12,16,20,24,28,32,36,40,44,48,52,56],{"path":5,"title":6,"description":7},"\u002Fdocs\u002Fquickstart","Quickstart","Read both sides of an INE from your backend and receive structured JSON.",{"path":9,"title":10,"description":11},"\u002Fdocs\u002Fauthentication","Authentication","Keep company API keys on the server and separate them from dashboard access.",{"path":13,"title":14,"description":15},"\u002Fdocs\u002Fcreate-reading","Create a reading","Submit one front and back pair with a stable idempotency key.",{"path":17,"title":18,"description":19},"\u002Fdocs\u002Fretrieve-result","Retrieve a result","Read an existing job without repeating extraction or consuming another unit.",{"path":21,"title":22,"description":23},"\u002Fdocs\u002Fresponse-fields","Response fields","Choose the standard or extended response and use literal fields with review warnings.",{"path":25,"title":26,"description":27},"\u002Fdocs\u002Ferrors-and-retries","Errors and retries","Recover from errors without accidentally creating another charged reading.",{"path":29,"title":30,"description":31},"\u002Fdocs\u002Flimits-and-billing","Limits and billing","Plan allowances, shared admission limits and how reading units are counted.",{"path":33,"title":34,"description":35},"\u002Fdocs\u002Fprivacy-and-security","Privacy and security","Understand result retention, access controls and your backend's responsibilities.",{"path":37,"title":38,"description":39},"\u002Fdocs\u002Fexamples","Integration examples","Copyable server-side Node.js, Python and cURL examples with one POST per attempt.",{"path":41,"title":42,"description":43},"\u002Fdocs\u002Fdashboard","Dashboard usage","View your company's quota and request counts without exposing OCR data.",{"path":45,"title":46,"description":47},"\u002Fdocs\u002Fextended-reading","Extended extraction","Opt in to printed fields, separated address components, provenance and review checks.",{"path":49,"title":50,"description":51},"\u002Fdocs\u002Fwebhooks","Completion webhooks","Receive signed completion events without exposing OCR data in callbacks.",{"path":53,"title":54,"description":55},"\u002Fdocs\u002Fevaluation","Evaluation and limitations","Measured illustration results, remaining errors, and the limits of the extended profile.",{"path":57,"title":58,"description":59},"\u002Fdocs\u002Faddress-parts","Address parts","Use separate address inputs while retaining literal OCR and exact text sources.",{"id":61,"title":38,"body":62,"description":39,"extension":2146,"meta":2147,"navigation":2148,"path":37,"seo":2150,"stem":2151,"__hash__":2152},"docs\u002Fdocs\u002F09.examples.md",{"type":63,"value":64,"toc":2140},"minimark",[65,78,94,99,114,385,402,412,416,422,1715,1728,1732,1735,1853,1860,1928,1942,1946,1949,1960,2091,2112,2126,2136],[66,67,68,69,73,74,77],"p",{},"These examples send one POST. They do not generate an idempotency key, retry POST automatically, follow redirects or print extracted data. Set ",[70,71,72],"code",{},"INE_API_KEY"," and a saved ",[70,75,76],{},"INE_IDEMPOTENCY_KEY"," in your server environment before running them.",[66,79,80,81,84,85,88,89,93],{},"If the request returns ",[70,82,83],{},"202",", use the same company's key for GET after ",[70,86,87],{},"Retry-After",". If it times out, preserve the same key and exact image bytes; the outcome is unconfirmed. See ",[90,91,92],"a",{"href":25},"errors and retries",".",[95,96,98],"h2",{"id":97},"nodejs-22","Node.js 22+",[66,100,101,102,105,106,109,110,113],{},"Save this as ",[70,103,104],{},"ine-request.mjs",". It uses native APIs and needs no SDK or package installation. The example assumes ",[70,107,108],{},"front.jpg"," and ",[70,111,112],{},"back.jpg"," are actual JPEG files.",[115,116,121],"pre",{"className":117,"code":118,"language":119,"meta":120,"style":120},"language-js shiki shiki-themes material-theme-lighter github-light github-light","import { readFile } from 'node:fs\u002Fpromises';\n\nconst apiKey = process.env.INE_API_KEY;\nconst transactionKey = process.env.INE_IDEMPOTENCY_KEY;\nif (!apiKey) throw new Error('Set INE_API_KEY on the server.');\nif (!\u002F^[A-Za-z0-9._:-]{8,128}$\u002F.test(transactionKey || '')) {\n  throw new Error('Set a saved, stable INE_IDEMPOTENCY_KEY.');\n}\n\nconst form = new FormData();\nfor (const side of ['front', 'back']) {\n  const bytes = await readFile(`${side}.jpg`);\n  form.set(side, new Blob([bytes], { type: 'image\u002Fjpeg' }), `${side}.jpg`);\n}\n\nlet response;\ntry {\n  response = await fetch('https:\u002F\u002Focr.ecostudios.dev\u002Fapi\u002Fv3\u002Fine', {\n    method: 'POST',\n    headers: {\n      'X-API-Key': apiKey,\n      'Idempotency-Key': transactionKey,\n      Accept: 'application\u002Fjson',\n      'User-Agent': 'ine-api-backend-example\u002F1.0',\n    },\n    body: form,\n    redirect: 'manual',\n    signal: AbortSignal.timeout(90_000),\n  });\n} catch {\n  throw new Error('Outcome unconfirmed. Keep the same transaction key and images.');\n}\n\nconst result = await response.json().catch(() => null);\nconsole.log(JSON.stringify({\n  http_status: response.status,\n  request_id: result?.request_id ?? response.headers.get('x-request-id'),\n  status: result?.status,\n  error_code: result?.error?.code,\n  action: result?.error?.action,\n  retry_after: response.headers.get('retry-after'),\n}));\n\u002F\u002F Consume result.data privately when HTTP 200 and status is succeeded.\n\u002F\u002F Do not log the entire response or automatically resubmit it.\n","js","",[70,122,123,131,138,144,150,156,162,168,174,179,185,191,197,203,208,213,219,225,231,237,243,249,255,261,267,273,279,285,291,297,303,309,314,319,325,331,337,343,349,355,361,367,373,379],{"__ignoreMap":120},[124,125,128],"span",{"class":126,"line":127},"line",1,[124,129,130],{},"import { readFile } from 'node:fs\u002Fpromises';\n",[124,132,134],{"class":126,"line":133},2,[124,135,137],{"emptyLinePlaceholder":136},true,"\n",[124,139,141],{"class":126,"line":140},3,[124,142,143],{},"const apiKey = process.env.INE_API_KEY;\n",[124,145,147],{"class":126,"line":146},4,[124,148,149],{},"const transactionKey = process.env.INE_IDEMPOTENCY_KEY;\n",[124,151,153],{"class":126,"line":152},5,[124,154,155],{},"if (!apiKey) throw new Error('Set INE_API_KEY on the server.');\n",[124,157,159],{"class":126,"line":158},6,[124,160,161],{},"if (!\u002F^[A-Za-z0-9._:-]{8,128}$\u002F.test(transactionKey || '')) {\n",[124,163,165],{"class":126,"line":164},7,[124,166,167],{},"  throw new Error('Set a saved, stable INE_IDEMPOTENCY_KEY.');\n",[124,169,171],{"class":126,"line":170},8,[124,172,173],{},"}\n",[124,175,177],{"class":126,"line":176},9,[124,178,137],{"emptyLinePlaceholder":136},[124,180,182],{"class":126,"line":181},10,[124,183,184],{},"const form = new FormData();\n",[124,186,188],{"class":126,"line":187},11,[124,189,190],{},"for (const side of ['front', 'back']) {\n",[124,192,194],{"class":126,"line":193},12,[124,195,196],{},"  const bytes = await readFile(`${side}.jpg`);\n",[124,198,200],{"class":126,"line":199},13,[124,201,202],{},"  form.set(side, new Blob([bytes], { type: 'image\u002Fjpeg' }), `${side}.jpg`);\n",[124,204,206],{"class":126,"line":205},14,[124,207,173],{},[124,209,211],{"class":126,"line":210},15,[124,212,137],{"emptyLinePlaceholder":136},[124,214,216],{"class":126,"line":215},16,[124,217,218],{},"let response;\n",[124,220,222],{"class":126,"line":221},17,[124,223,224],{},"try {\n",[124,226,228],{"class":126,"line":227},18,[124,229,230],{},"  response = await fetch('https:\u002F\u002Focr.ecostudios.dev\u002Fapi\u002Fv3\u002Fine', {\n",[124,232,234],{"class":126,"line":233},19,[124,235,236],{},"    method: 'POST',\n",[124,238,240],{"class":126,"line":239},20,[124,241,242],{},"    headers: {\n",[124,244,246],{"class":126,"line":245},21,[124,247,248],{},"      'X-API-Key': apiKey,\n",[124,250,252],{"class":126,"line":251},22,[124,253,254],{},"      'Idempotency-Key': transactionKey,\n",[124,256,258],{"class":126,"line":257},23,[124,259,260],{},"      Accept: 'application\u002Fjson',\n",[124,262,264],{"class":126,"line":263},24,[124,265,266],{},"      'User-Agent': 'ine-api-backend-example\u002F1.0',\n",[124,268,270],{"class":126,"line":269},25,[124,271,272],{},"    },\n",[124,274,276],{"class":126,"line":275},26,[124,277,278],{},"    body: form,\n",[124,280,282],{"class":126,"line":281},27,[124,283,284],{},"    redirect: 'manual',\n",[124,286,288],{"class":126,"line":287},28,[124,289,290],{},"    signal: AbortSignal.timeout(90_000),\n",[124,292,294],{"class":126,"line":293},29,[124,295,296],{},"  });\n",[124,298,300],{"class":126,"line":299},30,[124,301,302],{},"} catch {\n",[124,304,306],{"class":126,"line":305},31,[124,307,308],{},"  throw new Error('Outcome unconfirmed. Keep the same transaction key and images.');\n",[124,310,312],{"class":126,"line":311},32,[124,313,173],{},[124,315,317],{"class":126,"line":316},33,[124,318,137],{"emptyLinePlaceholder":136},[124,320,322],{"class":126,"line":321},34,[124,323,324],{},"const result = await response.json().catch(() => null);\n",[124,326,328],{"class":126,"line":327},35,[124,329,330],{},"console.log(JSON.stringify({\n",[124,332,334],{"class":126,"line":333},36,[124,335,336],{},"  http_status: response.status,\n",[124,338,340],{"class":126,"line":339},37,[124,341,342],{},"  request_id: result?.request_id ?? response.headers.get('x-request-id'),\n",[124,344,346],{"class":126,"line":345},38,[124,347,348],{},"  status: result?.status,\n",[124,350,352],{"class":126,"line":351},39,[124,353,354],{},"  error_code: result?.error?.code,\n",[124,356,358],{"class":126,"line":357},40,[124,359,360],{},"  action: result?.error?.action,\n",[124,362,364],{"class":126,"line":363},41,[124,365,366],{},"  retry_after: response.headers.get('retry-after'),\n",[124,368,370],{"class":126,"line":369},42,[124,371,372],{},"}));\n",[124,374,376],{"class":126,"line":375},43,[124,377,378],{},"\u002F\u002F Consume result.data privately when HTTP 200 and status is succeeded.\n",[124,380,382],{"class":126,"line":381},44,[124,383,384],{},"\u002F\u002F Do not log the entire response or automatically resubmit it.\n",[115,386,390],{"className":387,"code":388,"language":389,"meta":120,"style":120},"language-bash shiki shiki-themes material-theme-lighter github-light github-light","node ine-request.mjs\n","bash",[70,391,392],{"__ignoreMap":120},[124,393,394,398],{"class":126,"line":127},[124,395,397],{"class":396},"sDrxt","node",[124,399,401],{"class":400},"sN0tt"," ine-request.mjs\n",[66,403,404,405,408,409,411],{},"A response outside the expected ",[70,406,407],{},"200","\u002F",[70,410,83],{}," envelopes needs explicit error handling, including non-JSON responses from the network edge. A redirect is not followed and must not be treated as success.",[95,413,415],{"id":414},"python-310","Python 3.10+",[66,417,101,418,421],{},[70,419,420],{},"ine_request.py",". It uses only the standard library. The random multipart boundary is transport formatting, not a new transaction key.",[115,423,427],{"className":424,"code":425,"language":426,"meta":120,"style":120},"language-python shiki shiki-themes material-theme-lighter github-light github-light","import json\nimport os\nimport re\nfrom pathlib import Path\nfrom urllib.error import HTTPError, URLError\nfrom urllib.request import HTTPRedirectHandler, Request, build_opener\nfrom uuid import uuid4\n\napi_key = os.environ.get('INE_API_KEY')\ntransaction_key = os.environ.get('INE_IDEMPOTENCY_KEY', '')\nif not api_key or not re.fullmatch(r'[A-Za-z0-9._:-]{8,128}', transaction_key):\n    raise SystemExit('Set the server API key and a saved transaction key.')\n\nclass NoRedirects(HTTPRedirectHandler):\n    def redirect_request(self, req, fp, code, msg, headers, newurl):\n        return None\n\nboundary = 'ine-upload-' + uuid4().hex\nparts = []\nfor side in ('front', 'back'):\n    parts.extend([\n        (f'--{boundary}\\r\\nContent-Disposition: form-data; '\n         f'name=\"{side}\"; filename=\"{side}.jpg\"\\r\\n'\n         'Content-Type: image\u002Fjpeg\\r\\n\\r\\n').encode(),\n        Path(f'{side}.jpg').read_bytes(), b'\\r\\n',\n    ])\nparts.append(f'--{boundary}--\\r\\n'.encode())\nrequest = Request(\n    'https:\u002F\u002Focr.ecostudios.dev\u002Fapi\u002Fv3\u002Fine',\n    data=b''.join(parts), method='POST',\n    headers={\n        'X-API-Key': api_key,\n        'Idempotency-Key': transaction_key,\n        'Content-Type': f'multipart\u002Fform-data; boundary={boundary}',\n        'Accept': 'application\u002Fjson',\n        'User-Agent': 'ine-api-backend-example\u002F1.0',\n    },\n)\ntry:\n    try:\n        response = build_opener(NoRedirects()).open(request, timeout=90)\n    except HTTPError as error:\n        response = error\n    with response:\n        status = response.status\n        headers = response.headers\n        try:\n            result = json.loads(response.read(128 * 1024))\n        except ValueError:\n            result = {}\nexcept (URLError, TimeoutError, OSError):\n    raise SystemExit('Outcome unconfirmed. Keep the same transaction key and images.')\n\nif not isinstance(result, dict):\n    result = {}\nerror = result.get('error')\nerror = error if isinstance(error, dict) else {}\nprint(json.dumps({\n    'http_status': status,\n    'request_id': result.get('request_id') or headers.get('x-request-id'),\n    'status': result.get('status'),\n    'error_code': error.get('code'),\n    'action': error.get('action'),\n    'retry_after': headers.get('retry-after'),\n}))\n# Consume result['data'] privately only for a succeeded HTTP 200 response.\n","python",[70,428,429,439,446,453,466,490,516,528,532,570,602,658,678,682,697,745,753,757,784,794,826,839,867,899,921,961,966,1002,1013,1025,1065,1075,1093,1108,1135,1155,1175,1179,1183,1191,1198,1236,1252,1261,1271,1286,1301,1309,1349,1360,1370,1393,1411,1416,1439,1449,1474,1504,1523,1540,1589,1617,1645,1673,1702,1708],{"__ignoreMap":120},[124,430,431,435],{"class":126,"line":127},[124,432,434],{"class":433},"sFVAW","import",[124,436,438],{"class":437},"sQha-"," json\n",[124,440,441,443],{"class":126,"line":133},[124,442,434],{"class":433},[124,444,445],{"class":437}," os\n",[124,447,448,450],{"class":126,"line":140},[124,449,434],{"class":433},[124,451,452],{"class":437}," re\n",[124,454,455,458,461,463],{"class":126,"line":146},[124,456,457],{"class":433},"from",[124,459,460],{"class":437}," pathlib ",[124,462,434],{"class":433},[124,464,465],{"class":437}," Path\n",[124,467,468,470,473,476,479,481,484,487],{"class":126,"line":152},[124,469,457],{"class":433},[124,471,472],{"class":437}," urllib",[124,474,93],{"class":475},"sYEpm",[124,477,478],{"class":437},"error ",[124,480,434],{"class":433},[124,482,483],{"class":437}," HTTPError",[124,485,486],{"class":475},",",[124,488,489],{"class":437}," URLError\n",[124,491,492,494,496,498,501,503,506,508,511,513],{"class":126,"line":158},[124,493,457],{"class":433},[124,495,472],{"class":437},[124,497,93],{"class":475},[124,499,500],{"class":437},"request ",[124,502,434],{"class":433},[124,504,505],{"class":437}," HTTPRedirectHandler",[124,507,486],{"class":475},[124,509,510],{"class":437}," Request",[124,512,486],{"class":475},[124,514,515],{"class":437}," build_opener\n",[124,517,518,520,523,525],{"class":126,"line":164},[124,519,457],{"class":433},[124,521,522],{"class":437}," uuid ",[124,524,434],{"class":433},[124,526,527],{"class":437}," uuid4\n",[124,529,530],{"class":126,"line":170},[124,531,137],{"emptyLinePlaceholder":136},[124,533,534,537,541,544,546,550,552,556,559,563,565,567],{"class":126,"line":176},[124,535,536],{"class":437},"api_key ",[124,538,540],{"class":539},"shItv","=",[124,542,543],{"class":437}," os",[124,545,93],{"class":475},[124,547,549],{"class":548},"s_2Mu","environ",[124,551,93],{"class":475},[124,553,555],{"class":554},"sHAvI","get",[124,557,558],{"class":475},"(",[124,560,562],{"class":561},"sU42L","'",[124,564,72],{"class":400},[124,566,562],{"class":561},[124,568,569],{"class":475},")\n",[124,571,572,575,577,579,581,583,585,587,589,591,593,595,597,600],{"class":126,"line":181},[124,573,574],{"class":437},"transaction_key ",[124,576,540],{"class":539},[124,578,543],{"class":437},[124,580,93],{"class":475},[124,582,549],{"class":548},[124,584,93],{"class":475},[124,586,555],{"class":554},[124,588,558],{"class":475},[124,590,562],{"class":561},[124,592,76],{"class":400},[124,594,562],{"class":561},[124,596,486],{"class":475},[124,598,599],{"class":561}," ''",[124,601,569],{"class":475},[124,603,604,607,610,613,616,618,621,623,626,628,632,634,638,642,645,648,650,652,655],{"class":126,"line":187},[124,605,606],{"class":433},"if",[124,608,609],{"class":539}," not",[124,611,612],{"class":437}," api_key ",[124,614,615],{"class":539},"or",[124,617,609],{"class":539},[124,619,620],{"class":437}," re",[124,622,93],{"class":475},[124,624,625],{"class":554},"fullmatch",[124,627,558],{"class":475},[124,629,631],{"class":630},"sFYCz","r",[124,633,562],{"class":561},[124,635,637],{"class":636},"s4hL5","[",[124,639,641],{"class":640},"s3mjZ","A-Za-z0-9._:-",[124,643,644],{"class":636},"]",[124,646,647],{"class":539},"{8,128}",[124,649,562],{"class":561},[124,651,486],{"class":475},[124,653,654],{"class":554}," transaction_key",[124,656,657],{"class":475},"):\n",[124,659,660,663,667,669,671,674,676],{"class":126,"line":193},[124,661,662],{"class":433},"    raise",[124,664,666],{"class":665},"s2tOn"," SystemExit",[124,668,558],{"class":475},[124,670,562],{"class":561},[124,672,673],{"class":400},"Set the server API key and a saved transaction key.",[124,675,562],{"class":561},[124,677,569],{"class":475},[124,679,680],{"class":126,"line":199},[124,681,137],{"emptyLinePlaceholder":136},[124,683,684,687,690,692,695],{"class":126,"line":205},[124,685,686],{"class":630},"class",[124,688,689],{"class":396}," NoRedirects",[124,691,558],{"class":475},[124,693,694],{"class":396},"HTTPRedirectHandler",[124,696,657],{"class":475},[124,698,699,702,706,708,712,714,718,720,723,725,728,730,733,735,738,740,743],{"class":126,"line":210},[124,700,701],{"class":630},"    def",[124,703,705],{"class":704},"smm3R"," redirect_request",[124,707,558],{"class":475},[124,709,711],{"class":710},"sukZL","self",[124,713,486],{"class":475},[124,715,717],{"class":716},"sNv6i"," req",[124,719,486],{"class":475},[124,721,722],{"class":716}," fp",[124,724,486],{"class":475},[124,726,727],{"class":716}," code",[124,729,486],{"class":475},[124,731,732],{"class":716}," msg",[124,734,486],{"class":475},[124,736,737],{"class":716}," headers",[124,739,486],{"class":475},[124,741,742],{"class":716}," newurl",[124,744,657],{"class":475},[124,746,747,750],{"class":126,"line":215},[124,748,749],{"class":433},"        return",[124,751,752],{"class":636}," None\n",[124,754,755],{"class":126,"line":221},[124,756,137],{"emptyLinePlaceholder":136},[124,758,759,762,764,767,770,772,775,778,781],{"class":126,"line":227},[124,760,761],{"class":437},"boundary ",[124,763,540],{"class":539},[124,765,766],{"class":561}," '",[124,768,769],{"class":400},"ine-upload-",[124,771,562],{"class":561},[124,773,774],{"class":539}," +",[124,776,777],{"class":554}," uuid4",[124,779,780],{"class":475},"().",[124,782,783],{"class":548},"hex\n",[124,785,786,789,791],{"class":126,"line":233},[124,787,788],{"class":437},"parts ",[124,790,540],{"class":539},[124,792,793],{"class":475}," []\n",[124,795,796,799,802,805,808,810,813,815,817,819,822,824],{"class":126,"line":239},[124,797,798],{"class":433},"for",[124,800,801],{"class":437}," side ",[124,803,804],{"class":433},"in",[124,806,807],{"class":475}," (",[124,809,562],{"class":561},[124,811,812],{"class":400},"front",[124,814,562],{"class":561},[124,816,486],{"class":475},[124,818,766],{"class":561},[124,820,821],{"class":400},"back",[124,823,562],{"class":561},[124,825,657],{"class":475},[124,827,828,831,833,836],{"class":126,"line":245},[124,829,830],{"class":437},"    parts",[124,832,93],{"class":475},[124,834,835],{"class":554},"extend",[124,837,838],{"class":475},"([\n",[124,840,841,844,847,850,854,857,860,864],{"class":126,"line":251},[124,842,843],{"class":475},"        (",[124,845,846],{"class":630},"f",[124,848,849],{"class":400},"'--",[124,851,853],{"class":852},"szT0U","{",[124,855,856],{"class":554},"boundary",[124,858,859],{"class":852},"}",[124,861,863],{"class":862},"sitYm","\\r\\n",[124,865,866],{"class":400},"Content-Disposition: form-data; '\n",[124,868,869,872,875,877,880,882,885,887,889,891,894,896],{"class":126,"line":257},[124,870,871],{"class":630},"         f",[124,873,874],{"class":400},"'name=\"",[124,876,853],{"class":852},[124,878,879],{"class":554},"side",[124,881,859],{"class":852},[124,883,884],{"class":400},"\"; filename=\"",[124,886,853],{"class":852},[124,888,879],{"class":554},[124,890,859],{"class":852},[124,892,893],{"class":400},".jpg\"",[124,895,863],{"class":862},[124,897,898],{"class":400},"'\n",[124,900,901,904,907,910,912,915,918],{"class":126,"line":263},[124,902,903],{"class":561},"         '",[124,905,906],{"class":400},"Content-Type: image\u002Fjpeg",[124,908,909],{"class":862},"\\r\\n\\r\\n",[124,911,562],{"class":561},[124,913,914],{"class":475},").",[124,916,917],{"class":554},"encode",[124,919,920],{"class":475},"(),\n",[124,922,923,926,928,930,932,934,936,938,941,943,946,949,952,954,956,958],{"class":126,"line":269},[124,924,925],{"class":554},"        Path",[124,927,558],{"class":475},[124,929,846],{"class":630},[124,931,562],{"class":400},[124,933,853],{"class":852},[124,935,879],{"class":554},[124,937,859],{"class":852},[124,939,940],{"class":400},".jpg'",[124,942,914],{"class":475},[124,944,945],{"class":554},"read_bytes",[124,947,948],{"class":475},"(),",[124,950,951],{"class":630}," b",[124,953,562],{"class":561},[124,955,863],{"class":862},[124,957,562],{"class":561},[124,959,960],{"class":475},",\n",[124,962,963],{"class":126,"line":275},[124,964,965],{"class":475},"    ])\n",[124,967,968,971,973,976,978,980,982,984,986,988,991,993,995,997,999],{"class":126,"line":281},[124,969,970],{"class":437},"parts",[124,972,93],{"class":475},[124,974,975],{"class":554},"append",[124,977,558],{"class":475},[124,979,846],{"class":630},[124,981,849],{"class":400},[124,983,853],{"class":852},[124,985,856],{"class":554},[124,987,859],{"class":852},[124,989,990],{"class":400},"--",[124,992,863],{"class":862},[124,994,562],{"class":400},[124,996,93],{"class":475},[124,998,917],{"class":554},[124,1000,1001],{"class":475},"())\n",[124,1003,1004,1006,1008,1010],{"class":126,"line":287},[124,1005,500],{"class":437},[124,1007,540],{"class":539},[124,1009,510],{"class":554},[124,1011,1012],{"class":475},"(\n",[124,1014,1015,1018,1021,1023],{"class":126,"line":293},[124,1016,1017],{"class":561},"    '",[124,1019,1020],{"class":400},"https:\u002F\u002Focr.ecostudios.dev\u002Fapi\u002Fv3\u002Fine",[124,1022,562],{"class":561},[124,1024,960],{"class":475},[124,1026,1027,1031,1033,1036,1039,1041,1044,1046,1048,1051,1054,1056,1058,1061,1063],{"class":126,"line":299},[124,1028,1030],{"class":1029},"sHhPD","    data",[124,1032,540],{"class":539},[124,1034,1035],{"class":630},"b",[124,1037,1038],{"class":561},"''",[124,1040,93],{"class":475},[124,1042,1043],{"class":554},"join",[124,1045,558],{"class":475},[124,1047,970],{"class":554},[124,1049,1050],{"class":475},"),",[124,1052,1053],{"class":1029}," method",[124,1055,540],{"class":539},[124,1057,562],{"class":561},[124,1059,1060],{"class":400},"POST",[124,1062,562],{"class":561},[124,1064,960],{"class":475},[124,1066,1067,1070,1072],{"class":126,"line":305},[124,1068,1069],{"class":1029},"    headers",[124,1071,540],{"class":539},[124,1073,1074],{"class":475},"{\n",[124,1076,1077,1080,1083,1085,1088,1091],{"class":126,"line":311},[124,1078,1079],{"class":561},"        '",[124,1081,1082],{"class":400},"X-API-Key",[124,1084,562],{"class":561},[124,1086,1087],{"class":475},":",[124,1089,1090],{"class":554}," api_key",[124,1092,960],{"class":475},[124,1094,1095,1097,1100,1102,1104,1106],{"class":126,"line":316},[124,1096,1079],{"class":561},[124,1098,1099],{"class":400},"Idempotency-Key",[124,1101,562],{"class":561},[124,1103,1087],{"class":475},[124,1105,654],{"class":554},[124,1107,960],{"class":475},[124,1109,1110,1112,1115,1117,1119,1122,1125,1127,1129,1131,1133],{"class":126,"line":321},[124,1111,1079],{"class":561},[124,1113,1114],{"class":400},"Content-Type",[124,1116,562],{"class":561},[124,1118,1087],{"class":475},[124,1120,1121],{"class":630}," f",[124,1123,1124],{"class":400},"'multipart\u002Fform-data; boundary=",[124,1126,853],{"class":852},[124,1128,856],{"class":554},[124,1130,859],{"class":852},[124,1132,562],{"class":400},[124,1134,960],{"class":475},[124,1136,1137,1139,1142,1144,1146,1148,1151,1153],{"class":126,"line":327},[124,1138,1079],{"class":561},[124,1140,1141],{"class":400},"Accept",[124,1143,562],{"class":561},[124,1145,1087],{"class":475},[124,1147,766],{"class":561},[124,1149,1150],{"class":400},"application\u002Fjson",[124,1152,562],{"class":561},[124,1154,960],{"class":475},[124,1156,1157,1159,1162,1164,1166,1168,1171,1173],{"class":126,"line":333},[124,1158,1079],{"class":561},[124,1160,1161],{"class":400},"User-Agent",[124,1163,562],{"class":561},[124,1165,1087],{"class":475},[124,1167,766],{"class":561},[124,1169,1170],{"class":400},"ine-api-backend-example\u002F1.0",[124,1172,562],{"class":561},[124,1174,960],{"class":475},[124,1176,1177],{"class":126,"line":339},[124,1178,272],{"class":475},[124,1180,1181],{"class":126,"line":345},[124,1182,569],{"class":475},[124,1184,1185,1188],{"class":126,"line":351},[124,1186,1187],{"class":433},"try",[124,1189,1190],{"class":475},":\n",[124,1192,1193,1196],{"class":126,"line":357},[124,1194,1195],{"class":433},"    try",[124,1197,1190],{"class":475},[124,1199,1200,1203,1205,1208,1210,1213,1216,1219,1221,1224,1226,1229,1231,1234],{"class":126,"line":363},[124,1201,1202],{"class":437},"        response ",[124,1204,540],{"class":539},[124,1206,1207],{"class":554}," build_opener",[124,1209,558],{"class":475},[124,1211,1212],{"class":554},"NoRedirects",[124,1214,1215],{"class":475},"()).",[124,1217,1218],{"class":554},"open",[124,1220,558],{"class":475},[124,1222,1223],{"class":554},"request",[124,1225,486],{"class":475},[124,1227,1228],{"class":1029}," timeout",[124,1230,540],{"class":539},[124,1232,1233],{"class":852},"90",[124,1235,569],{"class":475},[124,1237,1238,1241,1244,1247,1250],{"class":126,"line":369},[124,1239,1240],{"class":433},"    except",[124,1242,1243],{"class":437}," HTTPError ",[124,1245,1246],{"class":433},"as",[124,1248,1249],{"class":437}," error",[124,1251,1190],{"class":475},[124,1253,1254,1256,1258],{"class":126,"line":375},[124,1255,1202],{"class":437},[124,1257,540],{"class":539},[124,1259,1260],{"class":437}," error\n",[124,1262,1263,1266,1269],{"class":126,"line":381},[124,1264,1265],{"class":433},"    with",[124,1267,1268],{"class":437}," response",[124,1270,1190],{"class":475},[124,1272,1274,1277,1279,1281,1283],{"class":126,"line":1273},45,[124,1275,1276],{"class":437},"        status ",[124,1278,540],{"class":539},[124,1280,1268],{"class":437},[124,1282,93],{"class":475},[124,1284,1285],{"class":548},"status\n",[124,1287,1289,1292,1294,1296,1298],{"class":126,"line":1288},46,[124,1290,1291],{"class":437},"        headers ",[124,1293,540],{"class":539},[124,1295,1268],{"class":437},[124,1297,93],{"class":475},[124,1299,1300],{"class":548},"headers\n",[124,1302,1304,1307],{"class":126,"line":1303},47,[124,1305,1306],{"class":433},"        try",[124,1308,1190],{"class":475},[124,1310,1312,1315,1317,1320,1322,1325,1327,1330,1332,1335,1337,1340,1343,1346],{"class":126,"line":1311},48,[124,1313,1314],{"class":437},"            result ",[124,1316,540],{"class":539},[124,1318,1319],{"class":437}," json",[124,1321,93],{"class":475},[124,1323,1324],{"class":554},"loads",[124,1326,558],{"class":475},[124,1328,1329],{"class":554},"response",[124,1331,93],{"class":475},[124,1333,1334],{"class":554},"read",[124,1336,558],{"class":475},[124,1338,1339],{"class":852},"128",[124,1341,1342],{"class":539}," *",[124,1344,1345],{"class":852}," 1024",[124,1347,1348],{"class":475},"))\n",[124,1350,1352,1355,1358],{"class":126,"line":1351},49,[124,1353,1354],{"class":433},"        except",[124,1356,1357],{"class":665}," ValueError",[124,1359,1190],{"class":475},[124,1361,1363,1365,1367],{"class":126,"line":1362},50,[124,1364,1314],{"class":437},[124,1366,540],{"class":539},[124,1368,1369],{"class":475}," {}\n",[124,1371,1373,1376,1378,1381,1383,1386,1388,1391],{"class":126,"line":1372},51,[124,1374,1375],{"class":433},"except",[124,1377,807],{"class":475},[124,1379,1380],{"class":437},"URLError",[124,1382,486],{"class":475},[124,1384,1385],{"class":665}," TimeoutError",[124,1387,486],{"class":475},[124,1389,1390],{"class":665}," OSError",[124,1392,657],{"class":475},[124,1394,1396,1398,1400,1402,1404,1407,1409],{"class":126,"line":1395},52,[124,1397,662],{"class":433},[124,1399,666],{"class":665},[124,1401,558],{"class":475},[124,1403,562],{"class":561},[124,1405,1406],{"class":400},"Outcome unconfirmed. Keep the same transaction key and images.",[124,1408,562],{"class":561},[124,1410,569],{"class":475},[124,1412,1414],{"class":126,"line":1413},53,[124,1415,137],{"emptyLinePlaceholder":136},[124,1417,1419,1421,1423,1427,1429,1432,1434,1437],{"class":126,"line":1418},54,[124,1420,606],{"class":433},[124,1422,609],{"class":539},[124,1424,1426],{"class":1425},"sBIGG"," isinstance",[124,1428,558],{"class":475},[124,1430,1431],{"class":554},"result",[124,1433,486],{"class":475},[124,1435,1436],{"class":665}," dict",[124,1438,657],{"class":475},[124,1440,1442,1445,1447],{"class":126,"line":1441},55,[124,1443,1444],{"class":437},"    result ",[124,1446,540],{"class":539},[124,1448,1369],{"class":475},[124,1450,1452,1454,1456,1459,1461,1463,1465,1467,1470,1472],{"class":126,"line":1451},56,[124,1453,478],{"class":437},[124,1455,540],{"class":539},[124,1457,1458],{"class":437}," result",[124,1460,93],{"class":475},[124,1462,555],{"class":554},[124,1464,558],{"class":475},[124,1466,562],{"class":561},[124,1468,1469],{"class":400},"error",[124,1471,562],{"class":561},[124,1473,569],{"class":475},[124,1475,1477,1479,1481,1484,1486,1488,1490,1492,1494,1496,1499,1502],{"class":126,"line":1476},57,[124,1478,478],{"class":437},[124,1480,540],{"class":539},[124,1482,1483],{"class":437}," error ",[124,1485,606],{"class":433},[124,1487,1426],{"class":1425},[124,1489,558],{"class":475},[124,1491,1469],{"class":554},[124,1493,486],{"class":475},[124,1495,1436],{"class":665},[124,1497,1498],{"class":475},")",[124,1500,1501],{"class":433}," else",[124,1503,1369],{"class":475},[124,1505,1507,1510,1512,1515,1517,1520],{"class":126,"line":1506},58,[124,1508,1509],{"class":1425},"print",[124,1511,558],{"class":475},[124,1513,1514],{"class":554},"json",[124,1516,93],{"class":475},[124,1518,1519],{"class":554},"dumps",[124,1521,1522],{"class":475},"({\n",[124,1524,1526,1528,1531,1533,1535,1538],{"class":126,"line":1525},59,[124,1527,1017],{"class":561},[124,1529,1530],{"class":400},"http_status",[124,1532,562],{"class":561},[124,1534,1087],{"class":475},[124,1536,1537],{"class":554}," status",[124,1539,960],{"class":475},[124,1541,1543,1545,1548,1550,1552,1554,1556,1558,1560,1562,1564,1566,1568,1571,1573,1575,1577,1579,1581,1584,1586],{"class":126,"line":1542},60,[124,1544,1017],{"class":561},[124,1546,1547],{"class":400},"request_id",[124,1549,562],{"class":561},[124,1551,1087],{"class":475},[124,1553,1458],{"class":554},[124,1555,93],{"class":475},[124,1557,555],{"class":554},[124,1559,558],{"class":475},[124,1561,562],{"class":561},[124,1563,1547],{"class":400},[124,1565,562],{"class":561},[124,1567,1498],{"class":475},[124,1569,1570],{"class":539}," or",[124,1572,737],{"class":554},[124,1574,93],{"class":475},[124,1576,555],{"class":554},[124,1578,558],{"class":475},[124,1580,562],{"class":561},[124,1582,1583],{"class":400},"x-request-id",[124,1585,562],{"class":561},[124,1587,1588],{"class":475},"),\n",[124,1590,1592,1594,1597,1599,1601,1603,1605,1607,1609,1611,1613,1615],{"class":126,"line":1591},61,[124,1593,1017],{"class":561},[124,1595,1596],{"class":400},"status",[124,1598,562],{"class":561},[124,1600,1087],{"class":475},[124,1602,1458],{"class":554},[124,1604,93],{"class":475},[124,1606,555],{"class":554},[124,1608,558],{"class":475},[124,1610,562],{"class":561},[124,1612,1596],{"class":400},[124,1614,562],{"class":561},[124,1616,1588],{"class":475},[124,1618,1620,1622,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643],{"class":126,"line":1619},62,[124,1621,1017],{"class":561},[124,1623,1624],{"class":400},"error_code",[124,1626,562],{"class":561},[124,1628,1087],{"class":475},[124,1630,1249],{"class":554},[124,1632,93],{"class":475},[124,1634,555],{"class":554},[124,1636,558],{"class":475},[124,1638,562],{"class":561},[124,1640,70],{"class":400},[124,1642,562],{"class":561},[124,1644,1588],{"class":475},[124,1646,1648,1650,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671],{"class":126,"line":1647},63,[124,1649,1017],{"class":561},[124,1651,1652],{"class":400},"action",[124,1654,562],{"class":561},[124,1656,1087],{"class":475},[124,1658,1249],{"class":554},[124,1660,93],{"class":475},[124,1662,555],{"class":554},[124,1664,558],{"class":475},[124,1666,562],{"class":561},[124,1668,1652],{"class":400},[124,1670,562],{"class":561},[124,1672,1588],{"class":475},[124,1674,1676,1678,1681,1683,1685,1687,1689,1691,1693,1695,1698,1700],{"class":126,"line":1675},64,[124,1677,1017],{"class":561},[124,1679,1680],{"class":400},"retry_after",[124,1682,562],{"class":561},[124,1684,1087],{"class":475},[124,1686,737],{"class":554},[124,1688,93],{"class":475},[124,1690,555],{"class":554},[124,1692,558],{"class":475},[124,1694,562],{"class":561},[124,1696,1697],{"class":400},"retry-after",[124,1699,562],{"class":561},[124,1701,1588],{"class":475},[124,1703,1705],{"class":126,"line":1704},65,[124,1706,1707],{"class":475},"}))\n",[124,1709,1711],{"class":126,"line":1710},66,[124,1712,1714],{"class":1713},"sutJx","# Consume result['data'] privately only for a succeeded HTTP 200 response.\n",[115,1716,1718],{"className":387,"code":1717,"language":389,"meta":120,"style":120},"python3 ine_request.py\n",[70,1719,1720],{"__ignoreMap":120},[124,1721,1722,1725],{"class":126,"line":127},[124,1723,1724],{"class":396},"python3",[124,1726,1727],{"class":400}," ine_request.py\n",[95,1729,1731],{"id":1730},"curl","cURL",[66,1733,1734],{},"cURL prints the response, so these commands can expose personal data in your terminal. Use a private environment and avoid logging the output.",[115,1736,1738],{"className":387,"code":1737,"language":389,"meta":120,"style":120},"curl --max-time 90 --include \\\n  'https:\u002F\u002Focr.ecostudios.dev\u002Fapi\u002Fv3\u002Fine' \\\n  -H \"X-API-Key: $INE_API_KEY\" \\\n  -H \"Idempotency-Key: $INE_IDEMPOTENCY_KEY\" \\\n  -H 'Accept: application\u002Fjson' \\\n  -H 'User-Agent: ine-api-backend-example\u002F1.0' \\\n  -F 'front=@front.jpg' \\\n  -F 'back=@back.jpg'\n",[70,1739,1740,1756,1767,1786,1802,1815,1828,1842],{"__ignoreMap":120},[124,1741,1742,1744,1747,1750,1753],{"class":126,"line":127},[124,1743,1730],{"class":396},[124,1745,1746],{"class":640}," --max-time",[124,1748,1749],{"class":852}," 90",[124,1751,1752],{"class":640}," --include",[124,1754,1755],{"class":862}," \\\n",[124,1757,1758,1761,1763,1765],{"class":126,"line":133},[124,1759,1760],{"class":561},"  '",[124,1762,1020],{"class":400},[124,1764,562],{"class":561},[124,1766,1755],{"class":862},[124,1768,1769,1772,1775,1778,1781,1784],{"class":126,"line":140},[124,1770,1771],{"class":640},"  -H",[124,1773,1774],{"class":561}," \"",[124,1776,1777],{"class":400},"X-API-Key: ",[124,1779,1780],{"class":437},"$INE_API_KEY",[124,1782,1783],{"class":561},"\"",[124,1785,1755],{"class":862},[124,1787,1788,1790,1792,1795,1798,1800],{"class":126,"line":146},[124,1789,1771],{"class":640},[124,1791,1774],{"class":561},[124,1793,1794],{"class":400},"Idempotency-Key: ",[124,1796,1797],{"class":437},"$INE_IDEMPOTENCY_KEY",[124,1799,1783],{"class":561},[124,1801,1755],{"class":862},[124,1803,1804,1806,1808,1811,1813],{"class":126,"line":152},[124,1805,1771],{"class":640},[124,1807,766],{"class":561},[124,1809,1810],{"class":400},"Accept: application\u002Fjson",[124,1812,562],{"class":561},[124,1814,1755],{"class":862},[124,1816,1817,1819,1821,1824,1826],{"class":126,"line":158},[124,1818,1771],{"class":640},[124,1820,766],{"class":561},[124,1822,1823],{"class":400},"User-Agent: ine-api-backend-example\u002F1.0",[124,1825,562],{"class":561},[124,1827,1755],{"class":862},[124,1829,1830,1833,1835,1838,1840],{"class":126,"line":164},[124,1831,1832],{"class":640},"  -F",[124,1834,766],{"class":561},[124,1836,1837],{"class":400},"front=@front.jpg",[124,1839,562],{"class":561},[124,1841,1755],{"class":862},[124,1843,1844,1846,1848,1851],{"class":126,"line":170},[124,1845,1832],{"class":640},[124,1847,766],{"class":561},[124,1849,1850],{"class":400},"back=@back.jpg",[124,1852,898],{"class":561},[66,1854,1855,1856,1859],{},"To retrieve a known job, set ",[70,1857,1858],{},"REQUEST_ID"," to its UUID and send GET:",[115,1861,1863],{"className":387,"code":1862,"language":389,"meta":120,"style":120},"curl --max-time 90 --include \\\n  \"https:\u002F\u002Focr.ecostudios.dev\u002Fapi\u002Fv3\u002Fine\u002F$REQUEST_ID\" \\\n  -H \"X-API-Key: $INE_API_KEY\" \\\n  -H 'Accept: application\u002Fjson' \\\n  -H 'User-Agent: ine-api-backend-example\u002F1.0'\n",[70,1864,1865,1877,1892,1906,1918],{"__ignoreMap":120},[124,1866,1867,1869,1871,1873,1875],{"class":126,"line":127},[124,1868,1730],{"class":396},[124,1870,1746],{"class":640},[124,1872,1749],{"class":852},[124,1874,1752],{"class":640},[124,1876,1755],{"class":862},[124,1878,1879,1882,1885,1888,1890],{"class":126,"line":133},[124,1880,1881],{"class":561},"  \"",[124,1883,1884],{"class":400},"https:\u002F\u002Focr.ecostudios.dev\u002Fapi\u002Fv3\u002Fine\u002F",[124,1886,1887],{"class":437},"$REQUEST_ID",[124,1889,1783],{"class":561},[124,1891,1755],{"class":862},[124,1893,1894,1896,1898,1900,1902,1904],{"class":126,"line":140},[124,1895,1771],{"class":640},[124,1897,1774],{"class":561},[124,1899,1777],{"class":400},[124,1901,1780],{"class":437},[124,1903,1783],{"class":561},[124,1905,1755],{"class":862},[124,1907,1908,1910,1912,1914,1916],{"class":126,"line":146},[124,1909,1771],{"class":640},[124,1911,766],{"class":561},[124,1913,1810],{"class":400},[124,1915,562],{"class":561},[124,1917,1755],{"class":862},[124,1919,1920,1922,1924,1926],{"class":126,"line":152},[124,1921,1771],{"class":640},[124,1923,766],{"class":561},[124,1925,1823],{"class":400},[124,1927,898],{"class":561},[66,1929,1930,1931,1934,1935,1938,1939,1941],{},"Do not add ",[70,1932,1933],{},"--retry"," or ",[70,1936,1937],{},"--location",". Respect ",[70,1940,87],{}," and use a bounded polling period. Keep the known request identifier for a later GET if the wait ends.",[95,1943,1945],{"id":1944},"several-users-at-once","Several users at once",[66,1947,1948],{},"Your backend can submit separate transactions concurrently. Each transaction contains one credential; the company key is shared by your backend, never by end users. The current default is two active readings per company. Arrange higher concurrency with us before sending larger bursts.",[66,1950,1951,1952,1956,1957,1087],{},"The ",[90,1953,1955],{"href":1954},"\u002Fine-batch.mjs","Node.js batch helper"," accepts up to 100 items and runs at most two at a time. Save a unique, stable idempotency key for each transaction in ",[70,1958,1959],{},"batch.json",[115,1961,1964],{"className":1962,"code":1963,"language":1514,"meta":120,"style":120},"language-json shiki shiki-themes material-theme-lighter github-light github-light","[\n  { \"idempotency_key\": \"transaction-0001\", \"front\": \"first-front.jpg\", \"back\": \"first-back.jpg\" },\n  { \"idempotency_key\": \"transaction-0002\", \"front\": \"second-front.jpg\", \"back\": \"second-back.jpg\" }\n]\n",[70,1965,1966,1971,2030,2086],{"__ignoreMap":120},[124,1967,1968],{"class":126,"line":127},[124,1969,1970],{"class":475},"[\n",[124,1972,1973,1976,1978,1982,1984,1986,1988,1991,1993,1995,1997,1999,2001,2003,2005,2008,2010,2012,2014,2016,2018,2020,2022,2025,2027],{"class":126,"line":133},[124,1974,1975],{"class":475},"  {",[124,1977,1774],{"class":636},[124,1979,1981],{"class":1980},"sup7M","idempotency_key",[124,1983,1783],{"class":636},[124,1985,1087],{"class":475},[124,1987,1774],{"class":561},[124,1989,1990],{"class":400},"transaction-0001",[124,1992,1783],{"class":561},[124,1994,486],{"class":475},[124,1996,1774],{"class":636},[124,1998,812],{"class":1980},[124,2000,1783],{"class":636},[124,2002,1087],{"class":475},[124,2004,1774],{"class":561},[124,2006,2007],{"class":400},"first-front.jpg",[124,2009,1783],{"class":561},[124,2011,486],{"class":475},[124,2013,1774],{"class":636},[124,2015,821],{"class":1980},[124,2017,1783],{"class":636},[124,2019,1087],{"class":475},[124,2021,1774],{"class":561},[124,2023,2024],{"class":400},"first-back.jpg",[124,2026,1783],{"class":561},[124,2028,2029],{"class":475}," },\n",[124,2031,2032,2034,2036,2038,2040,2042,2044,2047,2049,2051,2053,2055,2057,2059,2061,2064,2066,2068,2070,2072,2074,2076,2078,2081,2083],{"class":126,"line":140},[124,2033,1975],{"class":475},[124,2035,1774],{"class":636},[124,2037,1981],{"class":1980},[124,2039,1783],{"class":636},[124,2041,1087],{"class":475},[124,2043,1774],{"class":561},[124,2045,2046],{"class":400},"transaction-0002",[124,2048,1783],{"class":561},[124,2050,486],{"class":475},[124,2052,1774],{"class":636},[124,2054,812],{"class":1980},[124,2056,1783],{"class":636},[124,2058,1087],{"class":475},[124,2060,1774],{"class":561},[124,2062,2063],{"class":400},"second-front.jpg",[124,2065,1783],{"class":561},[124,2067,486],{"class":475},[124,2069,1774],{"class":636},[124,2071,821],{"class":1980},[124,2073,1783],{"class":636},[124,2075,1087],{"class":475},[124,2077,1774],{"class":561},[124,2079,2080],{"class":400},"second-back.jpg",[124,2082,1783],{"class":561},[124,2084,2085],{"class":475}," }\n",[124,2087,2088],{"class":126,"line":146},[124,2089,2090],{"class":475},"]\n",[115,2092,2094],{"className":387,"code":2093,"language":389,"meta":120,"style":120},"node ine-batch.mjs batch.json --output private-batch-state.json\n",[70,2095,2096],{"__ignoreMap":120},[124,2097,2098,2100,2103,2106,2109],{"class":126,"line":127},[124,2099,397],{"class":396},[124,2101,2102],{"class":400}," ine-batch.mjs",[124,2104,2105],{"class":400}," batch.json",[124,2107,2108],{"class":640}," --output",[124,2110,2111],{"class":400}," private-batch-state.json\n",[66,2113,2114,2115,2117,2118,2121,2122,2125],{},"Set ",[70,2116,72],{}," privately on the server. Image paths are relative to the manifest. The helper saves request metadata in a new private file and excludes extracted data from its default output. To consume successful data in your backend, import ",[70,2119,2120],{},"runBatch"," and provide its ",[70,2123,2124],{},"onResult"," handler.",[66,2127,2128,2129,2132,2133,2135],{},"Only a structured admission ",[70,2130,2131],{},"429"," with an eligible error code is retried, at most twice, after ",[70,2134,87],{},", using the same bytes and key. Technical failures, timeouts and uncertain outcomes are not automatically resubmitted. Authentication, quota or uncertain-outcome errors stop new submissions; already active requests finish. Preserve the state file and resolve known requests through GET before deciding what to submit next.",[2137,2138,2139],"style",{},"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);}html pre.shiki code .sDrxt, html code.shiki .sDrxt{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#6F42C1}html pre.shiki code .sN0tt, html code.shiki .sN0tt{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#032F62}html pre.shiki code .sFVAW, html code.shiki .sFVAW{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#D73A49;--shiki-dark-font-style:inherit}html pre.shiki code .sQha-, html code.shiki .sQha-{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#24292E}html pre.shiki code .sYEpm, html code.shiki .sYEpm{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#24292E}html pre.shiki code .shItv, html code.shiki .shItv{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#D73A49}html pre.shiki code .s_2Mu, html code.shiki .s_2Mu{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#24292E}html pre.shiki code .sHAvI, html code.shiki .sHAvI{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#24292E}html pre.shiki code .sU42L, html code.shiki .sU42L{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#032F62}html pre.shiki code .sFYCz, html code.shiki .sFYCz{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#D73A49}html pre.shiki code .s4hL5, html code.shiki .s4hL5{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#005CC5}html pre.shiki code .s3mjZ, html code.shiki .s3mjZ{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#005CC5}html pre.shiki code .s2tOn, html code.shiki .s2tOn{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#005CC5}html pre.shiki code .smm3R, html code.shiki .smm3R{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#6F42C1}html pre.shiki code .sukZL, html code.shiki .sukZL{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#24292E;--shiki-default-font-style:inherit;--shiki-dark:#24292E;--shiki-dark-font-style:inherit}html pre.shiki code .sNv6i, html code.shiki .sNv6i{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#24292E;--shiki-default-font-style:inherit;--shiki-dark:#24292E;--shiki-dark-font-style:inherit}html pre.shiki code .szT0U, html code.shiki .szT0U{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#005CC5}html pre.shiki code .sitYm, html code.shiki .sitYm{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#005CC5}html pre.shiki code .sHhPD, html code.shiki .sHhPD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#E36209;--shiki-dark-font-style:inherit}html pre.shiki code .sBIGG, html code.shiki .sBIGG{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#005CC5}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sup7M, html code.shiki .sup7M{--shiki-light:#9C3EDA;--shiki-default:#005CC5;--shiki-dark:#005CC5}",{"title":120,"searchDepth":133,"depth":133,"links":2141},[2142,2143,2144,2145],{"id":97,"depth":133,"text":98},{"id":414,"depth":133,"text":415},{"id":1730,"depth":133,"text":1731},{"id":1944,"depth":133,"text":1945},"md",{},{"title":2149},"Examples",{"title":38,"description":39},"docs\u002F09.examples","L4aoq6NH8Z47imqp9byof27k9qvPTRPD3CqE24sDWxA",1790659707421]