Indexing error codes
Last updated Oct 1, 2026 After AI Search accepts an upload, sync, or crawl request, it processes your content in the background so it can be searched. When processing fails, AI Search records one of the error codes on this page. Some errors affect a single item; others pause the whole instance.
Because this processing happens after the request succeeds, the errors are not returned in the original API response. To find them, check item logs, item details, or instance stats. Errors returned immediately when a request fails are documented separately in API error codes.
How errors are returned
Indexing errors are asynchronous: an upload, sync, or crawl request can succeed, then the content can fail later while AI Search processes it. They fall into two categories:
- Item-level errors affect a single item. The item moves to
status: "error"while the rest of the instance keeps indexing. - Instance-level errors affect the whole instance. AI Search pauses indexing because the problem, such as a source, token, model, or limit issue, blocks every item.
To retry a single failed item, check item logs, fix any clear source or configuration issue, then sync the item again. For website and R2 data sources, you can also run a source sync job.
If the instance is paused, resolve the underlying cause, then resume the instance.
If a transient error persists after retrying, contact Cloudflare support with the item ID, instance ID, error code, and request timestamp.
Item-level errors
These errors affect a single item. The item moves to status: "error" while the rest of the instance keeps indexing. Fix the item or retry it.
File and content
These errors appear when AI Search cannot read, convert, chunk, or embed a source file. For supported formats and file size limits, refer to Data source. For chunking and model limits, refer to Chunking and Supported models.
| Error | Details | Recommended action |
|---|---|---|
unknown_error |
An unexpected processing error occurred. | Check item logs for the failed step, then sync the item again. If the error persists, contact support. |
over_size |
The file exceeds the maximum allowed size. | Reduce the file size, split the file, or exclude it. Review file limits. |
unsupported_type |
The file type is not supported. | Convert the file to a supported file type, then upload or sync it again. |
file_not_found |
The file was not found in the source. | Restore the source file, then sync the item or run a source sync job. If the file was intentionally deleted, run a source sync so AI Search can update the index. |
invalid_url |
The file URL is invalid. | Fix the URL in the website data source or sitemap, then run a source sync job. |
file_is_corrupt |
The file is corrupt. | Replace the file with an uncorrupted copy, then upload or sync it again. |
file_is_password_locked |
The file is encrypted or requires a password before AI Search can read its contents. | Remove the password, upload an unlocked copy, then sync the item again. |
invalid_pdf |
AI Search could not parse the file as a valid PDF. | Upload a PDF that opens correctly, or convert the content to another supported file type. |
unable_to_convert_to_markdown |
AI Search could not convert the file to text. | Use a supported file type. For scanned PDFs, turn on OCR, then sync the item again. |
markdown_too_large |
AI Search converted the file, but the generated Markdown exceeded AI Search processing limits. | If the source file is within AI Search file limits, contact support. As a workaround, split the source into smaller files if practical. |
markdown_conversion_empty |
AI Search converted the file, but the conversion returned no usable text. | Ensure the file contains extractable text. For scanned PDFs, turn on OCR, then sync the item again. |
file_content_empty |
The file is empty or contains only headings. | Add searchable body content, then upload or sync the file again. |
chunk_too_large_for_storage |
AI Search generated a chunk that exceeded internal storage limits. | Lower chunk size if you configured a high value. If the item still fails, contact support. |
timeout_error |
Item processing timed out. | Sync the item again. Check Cloudflare Status ↗︎ and contact support if the error persists. |
file_length_exceed_embedding_model |
The file is too long for the embedding model. | Use a smaller source file, or contact support if the file is within documented limits. |
file_too_large_for_embedder |
The file exceeds the maximum byte size accepted by the embedding model. | Use a smaller source file, or contact support if the file is within documented limits. |
Website crawl
These errors appear when AI Search cannot fetch, render, or include a page from a website data source. AI Search uses Browser Run in the background to crawl and render pages and manages it for you.
| Error | Details | Recommended action |
|---|---|---|
too_many_redirects |
The crawler followed too many redirects or found a redirect loop. | Fix the redirect chain for the website data source, then run a source sync job. |
invalid_host_after_redirect |
The page redirected to a hostname outside the current crawl scope. | Check item logs for the redirect target. If that target should be indexed, contact support. Otherwise, exclude the original URL with path filtering. |
subdomains_not_allowed |
The URL is outside the hostnames AI Search can crawl for this website data source. | If this URL should be indexed by the instance, contact support. Otherwise, exclude it with path filtering. |
blocked_by_robots_txt |
robots.txt disallowed the crawl. |
Update robots.txt so the AI Search crawler can access the site. |
blocked_by_robots_txt_path |
robots.txt disallowed the path. |
Allow the path in robots.txt, or exclude it with path filtering if you do not want it indexed. |
blocked_by_content_signal |
The site blocked the crawl with Content Signals. | Review Content Signals directives in robots.txt. If the content should not be indexed, exclude it with path filtering. |
excluded_by_path_filter |
Your path filter excluded the item. | Review include and exclude rules if the item should be indexed. |
network_connection_lost |
The network connection was interrupted. | Sync the item again. If the error persists, check that the source is reachable. |
crawl_got_http_error |
The crawler received an HTTP error. | Check item logs for the HTTP status. Fix the origin response or access controls, then run a source sync job. |
crawl_got_http_401 |
The crawler received 401 Unauthorized. |
Make the page accessible to the crawler. For protected pages, configure authentication headers or Cloudflare Access service credentials. |
crawl_got_http_403 |
The crawler received 403 Forbidden. |
Allow the AI Search crawler through your access controls and origin firewall. |
crawl_got_http_429 |
The origin rate limited the crawler. | Allow the AI Search crawler, raise the origin limit, or narrow crawl scope with path filtering. |
blocked_by_payment |
The site returned 402 Payment Required. |
Exclude the page with path filtering. AI Search does not support paid crawls. |
blocked_by_waf |
A web application firewall (WAF) blocked the crawler. | Allow the AI Search crawler in your WAF. |
blocked_by_bot_management |
Bot controls blocked the crawler. | Allow the AI Search crawler in your bot protection settings. |
blocked_by_turnstile |
Turnstile blocked the crawler. | Allow the AI Search crawler, or exclude the page with path filtering. |
http_4xx |
The site returned an HTTP 4xx error. | Check item logs for the exact status. Fix the URL or access controls, or exclude the page with path filtering. |
http_5xx |
The site returned an HTTP 5xx error. | Fix origin health, then sync the item or run a source sync job. |
unreachable_timeout |
The crawler could not reach the page before timeout. | Check origin latency, firewall rules, and page availability, then run a source sync job. |
unreachable_dns |
The source domain did not resolve. | Check DNS records for the source domain. |
page_limit_reached |
The managed crawler reached your plan's daily page limit, so some pages were not crawled in this run. | Upgrade to Workers Paid for unlimited daily crawling, or reduce the pages in scope with path filtering. Free plans crawl up to 500 pages per day. See limits. |
browser_rendering_unknown_error |
Browser Run returned an unknown error. | Run a source sync job again. Check Cloudflare Status ↗︎ and contact support if the same page keeps failing. |
browser_rendering_authentication_error |
Browser Run required authentication. | Configure authentication headers for protected pages, or exclude the page. |
browser_rendering_no_body_status_error |
Browser Run returned no page content for AI Search to index. | If the page should be indexed, contact support. Otherwise, exclude the page with path filtering. |
browser_rendering_timeout_error |
Browser Run timed out. | Run a source sync job again. Check Cloudflare Status ↗︎ and contact support if the error persists. |
browser_rendering_network_connection_closed_error |
The browser connection closed during rendering. | Run a source sync job again. Check Cloudflare Status ↗︎ and contact support if the error persists. |
browser_rendering_server_refused_connection_error |
The origin refused the browser connection. | Allow the AI Search crawler through your origin network controls, then run a source sync job. |
browser_rendering_rate_limit_error |
Browser Run was rate limited. | Run a source sync job later. If the error persists, contact support. |
