Indexing error codes
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.
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.
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.
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 or replace scanned content with extractable text. |
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. Scanned or image-only files produce no text, so add a text layer or upload a text-based version. |
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. |
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 extra 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 extra 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. |
These errors appear when embedding models, Workers AI, external providers, or AI Gateway cannot process item content.
| Error | Details | Recommended action |
|---|---|---|
error_embedding_data_with_workers_ai | Workers AI could not generate embeddings. | Sync the item again. Check Cloudflare Status ↗ and contact support if the error persists. |
workers_ai_invalid_input | Workers AI rejected the input. | Check file content, file type, and embedding model support. |
workers_ai_free_allocation_exceeded | Workers AI free tier allocation was exceeded. | Review Workers AI pricing and wait for allocation reset, or upgrade your Workers plan. |
workers_ai_internal_error | Workers AI returned an internal error. | Sync the item again. Check Cloudflare Status ↗ and contact support if the error persists. |
workers_ai_out_of_capacity_error | Workers AI capacity was unavailable. | Retry later and review Workers AI limits. |
workers_ai_timeout_error | Workers AI timed out. | Sync the item again. Check Cloudflare Status ↗ and contact support if the error persists. |
error_external_model_unknown_error | An external embedding model returned an unknown error. | Check provider status and AI Gateway logs, then sync the item again. |
error_external_model_rate_limited | An external embedding model rate limited the request. | Run a source sync job later, or raise the rate limit with your model provider. Check AI Gateway logs for the provider response. |
error_external_model_unauthorized | An external embedding model rejected authentication. | Check provider credentials in AI Gateway, then sync the item again. |
ai_gateway_request_blocked_firewall | AI Gateway Guardrails blocked the request. | Review AI Gateway Guardrails prompt settings for the configured gateway, then run a source sync job again. |
ai_gateway_dlp_blocked | AI Gateway Data Loss Prevention (DLP) blocked content. | Review AI Gateway DLP settings and the item content. |
ai_gateway_response_blocked_firewall | AI Gateway Guardrails blocked the response. | Review AI Gateway Guardrails response settings for the configured gateway, then run a source sync job again. |
ai_gateway_rate_limited | AI Gateway rate limited the request. | Run a source sync job later. If the error persists, contact support. |
These errors appear when storing or indexing an item fails, or when the instance reaches a capacity limit. AI Search uses Vectorize in the background to store vectors and manages it for you.
| Error | Details | Recommended action |
|---|---|---|
r2_unknown_error | R2 returned an unknown error. | Run a source sync job again. Check Cloudflare Status ↗ and contact support if the error persists. |
r2_internal_error | R2 returned an internal error. | Run a source sync job again. Check Cloudflare Status ↗ and contact support if the error persists. |
vectorize_rate_limited | Vectorize rate limited the operation. | Run a source sync job later. If the error persists, contact support. |
vectorize_ingestion_timeout | Vectorize did not process the mutation in time. | Sync the item again. Check Cloudflare Status ↗ and contact support if the error persists. |
vectorize_upstream_error | Vectorize returned a transient upstream error. | Sync the item again. Check Cloudflare Status ↗ and contact support if the error persists. |
hybrid_search_indexing_failed | Hybrid search indexing failed. | Sync the item again. Check Cloudflare Status ↗ and contact support if the error persists. |
ai_search_is_full | The AI Search instance is full. Unlike a full hybrid search index, this does not pause the instance. | Request a higher limit ↗ for the instance, or create another instance to index additional content. See limits. |
These errors pause the whole instance and stop all indexing until the underlying cause is resolved and the instance is resumed. They are distinct from a manual pause or the automatic pause after a period of inactivity.
| Error | Details | Recommended action |
|---|---|---|
r2_not_enabled | Pauses the instance. R2 is not enabled for the account. | Enable R2 for the account, then resume the instance. |
bucket_not_found | Pauses the instance. The source R2 bucket was not found. | Check the R2 data source bucket name and account, then resume the instance. |
bucket_unauthorized | Pauses the instance. AI Search cannot access the R2 bucket. | Check the service API token and R2 bucket permissions, then resume the instance. |
external_source_missing_api_token | Pauses the instance. The external source is missing API credentials. | Add or update the service API token, then resume the instance. |
bucket_name_invalid | Pauses the instance. The R2 bucket name is invalid. | Use a valid bucket name without uppercase letters or underscores, update the R2 data source, then resume the instance. |
invalid_custom_header | Pauses the instance. A custom crawl header is invalid. | Remove or update the extra header, then resume the instance. |
ai_gateway_not_configured | Pauses the instance. The AI Gateway set on the instance was not found. | Update the instance's ai_gateway_id to an existing gateway in AI Gateway, then resume the instance. |
hybrid_search_is_full | Pauses the instance. The hybrid search index is full. Its file limit is lower than the standard instance limit, so it can be reached earlier. | Request a higher limit ↗ to resume the instance, or create another instance to index additional content. See limits. |