Node.js
import Shoply from "@shoplygg/node";
const shoply = new Shoply({ apiKey: process.env.SHOPLY_API_KEY });
const result = await shoply.sitemap.updateKind("KIND");<?php
require 'vendor/autoload.php';
$shoply = new Shoply\Client(['apiKey' => getenv('SHOPLY_API_KEY')]);
$result = $shoply->sitemap->updateKind('KIND');
import shoply
client = shoply.Client() # reads SHOPLY_API_KEY
result = client.sitemap.updateKind("KIND")
curl --request PUT \
--url https://api.shoply.gg/v1/stores/{storeId}/sitemap/kinds/{kind} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"listed": true,
"priority": "0.8"
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.shoply.gg/v1/stores/{storeId}/sitemap/kinds/{kind}"
payload := strings.NewReader("{\n \"listed\": true,\n \"priority\": \"0.8\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.shoply.gg/v1/stores/{storeId}/sitemap/kinds/{kind}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"listed\": true,\n \"priority\": \"0.8\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoply.gg/v1/stores/{storeId}/sitemap/kinds/{kind}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"listed\": true,\n \"priority\": \"0.8\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": null,
"code": null,
"data": {
"url": "https://northwind.myshoply.gg/sitemap.xml",
"served": true,
"total": 9,
"listed": 9,
"priorities": [
"1.0",
"0.9"
],
"frequencies": [
"always",
"hourly"
],
"kinds": [
{
"id": "pages",
"listed": true,
"priority": "0.6",
"changefreq": "weekly",
"entries": [
{
"ref": "home",
"name": "Home",
"path": "/",
"changed": "2026-10-22",
"on": true,
"priority": "1.0",
"changefreq": "daily"
},
{
"ref": "products",
"name": "Products",
"path": "/products/",
"changed": "2026-10-22",
"on": true,
"priority": "0.6",
"changefreq": "weekly"
}
]
},
{
"id": "categories",
"listed": true,
"priority": "0.8",
"changefreq": "weekly",
"entries": [
{
"ref": "e31dbb6f-c007-4e28-b0f8-49c4b432cfec",
"name": "Software",
"path": "/products/?category=software",
"changed": "2026-10-22",
"on": true,
"priority": "0.8",
"changefreq": "weekly"
}
]
}
]
}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}Sitemap
Update a kind of address
Sets the rule for a whole kind. Every address of that kind that has no rule of its own follows it, and a kind that is not listed lists none of its addresses. Send any of the three. Answers the whole sitemap again.
Needs the seo.write permission (Change Search Settings).
PUT
/
stores
/
{storeId}
/
sitemap
/
kinds
/
{kind}
Node.js
import Shoply from "@shoplygg/node";
const shoply = new Shoply({ apiKey: process.env.SHOPLY_API_KEY });
const result = await shoply.sitemap.updateKind("KIND");<?php
require 'vendor/autoload.php';
$shoply = new Shoply\Client(['apiKey' => getenv('SHOPLY_API_KEY')]);
$result = $shoply->sitemap->updateKind('KIND');
import shoply
client = shoply.Client() # reads SHOPLY_API_KEY
result = client.sitemap.updateKind("KIND")
curl --request PUT \
--url https://api.shoply.gg/v1/stores/{storeId}/sitemap/kinds/{kind} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"listed": true,
"priority": "0.8"
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.shoply.gg/v1/stores/{storeId}/sitemap/kinds/{kind}"
payload := strings.NewReader("{\n \"listed\": true,\n \"priority\": \"0.8\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.shoply.gg/v1/stores/{storeId}/sitemap/kinds/{kind}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"listed\": true,\n \"priority\": \"0.8\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoply.gg/v1/stores/{storeId}/sitemap/kinds/{kind}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"listed\": true,\n \"priority\": \"0.8\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": null,
"code": null,
"data": {
"url": "https://northwind.myshoply.gg/sitemap.xml",
"served": true,
"total": 9,
"listed": 9,
"priorities": [
"1.0",
"0.9"
],
"frequencies": [
"always",
"hourly"
],
"kinds": [
{
"id": "pages",
"listed": true,
"priority": "0.6",
"changefreq": "weekly",
"entries": [
{
"ref": "home",
"name": "Home",
"path": "/",
"changed": "2026-10-22",
"on": true,
"priority": "1.0",
"changefreq": "daily"
},
{
"ref": "products",
"name": "Products",
"path": "/products/",
"changed": "2026-10-22",
"on": true,
"priority": "0.6",
"changefreq": "weekly"
}
]
},
{
"id": "categories",
"listed": true,
"priority": "0.8",
"changefreq": "weekly",
"entries": [
{
"ref": "e31dbb6f-c007-4e28-b0f8-49c4b432cfec",
"name": "Software",
"path": "/products/?category=software",
"changed": "2026-10-22",
"on": true,
"priority": "0.8",
"changefreq": "weekly"
}
]
}
]
}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}Authorizations
A secret API key, made under Developers in the dashboard: Authorization: Bearer shoply_sk_...
Headers
A word of your own for this one change, up to 180 letters, digits, dots, dashes, underscores and colons. Sent again with the same key, the request is not carried out twice: the first answer comes back, with Idempotent-Replay: true.
Path Parameters
The store's ID. A key reaches the store it was made in: GET /key answers which.
The kind: pages, categories, products or blog.
Body
application/json

