Node.js
import Shoply from "@shoplygg/node";
const shoply = new Shoply({ apiKey: process.env.SHOPLY_API_KEY });
const result = await shoply.affiliates.list();<?php
require 'vendor/autoload.php';
$shoply = new Shoply\Client(['apiKey' => getenv('SHOPLY_API_KEY')]);
$result = $shoply->affiliates->list();
import shoply
client = shoply.Client() # reads SHOPLY_API_KEY
result = client.affiliates.list()
curl --request GET \
--url https://api.shoply.gg/v1/stores/{storeId}/affiliates \
--header 'Authorization: Bearer <token>'package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.shoply.gg/v1/stores/{storeId}/affiliates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.shoply.gg/v1/stores/{storeId}/affiliates")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoply.gg/v1/stores/{storeId}/affiliates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": null,
"code": null,
"data": [
{
"id": "7fe2bc2a-aa86-4cd0-9322-7525740509f3",
"customerId": "f637fc21-973d-43ec-a7db-f819a9ebf73a",
"email": "ada@example.com",
"code": "ada",
"link": "https://northwind.myshoply.gg/?ref=ada",
"commission": 15,
"discount": 5,
"active": true,
"clicks": 0,
"orders": 0,
"revenue": 0,
"earned": 0,
"balance": 0,
"requested": 0,
"paidOut": 0,
"paidAsCredit": 0,
"joinedThemselves": false,
"dateCreated": "2026-10-22T16:20:19Z"
}
],
"meta": {
"totals": {
"affiliates": 1,
"on": 1,
"clicks": 0,
"orders": 0,
"revenue": 0,
"earned": 0,
"owed": 0,
"paidOut": 0,
"paidAsCredit": 0
},
"payouts": {
"open": 0,
"requested": 0
},
"programme": {
"enabled": true,
"defaultCommission": 10,
"defaultDiscount": 5,
"selfSignup": false,
"ownLinks": false,
"toStore": true,
"payouts": true
},
"referred": 0,
"limit": 500,
"limits": {
"commission": 90,
"discount": 90,
"code": 40
},
"currencyCode": "USD",
"home": "https://northwind.myshoply.gg"
}
}{
"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": {}
}Affiliates
List affiliates
Every affiliate of the store, each with their link, their rates, what their link has led to, what they have earned and what they are owed. meta.totals adds them up, and meta.programme is the programme’s settings. A store holds up to 500, so the list is not paged.
Needs the affiliates.read permission (Read Affiliates).
GET
/
stores
/
{storeId}
/
affiliates
Node.js
import Shoply from "@shoplygg/node";
const shoply = new Shoply({ apiKey: process.env.SHOPLY_API_KEY });
const result = await shoply.affiliates.list();<?php
require 'vendor/autoload.php';
$shoply = new Shoply\Client(['apiKey' => getenv('SHOPLY_API_KEY')]);
$result = $shoply->affiliates->list();
import shoply
client = shoply.Client() # reads SHOPLY_API_KEY
result = client.affiliates.list()
curl --request GET \
--url https://api.shoply.gg/v1/stores/{storeId}/affiliates \
--header 'Authorization: Bearer <token>'package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.shoply.gg/v1/stores/{storeId}/affiliates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.shoply.gg/v1/stores/{storeId}/affiliates")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoply.gg/v1/stores/{storeId}/affiliates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": null,
"code": null,
"data": [
{
"id": "7fe2bc2a-aa86-4cd0-9322-7525740509f3",
"customerId": "f637fc21-973d-43ec-a7db-f819a9ebf73a",
"email": "ada@example.com",
"code": "ada",
"link": "https://northwind.myshoply.gg/?ref=ada",
"commission": 15,
"discount": 5,
"active": true,
"clicks": 0,
"orders": 0,
"revenue": 0,
"earned": 0,
"balance": 0,
"requested": 0,
"paidOut": 0,
"paidAsCredit": 0,
"joinedThemselves": false,
"dateCreated": "2026-10-22T16:20:19Z"
}
],
"meta": {
"totals": {
"affiliates": 1,
"on": 1,
"clicks": 0,
"orders": 0,
"revenue": 0,
"earned": 0,
"owed": 0,
"paidOut": 0,
"paidAsCredit": 0
},
"payouts": {
"open": 0,
"requested": 0
},
"programme": {
"enabled": true,
"defaultCommission": 10,
"defaultDiscount": 5,
"selfSignup": false,
"ownLinks": false,
"toStore": true,
"payouts": true
},
"referred": 0,
"limit": 500,
"limits": {
"commission": 90,
"discount": 90,
"code": 40
},
"currencyCode": "USD",
"home": "https://northwind.myshoply.gg"
}
}{
"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_...
Path Parameters
The store's ID. A key reaches the store it was made in: GET /key answers which.

