Node.js
import Shoply from "@shoplygg/node";
const shoply = new Shoply({ apiKey: process.env.SHOPLY_API_KEY });
const result = await shoply.storefronts.setLive("STOREFRONT_ID");<?php
require 'vendor/autoload.php';
$shoply = new Shoply\Client(['apiKey' => getenv('SHOPLY_API_KEY')]);
$result = $shoply->storefronts->setLive('STOREFRONT_ID');
import shoply
client = shoply.Client() # reads SHOPLY_API_KEY
result = client.storefronts.setLive("STOREFRONT_ID")
curl --request POST \
--url https://api.shoply.gg/v1/stores/{storeId}/storefronts/{storefrontId}/live \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"publish": false
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.shoply.gg/v1/stores/{storeId}/storefronts/{storefrontId}/live"
payload := strings.NewReader("{\n \"publish\": false\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.shoply.gg/v1/stores/{storeId}/storefronts/{storefrontId}/live")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"publish\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoply.gg/v1/stores/{storeId}/storefronts/{storefrontId}/live")
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 \"publish\": false\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": null,
"code": null,
"data": [
{
"id": "93618f34-cfad-44d8-a677-253b7238f272",
"name": "Autumn look, second go",
"theme": "keystone",
"themeVersion": "2.6.0",
"published": true,
"publishedAt": "2026-10-22T16:20:20Z",
"live": false,
"createdAt": "2026-10-22T16:20:20Z",
"updatedAt": "2026-10-22T16:20:20Z",
"code": true,
"engine": "files",
"codeOnCopy": null,
"unpublished": false,
"accent": null,
"headingFont": null,
"pages": 6
},
{
"id": "12eb4032-5629-4f87-a8be-acec32363c9a",
"name": "Main storefront",
"theme": "simplistic",
"themeVersion": "2.5.0",
"published": true,
"publishedAt": "2026-10-22T16:20:20Z",
"live": true,
"createdAt": "2026-10-22T16:20:20Z",
"updatedAt": "2026-10-22T16:20:20Z",
"code": true,
"engine": "files",
"codeOnCopy": null,
"unpublished": false,
"accent": null,
"headingFont": null,
"pages": 6
}
],
"meta": {
"liveId": "12eb4032-5629-4f87-a8be-acec32363c9a",
"limit": 10,
"themes": [
{
"id": "simplistic",
"name": "Simplistic",
"description": "Product cards, a search bar at the top, categories as tiles and a slide-out cart.",
"version": "2.5.0",
"schemes": [
"light",
"dark"
],
"headingFont": "Inter",
"features": [
"Light and dark mode",
"Your logo, favicon and accent colour"
],
"demoUrl": "https://simplistic-demo.myshoply.gg"
},
{
"id": "keystone",
"name": "Keystone",
"description": "A full-screen hero with search, category covers and a product page built around one buy panel.",
"version": "2.6.0",
"schemes": [
"dark"
],
"headingFont": "Red Hat Display",
"features": [
"Dark look in your accent colour, pictures included",
"Full-screen hero with search and shortcuts"
],
"demoUrl": "https://keystone-demo.myshoply.gg"
}
],
"storeUrl": "https://northwind.myshoply.gg",
"storeAccent": "#6a3ce2"
}
}{
"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": {}
}Storefronts
Make a storefront live
Makes this storefront the one buyers see, as it was last published. Answers the store’s storefronts again.
Needs the storefronts.write permission (Change Storefronts).
POST
/
stores
/
{storeId}
/
storefronts
/
{storefrontId}
/
live
Node.js
import Shoply from "@shoplygg/node";
const shoply = new Shoply({ apiKey: process.env.SHOPLY_API_KEY });
const result = await shoply.storefronts.setLive("STOREFRONT_ID");<?php
require 'vendor/autoload.php';
$shoply = new Shoply\Client(['apiKey' => getenv('SHOPLY_API_KEY')]);
$result = $shoply->storefronts->setLive('STOREFRONT_ID');
import shoply
client = shoply.Client() # reads SHOPLY_API_KEY
result = client.storefronts.setLive("STOREFRONT_ID")
curl --request POST \
--url https://api.shoply.gg/v1/stores/{storeId}/storefronts/{storefrontId}/live \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"publish": false
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.shoply.gg/v1/stores/{storeId}/storefronts/{storefrontId}/live"
payload := strings.NewReader("{\n \"publish\": false\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.shoply.gg/v1/stores/{storeId}/storefronts/{storefrontId}/live")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"publish\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoply.gg/v1/stores/{storeId}/storefronts/{storefrontId}/live")
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 \"publish\": false\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": null,
"code": null,
"data": [
{
"id": "93618f34-cfad-44d8-a677-253b7238f272",
"name": "Autumn look, second go",
"theme": "keystone",
"themeVersion": "2.6.0",
"published": true,
"publishedAt": "2026-10-22T16:20:20Z",
"live": false,
"createdAt": "2026-10-22T16:20:20Z",
"updatedAt": "2026-10-22T16:20:20Z",
"code": true,
"engine": "files",
"codeOnCopy": null,
"unpublished": false,
"accent": null,
"headingFont": null,
"pages": 6
},
{
"id": "12eb4032-5629-4f87-a8be-acec32363c9a",
"name": "Main storefront",
"theme": "simplistic",
"themeVersion": "2.5.0",
"published": true,
"publishedAt": "2026-10-22T16:20:20Z",
"live": true,
"createdAt": "2026-10-22T16:20:20Z",
"updatedAt": "2026-10-22T16:20:20Z",
"code": true,
"engine": "files",
"codeOnCopy": null,
"unpublished": false,
"accent": null,
"headingFont": null,
"pages": 6
}
],
"meta": {
"liveId": "12eb4032-5629-4f87-a8be-acec32363c9a",
"limit": 10,
"themes": [
{
"id": "simplistic",
"name": "Simplistic",
"description": "Product cards, a search bar at the top, categories as tiles and a slide-out cart.",
"version": "2.5.0",
"schemes": [
"light",
"dark"
],
"headingFont": "Inter",
"features": [
"Light and dark mode",
"Your logo, favicon and accent colour"
],
"demoUrl": "https://simplistic-demo.myshoply.gg"
},
{
"id": "keystone",
"name": "Keystone",
"description": "A full-screen hero with search, category covers and a product page built around one buy panel.",
"version": "2.6.0",
"schemes": [
"dark"
],
"headingFont": "Red Hat Display",
"features": [
"Dark look in your accent colour, pictures included",
"Full-screen hero with search and shortcuts"
],
"demoUrl": "https://keystone-demo.myshoply.gg"
}
],
"storeUrl": "https://northwind.myshoply.gg",
"storeAccent": "#6a3ce2"
}
}{
"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 storefront.
Body
application/json
For a storefront that was never published: publish it as it stands and make it live in one go. A mistake in one of its templates refuses it and names the file.

