{"componentChunkName":"component---src-templates-simple-markdown-js","path":"/docs/ai/document-ai/errors-and-limits/","matchPath":"","result":{"data":{"markdownRemark":{"html":"<h1 style=\"position:relative;\"><a href=\"#errors-and-limits\" aria-label=\"errors and limits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"errors-and-limits\"></div>Errors and Limits</h1>\n<p>Document AI uses standard HTTP status codes and the Shipwell error envelope.</p>\n<h2 style=\"position:relative;\"><a href=\"#error-response-format\" aria-label=\"error response format permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"error-response-format\"></div>Error response format</h2>\n<div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"35263555585181150000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`{\n  &quot;errors&quot;: [\n    {\n      &quot;code&quot;: &quot;processing_config_not_found&quot;,\n      &quot;detail&quot;: &quot;processing config not found or disabled&quot;,\n      &quot;source&quot;: null\n    }\n  ]\n}`, `35263555585181150000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-35263555585181150000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"errors\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"processing_config_not_found\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"detail\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"processing config not found or disabled\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"source\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n      </div>\n<ul>\n<li>\n<code class=\"language-text\">code</code>\n is a stable token intended for application logic.\n</li>\n<li>\n<code class=\"language-text\">detail</code>\n is a human-readable explanation and can change.\n</li>\n<li>\n<code class=\"language-text\">source</code>\n can identify the invalid body field, header, or query parameter.\n</li>\n</ul>\n<p>Branch on <code class=\"language-text\">errors[].code</code>, not the text in <code class=\"language-text\">detail</code>.</p>\n<h2 style=\"position:relative;\"><a href=\"#http-status-codes\" aria-label=\"http status codes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"http-status-codes\"></div>HTTP status codes</h2>\n<table>\n<thead>\n<tr>\n<th align=\"right\">Status</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"right\"><code class=\"language-text\">400</code></td>\n<td>The request cannot be accepted, such as a blocked file or invalid upload metadata.</td>\n</tr>\n<tr>\n<td align=\"right\"><code class=\"language-text\">401</code></td>\n<td>Authentication is missing or invalid.</td>\n</tr>\n<tr>\n<td align=\"right\"><code class=\"language-text\">403</code></td>\n<td>The resource is visible but the requested operation is not permitted.</td>\n</tr>\n<tr>\n<td align=\"right\"><code class=\"language-text\">404</code></td>\n<td>The resource or selected configuration is not available to the authenticated company.</td>\n</tr>\n<tr>\n<td align=\"right\"><code class=\"language-text\">409</code></td>\n<td>The request conflicts with an existing resource, such as a duplicate configuration name.</td>\n</tr>\n<tr>\n<td align=\"right\"><code class=\"language-text\">413</code></td>\n<td>The resource is too large for the requested inline response format.</td>\n</tr>\n<tr>\n<td align=\"right\"><code class=\"language-text\">422</code></td>\n<td>The request body or query parameters do not match the schema.</td>\n</tr>\n<tr>\n<td align=\"right\"><code class=\"language-text\">429</code></td>\n<td>The request exceeded a rate limit.</td>\n</tr>\n<tr>\n<td align=\"right\"><code class=\"language-text\">502</code> or <code class=\"language-text\">503</code></td>\n<td>A required processing or search capability is temporarily unavailable.</td>\n</tr>\n</tbody>\n</table>\n<p>Access to another company's resource returns <code class=\"language-text\">404</code>.</p>\n<h2 style=\"position:relative;\"><a href=\"#upload-acceptance-and-processing-eligibility\" aria-label=\"upload acceptance and processing eligibility permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"upload-acceptance-and-processing-eligibility\"></div>Upload acceptance and processing eligibility</h2>\n<p>Upload limits have two distinct effects:</p>\n<ol>\n<li>\n<strong>Storage acceptance</strong>\n — if the file cannot be accepted, the request fails and no document is created for that file.\n</li>\n<li>\n<strong>Processing eligibility</strong>\n — a file can be accepted and stored but skipped for processing.\n</li>\n</ol>\n<p>Do not assume a successful upload means processing also started. Inspect:</p>\n<ul>\n<li>\n<code class=\"language-text\">documents[].latest_run</code>\n</li>\n<li>\n<code class=\"language-text\">skipped[]</code>\n</li>\n<li>\n<code class=\"language-text\">status</code>\n</li>\n<li>\n<code class=\"language-text\">process_skip_reason</code>\n</li>\n</ul>\n<h2 style=\"position:relative;\"><a href=\"#retrieve-current-file-limits\" aria-label=\"retrieve current file limits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"retrieve-current-file-limits\"></div>Retrieve current file limits</h2>\n<p>File type support and limits can vary by MIME type and account. Retrieve the current catalog:</p>\n<p>Use <code class=\"language-text\">GET /document-store/configs/upload-file-types</code>.</p>\n<p>Important response fields:</p>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">extension</code></td>\n<td>Accepted filename extension.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">mime_type</code></td>\n<td>MIME type for this rule.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">storage_max_bytes</code></td>\n<td>Maximum size accepted for storage.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">pipeline_max_bytes</code></td>\n<td>Maximum size eligible for processing.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">pipeline_eligible</code></td>\n<td>Whether this file type can be processed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">max_pdf_pages</code></td>\n<td>Maximum PDF pages eligible for processing, when present.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">enabled</code></td>\n<td>Whether the rule currently accepts the file type.</td>\n</tr>\n</tbody>\n</table>\n<p>Validate both extension and MIME type in your client, but always treat the API response as authoritative.</p>\n<h2 style=\"position:relative;\"><a href=\"#common-upload-errors\" aria-label=\"common upload errors permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"common-upload-errors\"></div>Common upload errors</h2>\n<table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Meaning</th>\n<th>Suggested action</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">tier1_extension_blocked</code></td>\n<td>The file extension is not accepted.</td>\n<td>Use a supported file type from the upload catalog.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">tier1_executable_detected</code></td>\n<td>The file content appears executable.</td>\n<td>Reject the file and do not retry it unchanged.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">tier1_size_exceeded:&lt;mime></code></td>\n<td>The file exceeds <code class=\"language-text\">storage_max_bytes</code>.</td>\n<td>Reduce the file or use a supported format within the limit.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">invalid_filename</code></td>\n<td>The filename is unsafe or invalid.</td>\n<td>Use a plain filename without paths, control characters, or traversal sequences.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">too_many_files</code></td>\n<td>A multipart request contains more than 20 files.</td>\n<td>Split the upload into multiple requests.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">invalid_base64</code></td>\n<td>Base64 content cannot be decoded.</td>\n<td>Encode the original bytes again and retry.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">size_mismatch</code></td>\n<td>A committed direct upload does not match the declared size.</td>\n<td>Verify the uploaded bytes and commit metadata.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">invalid_object_key</code></td>\n<td>Commit metadata does not match the prepared upload.</td>\n<td>Use the values returned when the upload URL was created.</td>\n</tr>\n</tbody>\n</table>\n<h2 style=\"position:relative;\"><a href=\"#common-processing-skip-reasons\" aria-label=\"common processing skip reasons permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"common-processing-skip-reasons\"></div>Common processing skip reasons</h2>\n<p>Skip reasons appear in upload or processing responses and on the document:</p>\n<table>\n<thead>\n<tr>\n<th>Reason</th>\n<th>Meaning</th>\n<th>Suggested action</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">unsupported_for_pipeline</code></td>\n<td>The file can be stored but not processed.</td>\n<td>Store it without processing or convert it to a supported format.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">per_mime_size_exceeded:&lt;mime></code></td>\n<td>The file exceeds <code class=\"language-text\">pipeline_max_bytes</code>.</td>\n<td>Reduce or split the file before processing.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">pdf_page_cap_exceeded:&lt;n></code></td>\n<td>The PDF exceeds its configured page limit.</td>\n<td>Split the PDF into smaller documents.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">pdf_page_pixels_exceeded:&lt;n></code></td>\n<td>A PDF page is too large to process safely.</td>\n<td>Re-export the page at a smaller physical size or resolution.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">image_pixel_cap_exceeded:&lt;n></code></td>\n<td>An image contains more pixels than the processing limit.</td>\n<td>Resize or re-export the image.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">llm_token_budget_exceeded</code></td>\n<td>Extracted content exceeds the supported processing budget.</td>\n<td>Split the document or reduce unnecessary content.</td>\n</tr>\n</tbody>\n</table>\n<p>The suffix after <code class=\"language-text\">:</code> provides context and should not be treated as a separate code family.</p>\n<h2 style=\"position:relative;\"><a href=\"#configuration-errors\" aria-label=\"configuration errors permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"configuration-errors\"></div>Configuration errors</h2>\n<table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Meaning</th>\n<th>Suggested action</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">processing_config_not_found</code></td>\n<td>The selected configuration is missing, disabled, or unavailable to your company.</td>\n<td>Refresh the configuration list and select an enabled configuration.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">processing_config_name_exists</code></td>\n<td>Your company already has a configuration with that name.</td>\n<td>Choose a unique name.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">platform_config_immutable</code></td>\n<td>A platform-managed configuration cannot be changed or deleted.</td>\n<td>Create a custom configuration instead.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">unknown_field</code></td>\n<td>The request contains a field not accepted by the current contract.</td>\n<td>Remove the field and validate against the current API schema.</td>\n</tr>\n</tbody>\n</table>\n<h2 style=\"position:relative;\"><a href=\"#resource-lookup-errors\" aria-label=\"resource lookup errors permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"resource-lookup-errors\"></div>Resource lookup errors</h2>\n<p>Common tokens include:</p>\n<ul>\n<li>\n<code class=\"language-text\">document_not_found</code>\n</li>\n<li>\n<code class=\"language-text\">not_found</code>\n</li>\n<li>\n<code class=\"language-text\">result_not_found</code>\n</li>\n<li>\n<code class=\"language-text\">result_file_not_found</code>\n</li>\n<li>\n<code class=\"language-text\">schema_not_found</code>\n</li>\n<li>\n<code class=\"language-text\">result_slice_missing_for_page</code>\n</li>\n<li>\n<code class=\"language-text\">too_large_for_inline</code>\n</li>\n</ul>\n<p>For <code class=\"language-text\">result_slice_missing_for_page</code>, retrieve the document outline and use the <code class=\"language-text\">result_id</code> whose page list contains the requested page.</p>\n<h2 style=\"position:relative;\"><a href=\"#rate-limits\" aria-label=\"rate limits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"rate-limits\"></div>Rate limits</h2>\n<p>A <code class=\"language-text\">429</code> response uses code <code class=\"language-text\">rate_limited</code>.</p>\n<p>When rate limited:</p>\n<ol>\n<li>\nStop immediate retries.\n</li>\n<li>\nApply exponential backoff with jitter.\n</li>\n<li>\nReduce concurrent requests.\n</li>\n<li>\nBatch supported operations, such as multi-file upload or processing multiple document identifiers.\n</li>\n<li>\nContact Shipwell if sustained production traffic requires a different limit.\n</li>\n</ol>\n<h2 style=\"position:relative;\"><a href=\"#retry-guidance\" aria-label=\"retry guidance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"retry-guidance\"></div>Retry guidance</h2>\n<p>Retry:</p>\n<ul>\n<li>\n<code class=\"language-text\">429</code>\n after backing off\n</li>\n<li>\nTemporary \n<code class=\"language-text\">502</code>\n and \n<code class=\"language-text\">503</code>\n responses\n</li>\n<li>\nNetwork timeouts when your operation is safely idempotent\n</li>\n</ul>\n<p>Do not automatically retry:</p>\n<ul>\n<li>\nValidation errors\n</li>\n<li>\nBlocked or executable files\n</li>\n<li>\nImmutable platform configuration changes\n</li>\n<li>\nDuplicate configuration names\n</li>\n</ul>\n<p>An upload timeout can occur after the server accepted the request. Before repeating it, search your recent documents by known metadata such as filename, association, and creation window, or use an application-level idempotency strategy to avoid duplicate uploads.</p>","headings":[{"value":"Errors and Limits","depth":1},{"value":"Error response format","depth":2},{"value":"HTTP status codes","depth":2},{"value":"Upload acceptance and processing eligibility","depth":2},{"value":"Retrieve current file limits","depth":2},{"value":"Common upload errors","depth":2},{"value":"Common processing skip reasons","depth":2},{"value":"Configuration errors","depth":2},{"value":"Resource lookup errors","depth":2},{"value":"Rate limits","depth":2},{"value":"Retry guidance","depth":2}]},"contentItem":{"data":{"lastModified":"2026-07-17T16:00:10.000Z","enableToc":null,"disableLastModified":null,"tocMaxDepth":null,"requestLogin":false}},"siteConfig":{"enableToc":true,"disableLastModified":false,"tocMaxDepth":4}},"pageContext":{"matchPath":"","id":"2d0f08e2-e28f-5420-b895-d0147c0b9c39__redocly content/docs/ai/document-ai/errors-and-limits/","seo":{"title":"Errors and Limits","description":null,"image":"","keywords":null,"jsonLd":null,"lang":null,"siteUrl":null},"pageId":"docs/ai/document-ai/errors-and-limits.md","pageBaseUrl":"/docs/ai/document-ai/errors-and-limits","type":"markdown","toc":{"enable":true,"maxDepth":4,"headings":[{"depth":1,"value":"Errors and Limits","id":"errors-and-limits"},{"depth":2,"value":"Error response format","id":"error-response-format"},{"depth":2,"value":"HTTP status codes","id":"http-status-codes"},{"depth":2,"value":"Upload acceptance and processing eligibility","id":"upload-acceptance-and-processing-eligibility"},{"depth":2,"value":"Retrieve current file limits","id":"retrieve-current-file-limits"},{"depth":2,"value":"Common upload errors","id":"common-upload-errors"},{"depth":2,"value":"Common processing skip reasons","id":"common-processing-skip-reasons"},{"depth":2,"value":"Configuration errors","id":"configuration-errors"},{"depth":2,"value":"Resource lookup errors","id":"resource-lookup-errors"},{"depth":2,"value":"Rate limits","id":"rate-limits"},{"depth":2,"value":"Retry guidance","id":"retry-guidance"}]},"data":{"title":"Errors and Limits"},"catalogInfo":null,"link":"/docs/ai/document-ai/errors-and-limits/","sidebarName":"developerPortal","isLanding":false,"showPrevButton":null,"showNextButton":null,"apiVersions":null,"apiVersionId":null,"isDefaultApiVersion":null}},"staticQueryHashes":["1123603147","1302185487","1344209882","1398840060","1520077861","1975142765","2667623876","2950305614","3240152602","3743992808","561138138"]}