TROUBLESHOOTING

Common IndexNow Errors & How to Fix Them

Detailed troubleshooting for every IndexNow API error including root causes, diagnostic steps, and proven fixes.

403 ForbiddencriticalKey File Verification Failed

Common Causes

  • Key file does not exist at the expected URL
  • Key file returns a non-200 status code (404, 301, 403)
  • Key file content does not exactly match the submitted key
  • Key file has extra characters: BOM, trailing newline, HTML tags
  • Key file requires authentication or is behind a login
  • key in submission doesn't match key in the file

How to Fix

  1. 1Open https://yourdomain.com/{your-key}.txt in your browser and verify it shows ONLY the key string
  2. 2Check the HTTP status: curl -I https://yourdomain.com/{key}.txt must return "HTTP/2 200" or "HTTP/1.1 200 OK"
  3. 3Recreate the file using: echo -n "your-key" > your-key.txt (the -n flag prevents adding a newline)
  4. 4Check for redirects: your CDN or server might be redirecting .txt files. Disable redirects for this specific file.
  5. 5Verify the Content-Type header is text/plain, not text/html
422 Unprocessable EntityhighURLs Don't Match the Host

Common Causes

  • URLs in urlList are from a different domain than the host field
  • www vs. non-www mismatch (e.g., host: "example.com" but URLs start with "https://www.example.com")
  • HTTPS vs HTTP mismatch in host or URLs
  • Subdomain in URLs doesn't match host (e.g., host: "example.com" but URL is "https://shop.example.com/...")

How to Fix

  1. 1Ensure all URLs in urlList match exactly the domain in the host field
  2. 2If your canonical domain uses www, set host: "www.example.com" and use https://www.example.com/ in all URLs
  3. 3For subdomains, use the subdomain as the host: "shop.example.com"
429 Too Many RequestsmediumRate Limit Exceeded

Common Causes

  • Submitting the same URL multiple times within 24 hours
  • Making too many API requests in rapid succession
  • Automated scripts with no delay between requests

How to Fix

  1. 1Implement exponential backoff: wait 60s on first 429, then 5min, then 30min
  2. 2Batch URLs into maximum-size (10,000) POST requests to minimize request count
  3. 3Add minimum 1-second delays between consecutive batch requests
  4. 4Do not submit the same URL more than once per 24-hour period
400 Bad RequesthighInvalid Request Format

Common Causes

  • Malformed JSON in POST request body
  • Missing required fields: host, key, or urlList
  • urlList is empty or not an array
  • URL in GET request is not properly URL-encoded
  • Content-Type header missing or incorrect

How to Fix

  1. 1Validate your JSON before sending: use a JSON linter
  2. 2Ensure all three required fields are present: host (string), key (string), urlList (array)
  3. 3URL-encode the url parameter in GET requests: encodeURIComponent("https://yourdomain.com/page")
  4. 4Set Content-Type: application/json header on all POST requests

Still Getting Errors?

Use our URL Submitter tool to test your key interactively and see the exact API response. The tool shows human-readable error descriptions.