[{"data":1,"prerenderedAt":443},["ShallowReactive",2],{"docs-navigation":3,"doc-\u002Fdocs\u002Fquickstart":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":6,"body":62,"description":7,"extension":437,"meta":438,"navigation":439,"path":5,"seo":440,"stem":441,"__hash__":442},"docs\u002Fdocs\u002F01.quickstart.md",{"type":63,"value":64,"toc":431},"minimark",[65,69,72,77,86,89,100,104,111,281,284,287,291,382,396,400,416,427],[66,67,68],"p",{},"INE API reads the printed text on a Mexican INE credential. Send one front image and one back image from your server. The English API returns eight scalar fields and an optional three-line MRZ.",[66,70,71],{},"Every result requires review. The service does not verify the document's authenticity, the person's identity, or registration status with INE. Accuracy and response time depend on the photographs; neither perfect accuracy nor a fixed completion time is guaranteed.",[73,74,76],"h2",{"id":75},"get-access","Get access",[66,78,79,80,85],{},"Contact ",[81,82,84],"a",{"href":83},"mailto:ecodevcontact@gmail.com","ecodevcontact@gmail.com"," to arrange a plan and receive an API key. Provisioning and billing are handled manually. Keep the key in your backend's secret storage.",[66,87,88],{},"The base URL is:",[90,91,97],"pre",{"className":92,"code":94,"language":95,"meta":96},[93],"language-text","https:\u002F\u002Focr.ecostudios.dev\u002Fapi\u002Fv3\n","text","",[98,99,94],"code",{"__ignoreMap":96},[73,101,103],{"id":102},"send-one-reading","Send one reading",[66,105,106,107,110],{},"Set ",[98,108,109],{},"INE_API_KEY"," privately in your server environment. Save a stable business transaction identifier before making the request. The example below sends one POST and does not retry it automatically.",[90,112,116],{"className":113,"code":114,"language":115,"meta":96,"style":96},"language-bash shiki shiki-themes material-theme-lighter github-light github-light","export INE_API_URL='https:\u002F\u002Focr.ecostudios.dev'\n\ncurl --max-time 90 --include \\\n  \"$INE_API_URL\u002Fapi\u002Fv3\u002Fine\" \\\n  -H \"X-API-Key: $INE_API_KEY\" \\\n  -H 'Idempotency-Key: onboarding-0001' \\\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","bash",[98,117,118,146,153,175,192,211,226,240,254,269],{"__ignoreMap":96},[119,120,123,127,131,135,139,143],"span",{"class":121,"line":122},"line",1,[119,124,126],{"class":125},"sFYCz","export",[119,128,130],{"class":129},"sQha-"," INE_API_URL",[119,132,134],{"class":133},"shItv","=",[119,136,138],{"class":137},"sU42L","'",[119,140,142],{"class":141},"sN0tt","https:\u002F\u002Focr.ecostudios.dev",[119,144,145],{"class":137},"'\n",[119,147,149],{"class":121,"line":148},2,[119,150,152],{"emptyLinePlaceholder":151},true,"\n",[119,154,156,160,164,168,171],{"class":121,"line":155},3,[119,157,159],{"class":158},"sDrxt","curl",[119,161,163],{"class":162},"s3mjZ"," --max-time",[119,165,167],{"class":166},"szT0U"," 90",[119,169,170],{"class":162}," --include",[119,172,174],{"class":173},"sitYm"," \\\n",[119,176,178,181,184,187,190],{"class":121,"line":177},4,[119,179,180],{"class":137},"  \"",[119,182,183],{"class":129},"$INE_API_URL",[119,185,186],{"class":141},"\u002Fapi\u002Fv3\u002Fine",[119,188,189],{"class":137},"\"",[119,191,174],{"class":173},[119,193,195,198,201,204,207,209],{"class":121,"line":194},5,[119,196,197],{"class":162},"  -H",[119,199,200],{"class":137}," \"",[119,202,203],{"class":141},"X-API-Key: ",[119,205,206],{"class":129},"$INE_API_KEY",[119,208,189],{"class":137},[119,210,174],{"class":173},[119,212,214,216,219,222,224],{"class":121,"line":213},6,[119,215,197],{"class":162},[119,217,218],{"class":137}," '",[119,220,221],{"class":141},"Idempotency-Key: onboarding-0001",[119,223,138],{"class":137},[119,225,174],{"class":173},[119,227,229,231,233,236,238],{"class":121,"line":228},7,[119,230,197],{"class":162},[119,232,218],{"class":137},[119,234,235],{"class":141},"Accept: application\u002Fjson",[119,237,138],{"class":137},[119,239,174],{"class":173},[119,241,243,245,247,250,252],{"class":121,"line":242},8,[119,244,197],{"class":162},[119,246,218],{"class":137},[119,248,249],{"class":141},"User-Agent: ine-api-backend-example\u002F1.0",[119,251,138],{"class":137},[119,253,174],{"class":173},[119,255,257,260,262,265,267],{"class":121,"line":256},9,[119,258,259],{"class":162},"  -F",[119,261,218],{"class":137},[119,263,264],{"class":141},"front=@front.jpg",[119,266,138],{"class":137},[119,268,174],{"class":173},[119,270,272,274,276,279],{"class":121,"line":271},10,[119,273,259],{"class":162},[119,275,218],{"class":137},[119,277,278],{"class":141},"back=@back.jpg",[119,280,145],{"class":137},[66,282,283],{},"Use a different transaction identifier for each new reading. A retry of the same transaction must retain the same identifier and exact image bytes. Do not add cURL's automatic retry or redirect-following options.",[66,285,286],{},"This command prints the response, which can contain personal data. Run it in a private environment and keep its output out of shared logs.",[73,288,290],{"id":289},"handle-the-result","Handle the result",[292,293,294,307],"table",{},[295,296,297],"thead",{},[298,299,300,304],"tr",{},[301,302,303],"th",{},"Response",[301,305,306],{},"What to do",[308,309,310,337,358,370],"tbody",{},[298,311,312,322],{},[313,314,315,318,319],"td",{},[98,316,317],{},"200"," with ",[98,320,321],{},"status: succeeded",[313,323,324,325,328,329,332,333,336],{},"Review ",[98,326,327],{},"data"," and ",[98,330,331],{},"warnings",". Save any result you need before ",[98,334,335],{},"expires_at",".",[298,338,339,347],{},[313,340,341,318,344],{},[98,342,343],{},"202",[98,345,346],{},"status: processing",[313,348,349,350,353,354,357],{},"Wait for ",[98,351,352],{},"Retry-After",", then GET the returned ",[98,355,356],{},"status_url"," on the same API origin.",[298,359,360,363],{},[313,361,362],{},"Error",[313,364,365,366,369],{},"Follow ",[98,367,368],{},"error.action",". Keep the transaction key and image bytes.",[298,371,372,375],{},[313,373,374],{},"Connection lost or client timeout",[313,376,377,378,381],{},"The outcome is unconfirmed. Check the known ",[98,379,380],{},"request_id","; do not automatically create a new key.",[66,383,384,385,388,389,392,393,336],{},"Results are available for 23 hours from reservation. GET and valid same-job replay do not consume another unit. See ",[81,386,387],{"href":13},"create a reading",", ",[81,390,391],{"href":17},"retrieve a result",", and ",[81,394,395],{"href":25},"errors and retries",[73,397,399],{"id":398},"versions-and-fallback","Versions and fallback",[66,401,402,404,405,408,409,328,412,415],{},[98,403,186],{}," is the recommended route. ",[98,406,407],{},"\u002Fv3\u002Fine"," exposes the same English contract; ",[98,410,411],{},"\u002Fv1\u002Fine",[98,413,414],{},"\u002Fv2\u002Fine"," retain their older contracts. All versions share jobs, idempotency and quota.",[66,417,418,419,422,423,426],{},"The fallback origin is ",[98,420,421],{},"https:\u002F\u002Fine-api.acessloop.workers.dev",", with the same ",[98,424,425],{},"\u002Fapi\u002Fv3"," paths and credentials. Changing origins does not create a separate quota or make an uncertain POST safe to repeat with a new key.",[428,429,430],"style",{},"html pre.shiki code .sFYCz, html code.shiki .sFYCz{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#D73A49}html pre.shiki code .sQha-, html code.shiki .sQha-{--shiki-light:#90A4AE;--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 .sU42L, html code.shiki .sU42L{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#032F62}html pre.shiki code .sN0tt, html code.shiki .sN0tt{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#032F62}html pre.shiki code .sDrxt, html code.shiki .sDrxt{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#6F42C1}html pre.shiki code .s3mjZ, html code.shiki .s3mjZ{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#005CC5}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 .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":96,"searchDepth":148,"depth":148,"links":432},[433,434,435,436],{"id":75,"depth":148,"text":76},{"id":102,"depth":148,"text":103},{"id":289,"depth":148,"text":290},{"id":398,"depth":148,"text":399},"md",{},{"title":6},{"title":6,"description":7},"docs\u002F01.quickstart","7fgGxVtcJ89-RrB5VjLDSVBylZFRLt2o4Xr89C_UbaY",1790658068645]