1. Key file (ownership proof)
Create a plain-text file named <key>.txt at your site root. The file content must be exactly the key. The engine fetches it to confirm you own the host; without it you get 403. No registration is required.
File name: https://example.com/YOUR_KEY.txt
File body: YOUR_KEY
Rules:
- Content is only the key (no extra spaces/newlines/BOM).
- If hosted elsewhere, set Key file location to the full URL; submitted URLs must sit under that path.
2. Submit URLs (JSON POST)
Send up to 10,000 URLs per request, about one request per second. URLs must be absolute, on the same host, and should be submitted only when changed.
POST https://api.indexnow.org/indexnow
Content-Type: application/json; charset=utf-8
{
"host": "example.com",
"key": "YOUR_KEY",
"keyLocation": "https://example.com/YOUR_KEY.txt",
"urlList": [
"https://example.com/",
"https://example.com/blog/new-post"
]
}
3. Submit one URL (GET)
Useful for quick tests or single URL pings.
GET https://api.indexnow.org/indexnow?url=https%3A%2F%2Fexample.com%2Fblog%2Fnew-post&key=YOUR_KEY
4. curl example
Run from a terminal to see the real HTTP status code.
curl -i -X POST 'https://api.indexnow.org/indexnow' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{
"host": "example.com",
"key": "YOUR_KEY",
"urlList": ["https://example.com/", "https://example.com/blog/new-post"]
}'
5. Response codes
Submitting to one participating endpoint notifies other IndexNow engines (Bing, Yandex, Naver, Seznam, Yep).
200 OK URLs received.
202 Accepted Received; key validation pending.
400 Bad Request Invalid format.
403 Forbidden Key invalid or key file missing/content mismatch.
422 Unprocessable URLs not on host, or key schema mismatch.
429 Too Many Requests Slow down (possible spam flag).