Submit URLs to IndexNow
curl --request POST \
--url https://api.snowseo.com/v3/integrations/indexnow/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"<string>"
],
"selection": {
"mode": "ids",
"ids": [
"<string>"
]
}
}
'import requests
url = "https://api.snowseo.com/v3/integrations/indexnow/submit"
payload = {
"urls": ["<string>"],
"selection": {
"mode": "ids",
"ids": ["<string>"]
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({urls: ['<string>'], selection: {mode: 'ids', ids: ['<string>']}})
};
fetch('https://api.snowseo.com/v3/integrations/indexnow/submit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.snowseo.com/v3/integrations/indexnow/submit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'urls' => [
'<string>'
],
'selection' => [
'mode' => 'ids',
'ids' => [
'<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.snowseo.com/v3/integrations/indexnow/submit"
payload := strings.NewReader("{\n \"urls\": [\n \"<string>\"\n ],\n \"selection\": {\n \"mode\": \"ids\",\n \"ids\": [\n \"<string>\"\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.snowseo.com/v3/integrations/indexnow/submit")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"<string>\"\n ],\n \"selection\": {\n \"mode\": \"ids\",\n \"ids\": [\n \"<string>\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/integrations/indexnow/submit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"urls\": [\n \"<string>\"\n ],\n \"selection\": {\n \"mode\": \"ids\",\n \"ids\": [\n \"<string>\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"status": 123,
"message": "<string>"
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}{
"ok": true,
"status": 123,
"message": "<string>"
}Settings
IndexNow
Submit URLs to IndexNow so search engines re-crawl your changed pages faster.
POST
/
v3
/
integrations
/
indexnow
/
submit
Submit URLs to IndexNow
curl --request POST \
--url https://api.snowseo.com/v3/integrations/indexnow/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"<string>"
],
"selection": {
"mode": "ids",
"ids": [
"<string>"
]
}
}
'import requests
url = "https://api.snowseo.com/v3/integrations/indexnow/submit"
payload = {
"urls": ["<string>"],
"selection": {
"mode": "ids",
"ids": ["<string>"]
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({urls: ['<string>'], selection: {mode: 'ids', ids: ['<string>']}})
};
fetch('https://api.snowseo.com/v3/integrations/indexnow/submit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.snowseo.com/v3/integrations/indexnow/submit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'urls' => [
'<string>'
],
'selection' => [
'mode' => 'ids',
'ids' => [
'<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.snowseo.com/v3/integrations/indexnow/submit"
payload := strings.NewReader("{\n \"urls\": [\n \"<string>\"\n ],\n \"selection\": {\n \"mode\": \"ids\",\n \"ids\": [\n \"<string>\"\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.snowseo.com/v3/integrations/indexnow/submit")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"<string>\"\n ],\n \"selection\": {\n \"mode\": \"ids\",\n \"ids\": [\n \"<string>\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/integrations/indexnow/submit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"urls\": [\n \"<string>\"\n ],\n \"selection\": {\n \"mode\": \"ids\",\n \"ids\": [\n \"<string>\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"status": 123,
"message": "<string>"
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}{
"ok": true,
"status": 123,
"message": "<string>"
}Submit one or more URLs to IndexNow to notify participating search engines that pages have been added, updated, or removed - prompting a faster re-crawl.
Request body
IndexNow is an open protocol that pings participating search engines (Microsoft Bing, Yandex, Naver, Seznam.cz, and others) from a single submission. It does not guarantee ranking changes - it only tells engines your URLs are worth re-crawling. The brand must have IndexNow connected and verified first, and every submitted URL must belong to the verified host.
urls- required, non-empty array of absolute URLs (each must be on the brand’s verified host). Maximum 10,000 URLs per submission.
ok (boolean), status (the HTTP status from the IndexNow API, e.g. 200 submitted or 202 accepted/validation pending), and message. A 400 is returned when urls is missing/empty or exceeds the limit, and errors from IndexNow (e.g. 403 key not valid, 422 host/key mismatch) are surfaced with their status and message. If the integration is not connected and verified, or a URL is not on the verified host, the route returns 500 with { "message": "..." }, not 400. IndexNow routes report errors in message, not error.
All IndexNow routes are team-scoped and require an active plan and team membership.Authorizations
bearerAuthapiKey
Your SnowSEO API key (sk_...).
Body
application/json
Was this page helpful?

