Submit URLs to IndexNow
POST
/cron/indexnow
const url = 'https://example.com/api/cron/indexnow';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"urls":["https://example.com"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/cron/indexnow \ --header 'Content-Type: application/json' \ --data '{ "urls": [ "https://example.com" ] }'Protected by X-Cron-Secret (CRON_SECRET). Body urls must share one host; max 200 per request. Requires INDEXNOW_KEY. Optional INDEXNOW_KEY_LOCATION.
Request Body required
Section titled “Request Body required ” Media type application/json
object
urls
required
Array<string>
Responses
Section titled “ Responses ”Submitted to IndexNow
Media type application/json
object
submitted
required
boolean
host
required
string
count
required
integer
Invalid request
Media type application/json
object
error
required
Human-readable error message
string
code
Stable machine-readable error code for client branching
string
fieldErrors
First validation message per field path
object
key
additional properties
string
issues
Structured validation issues (Zod)
Array<object>
object
path
required
string
message
required
string
retryAfter
Seconds until rate limit resets (429 responses)
number
Forbidden
Media type application/json
object
error
required
Human-readable error message
string
code
Stable machine-readable error code for client branching
string
fieldErrors
First validation message per field path
object
key
additional properties
string
issues
Structured validation issues (Zod)
Array<object>
object
path
required
string
message
required
string
retryAfter
Seconds until rate limit resets (429 responses)
number
IndexNow upstream or network error
Media type application/json
object
INDEXNOW_KEY not configured
Media type application/json