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 FailedCommon 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
- 1Open https://yourdomain.com/{your-key}.txt in your browser and verify it shows ONLY the key string
- 2Check the HTTP status: curl -I https://yourdomain.com/{key}.txt must return "HTTP/2 200" or "HTTP/1.1 200 OK"
- 3Recreate the file using: echo -n "your-key" > your-key.txt (the -n flag prevents adding a newline)
- 4Check for redirects: your CDN or server might be redirecting .txt files. Disable redirects for this specific file.
- 5Verify the Content-Type header is text/plain, not text/html
422 Unprocessable EntityhighURLs Don't Match the HostCommon 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
- 1Ensure all URLs in urlList match exactly the domain in the host field
- 2If your canonical domain uses www, set host: "www.example.com" and use https://www.example.com/ in all URLs
- 3For subdomains, use the subdomain as the host: "shop.example.com"
429 Too Many RequestsmediumRate Limit ExceededCommon 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
- 1Implement exponential backoff: wait 60s on first 429, then 5min, then 30min
- 2Batch URLs into maximum-size (10,000) POST requests to minimize request count
- 3Add minimum 1-second delays between consecutive batch requests
- 4Do not submit the same URL more than once per 24-hour period
400 Bad RequesthighInvalid Request FormatCommon 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
- 1Validate your JSON before sending: use a JSON linter
- 2Ensure all three required fields are present: host (string), key (string), urlList (array)
- 3URL-encode the url parameter in GET requests: encodeURIComponent("https://yourdomain.com/page")
- 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.