curl --request GET \
--url https://api.loyaltylion.com/headless/2025-06/{site_id}/configuration \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.loyaltylion.com/headless/2025-06/{site_id}/configuration"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.loyaltylion.com/headless/2025-06/{site_id}/configuration', 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.loyaltylion.com/headless/2025-06/{site_id}/configuration",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.loyaltylion.com/headless/2025-06/{site_id}/configuration"
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.loyaltylion.com/headless/2025-06/{site_id}/configuration")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.loyaltylion.com/headless/2025-06/{site_id}/configuration")
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{
"channel": "web",
"currency": "usd",
"language": "en",
"program": {
"name": "Lion Rewards"
},
"tier_configuration": {
"boundary_mode": "spend",
"tiers": [
{
"id": 1,
"name": "Silver",
"benefit_ids": [
1
],
"hidden": false,
"kind": "spend",
"position": 1,
"lower_bound": {
"amount": 0,
"formatted": "$0"
},
"upper_bound": {
"amount": 99.99,
"formatted": "$99.99"
}
},
{
"id": 2,
"name": "Gold",
"benefit_ids": [
1,
2
],
"hidden": false,
"kind": "spend",
"position": 2,
"lower_bound": {
"amount": 100,
"formatted": "$100"
},
"upper_bound": null
}
],
"tier_benefits": [
{
"id": 1,
"label": "Early access to new products",
"secret": false,
"details": null
},
{
"id": 2,
"label": "Free makeup classes",
"secret": false,
"details": {
"plaintext": "Email classes@example.com to sign up to a class\n",
"html": "<p>Email classes@example.com to sign up to a class</p>"
}
}
],
"membership": {
"mode": "rolling",
"duration_months": 12
}
},
"referee_incentive": {
"minimum_spend": {
"amount": 100,
"formatted": "$100"
},
"incentive_text": "Get a 10% discount on your order with this code when you spend over $100",
"kind": "cart_discount_voucher",
"discount_kind": "percentage",
"discount": {
"percentage": 10,
"formatted": "10%"
}
},
"rules": [
{
"id": 1,
"kind": "purchase",
"variants": [
{
"tier_id": 1,
"enabled": true,
"title": "Make a purchase",
"description": "Earn points every time you shop with us",
"result": {
"kind": "points",
"per_currency_unit": 1,
"points": 5
},
"result_short_text": "5 points per $1"
},
{
"tier_id": 2,
"enabled": true,
"title": "Make a purchase",
"description": "Earn points every time you shop with us",
"result": {
"kind": "points",
"per_currency_unit": 1,
"points": 10
},
"result_short_text": "10 points per $1"
}
],
"limit": null
},
{
"id": 2,
"kind": "pageview",
"variants": [
{
"tier_id": 1,
"enabled": true,
"title": "Visit our online store",
"description": null,
"result": {
"kind": "points",
"per_currency_unit": null,
"points": 100
},
"result_short_text": "100 points"
},
{
"tier_id": 2,
"enabled": true,
"title": "Visit our online store",
"description": null,
"result": {
"kind": "points",
"per_currency_unit": null,
"points": 200
},
"result_short_text": "200 points"
}
],
"limit": {
"count": 1,
"interval": "week"
}
}
],
"rewards": [
{
"id": 1,
"kind": "cart_discount_voucher",
"properties": {
"discount_type": "fixed",
"discount": {
"amount": 5,
"formatted": "$5"
},
"applies_to_order_type": "one_time",
"recurring_cycle_limit": 1,
"supports_active_subscriptions": false,
"minimum_spend": {
"amount": 10,
"formatted": "$10"
}
},
"variants": [
{
"tier_id": 1,
"enabled": true,
"title": "$5 discount",
"description": "Spend your points on $5 off your next order",
"cost": {
"kind": "fixed",
"points": 500
},
"cost_text": "500 points"
},
{
"tier_id": 2,
"enabled": true,
"title": "$5 discount",
"description": "Spend your points on $5 off your next order",
"cost": {
"kind": "fixed",
"points": 400
},
"cost_text": "400 points"
}
],
"limit": null
},
{
"id": 2,
"kind": "cart_variable_discount_voucher",
"properties": {
"minimum_discount": {
"amount": 1,
"formatted": "$1"
},
"maximum_discount": {
"amount": 100,
"formatted": "$100"
},
"applies_to_order_type": "all",
"minimum_spend_before_discount": null,
"minimum_spend_after_discount": null
},
"variants": [
{
"tier_id": 1,
"enabled": false,
"title": "Redeem points at checkout",
"description": null,
"cost": {
"kind": "variable",
"unit": "discount_amount",
"points_per_unit": 100
},
"cost_text": "100 points per $1"
},
{
"tier_id": 2,
"enabled": true,
"title": "Redeem points at checkout",
"description": null,
"cost": {
"kind": "variable",
"unit": "discount_amount",
"points_per_unit": 100
},
"cost_text": "100 points per $1"
}
],
"limit": null
}
]
}{
"error": {
"message": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}Get Configuration
curl --request GET \
--url https://api.loyaltylion.com/headless/2025-06/{site_id}/configuration \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.loyaltylion.com/headless/2025-06/{site_id}/configuration"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.loyaltylion.com/headless/2025-06/{site_id}/configuration', 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.loyaltylion.com/headless/2025-06/{site_id}/configuration",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.loyaltylion.com/headless/2025-06/{site_id}/configuration"
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.loyaltylion.com/headless/2025-06/{site_id}/configuration")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.loyaltylion.com/headless/2025-06/{site_id}/configuration")
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{
"channel": "web",
"currency": "usd",
"language": "en",
"program": {
"name": "Lion Rewards"
},
"tier_configuration": {
"boundary_mode": "spend",
"tiers": [
{
"id": 1,
"name": "Silver",
"benefit_ids": [
1
],
"hidden": false,
"kind": "spend",
"position": 1,
"lower_bound": {
"amount": 0,
"formatted": "$0"
},
"upper_bound": {
"amount": 99.99,
"formatted": "$99.99"
}
},
{
"id": 2,
"name": "Gold",
"benefit_ids": [
1,
2
],
"hidden": false,
"kind": "spend",
"position": 2,
"lower_bound": {
"amount": 100,
"formatted": "$100"
},
"upper_bound": null
}
],
"tier_benefits": [
{
"id": 1,
"label": "Early access to new products",
"secret": false,
"details": null
},
{
"id": 2,
"label": "Free makeup classes",
"secret": false,
"details": {
"plaintext": "Email classes@example.com to sign up to a class\n",
"html": "<p>Email classes@example.com to sign up to a class</p>"
}
}
],
"membership": {
"mode": "rolling",
"duration_months": 12
}
},
"referee_incentive": {
"minimum_spend": {
"amount": 100,
"formatted": "$100"
},
"incentive_text": "Get a 10% discount on your order with this code when you spend over $100",
"kind": "cart_discount_voucher",
"discount_kind": "percentage",
"discount": {
"percentage": 10,
"formatted": "10%"
}
},
"rules": [
{
"id": 1,
"kind": "purchase",
"variants": [
{
"tier_id": 1,
"enabled": true,
"title": "Make a purchase",
"description": "Earn points every time you shop with us",
"result": {
"kind": "points",
"per_currency_unit": 1,
"points": 5
},
"result_short_text": "5 points per $1"
},
{
"tier_id": 2,
"enabled": true,
"title": "Make a purchase",
"description": "Earn points every time you shop with us",
"result": {
"kind": "points",
"per_currency_unit": 1,
"points": 10
},
"result_short_text": "10 points per $1"
}
],
"limit": null
},
{
"id": 2,
"kind": "pageview",
"variants": [
{
"tier_id": 1,
"enabled": true,
"title": "Visit our online store",
"description": null,
"result": {
"kind": "points",
"per_currency_unit": null,
"points": 100
},
"result_short_text": "100 points"
},
{
"tier_id": 2,
"enabled": true,
"title": "Visit our online store",
"description": null,
"result": {
"kind": "points",
"per_currency_unit": null,
"points": 200
},
"result_short_text": "200 points"
}
],
"limit": {
"count": 1,
"interval": "week"
}
}
],
"rewards": [
{
"id": 1,
"kind": "cart_discount_voucher",
"properties": {
"discount_type": "fixed",
"discount": {
"amount": 5,
"formatted": "$5"
},
"applies_to_order_type": "one_time",
"recurring_cycle_limit": 1,
"supports_active_subscriptions": false,
"minimum_spend": {
"amount": 10,
"formatted": "$10"
}
},
"variants": [
{
"tier_id": 1,
"enabled": true,
"title": "$5 discount",
"description": "Spend your points on $5 off your next order",
"cost": {
"kind": "fixed",
"points": 500
},
"cost_text": "500 points"
},
{
"tier_id": 2,
"enabled": true,
"title": "$5 discount",
"description": "Spend your points on $5 off your next order",
"cost": {
"kind": "fixed",
"points": 400
},
"cost_text": "400 points"
}
],
"limit": null
},
{
"id": 2,
"kind": "cart_variable_discount_voucher",
"properties": {
"minimum_discount": {
"amount": 1,
"formatted": "$1"
},
"maximum_discount": {
"amount": 100,
"formatted": "$100"
},
"applies_to_order_type": "all",
"minimum_spend_before_discount": null,
"minimum_spend_after_discount": null
},
"variants": [
{
"tier_id": 1,
"enabled": false,
"title": "Redeem points at checkout",
"description": null,
"cost": {
"kind": "variable",
"unit": "discount_amount",
"points_per_unit": 100
},
"cost_text": "100 points per $1"
},
{
"tier_id": 2,
"enabled": true,
"title": "Redeem points at checkout",
"description": null,
"cost": {
"kind": "variable",
"unit": "discount_amount",
"points_per_unit": 100
},
"cost_text": "100 points per $1"
}
],
"limit": null
}
]
}{
"error": {
"message": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}{
"error": {
"message": "<string>"
}
}Tiers
tier_configuration.boundary_mode is points, spend or orders, and sets
the unit of each tier’s lower_bound and upper_bound: a points total, a
currency amount, or a number of qualifying orders. Every tier except a
conditional tier has a kind matching the boundary mode. Conditional tiers
have no bounds.
For orders programs, bounds are whole numbers of qualifying orders and are
inclusive. A tier with a lower bound of 3 and an upper bound of 5 holds
customers with 3, 4 or 5 qualifying orders. The highest tier has an
upper_bound of null.
A qualifying order is paid or partially paid, not cancelled, and not fully
refunded. A partially refunded order still counts as one order. Only orders
placed after the program launched, and within the tier evaluation window, are
counted. If the program sets a minimum qualifying order value, an order only
counts when its value, net of refunds and gift cards, meets that minimum. The
minimum is compared against the order total, or against the product subtotal
if the program is set up that way.Authorizations
An API key linked to a Program in LoyaltyLion, with a set of permissions (scopes). API keys can be created manually, or acquired through an OAuth2 flow. The API key should be provided as a Bearer token in the Authorization header
Path Parameters
Your LoyaltyLion Site ID
Query Parameters
The sales channel from which this request is made
web, pos, mobile ISO 3166-1 alpha-2 country code for the customer. Used to filter rewards by country availability. If not provided, the site default is used
Response
200
The sales channel for which this response was generated
web, pos, mobile ISO 4217 code indicating the currency for any financial values in this response
"usd"
ISO 639-1 code indicating the language used for any text in this response
Show child attributes
Show child attributes
The tier configuration for the program, or null if tiers are not enabled
Show child attributes
Show child attributes
{
"boundary_mode": "spend",
"tiers": [
{
"id": 1,
"name": "Silver",
"benefit_ids": [1],
"hidden": false,
"kind": "spend",
"position": 1,
"lower_bound": { "amount": 0, "formatted": "$0" },
"upper_bound": { "amount": 99.99, "formatted": "$99.99" }
},
{
"id": 2,
"name": "Gold",
"benefit_ids": [1, 2],
"hidden": false,
"kind": "spend",
"position": 2,
"lower_bound": { "amount": 100, "formatted": "$100" },
"upper_bound": null
}
],
"tier_benefits": [
{
"id": 1,
"label": "Early access to new products",
"secret": false,
"details": null
},
{
"id": 2,
"label": "Free makeup classes",
"secret": false,
"details": {
"plaintext": "Email classes@example.com to sign up to a class\n",
"html": "<p>Email classes@example.com to sign up to a class</p>"
}
}
],
"membership": { "mode": "rolling", "duration_months": 12 }
}
Ordered list of rules that belong to this site. Each rule will have one or more variants that indicate its configuration and if it is enabled per tier. Rules have a kind property, and some kinds of rules will have properties that are specific to that rule kind
- Birthday
- Loyalty pass install
- Collection purchase
- Newsletter signup
- Pageview
- Product purchase
- Purchase
- Join program
- Review
- Custom
- Facebook Like
- Twitter follow
- Instagram follow
- Instagram mention
- Instagram post hashtag
- Tiktok follow
- Tiktok post hashtag
- Referral
- Clickthrough
- Retail purchase
Show child attributes
Show child attributes
Ordered list of rewards that belong to this site. Each reward will have one or more variants that indicate its configuration and if it is enabled per tier. Rewards have a kind property, and some kinds of rewards will have properties that are specific to that reward kind
A gift card that can be used for future orders until its balance runs out
- Gift card
- Cart discount voucher
- Cart variable discount
- Free shipping voucher
- Product discount voucher
- Collection discount voucher
- Product cart
- Active subscription discount voucher
- Active subscription product
- Custom
Show child attributes
Show child attributes
The referee incentive for the program, included only if one is enabled. This is a description of the incentive and does not include an actual voucher code, which is available through the referee incentive endpoint instead
- Cart Discount Voucher
- Free Shipping Voucher
Show child attributes
Show child attributes