curl --request POST \
--url https://api.loyaltylion.com/v2/customers/exports \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"created_at_min": "<string>",
"created_at_max": "<string>",
"updated_at_min": "<string>",
"updated_at_max": "<string>"
}
'import requests
url = "https://api.loyaltylion.com/v2/customers/exports"
payload = {
"email": "<string>",
"created_at_min": "<string>",
"created_at_max": "<string>",
"updated_at_min": "<string>",
"updated_at_max": "<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({
email: '<string>',
created_at_min: '<string>',
created_at_max: '<string>',
updated_at_min: '<string>',
updated_at_max: '<string>'
})
};
fetch('https://api.loyaltylion.com/v2/customers/exports', 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/v2/customers/exports",
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([
'email' => '<string>',
'created_at_min' => '<string>',
'created_at_max' => '<string>',
'updated_at_min' => '<string>',
'updated_at_max' => '<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.loyaltylion.com/v2/customers/exports"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"created_at_min\": \"<string>\",\n \"created_at_max\": \"<string>\",\n \"updated_at_min\": \"<string>\",\n \"updated_at_max\": \"<string>\"\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.loyaltylion.com/v2/customers/exports")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"created_at_min\": \"<string>\",\n \"created_at_max\": \"<string>\",\n \"updated_at_min\": \"<string>\",\n \"updated_at_max\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.loyaltylion.com/v2/customers/exports")
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 \"email\": \"<string>\",\n \"created_at_min\": \"<string>\",\n \"created_at_max\": \"<string>\",\n \"updated_at_min\": \"<string>\",\n \"updated_at_max\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"export": {
"id": 123,
"filters": {
"email": "<string>",
"created_at_min": "<string>",
"created_at_max": "<string>",
"updated_at_min": "<string>",
"updated_at_max": "<string>"
},
"created_at": "<string>",
"status": "pending"
}
}{
"error": {
"message": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "export_in_progress",
"export_id": 123
}
}Create Export
curl --request POST \
--url https://api.loyaltylion.com/v2/customers/exports \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"created_at_min": "<string>",
"created_at_max": "<string>",
"updated_at_min": "<string>",
"updated_at_max": "<string>"
}
'import requests
url = "https://api.loyaltylion.com/v2/customers/exports"
payload = {
"email": "<string>",
"created_at_min": "<string>",
"created_at_max": "<string>",
"updated_at_min": "<string>",
"updated_at_max": "<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({
email: '<string>',
created_at_min: '<string>',
created_at_max: '<string>',
updated_at_min: '<string>',
updated_at_max: '<string>'
})
};
fetch('https://api.loyaltylion.com/v2/customers/exports', 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/v2/customers/exports",
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([
'email' => '<string>',
'created_at_min' => '<string>',
'created_at_max' => '<string>',
'updated_at_min' => '<string>',
'updated_at_max' => '<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.loyaltylion.com/v2/customers/exports"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"created_at_min\": \"<string>\",\n \"created_at_max\": \"<string>\",\n \"updated_at_min\": \"<string>\",\n \"updated_at_max\": \"<string>\"\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.loyaltylion.com/v2/customers/exports")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"created_at_min\": \"<string>\",\n \"created_at_max\": \"<string>\",\n \"updated_at_min\": \"<string>\",\n \"updated_at_max\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.loyaltylion.com/v2/customers/exports")
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 \"email\": \"<string>\",\n \"created_at_min\": \"<string>\",\n \"created_at_max\": \"<string>\",\n \"updated_at_min\": \"<string>\",\n \"updated_at_max\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"export": {
"id": 123,
"filters": {
"email": "<string>",
"created_at_min": "<string>",
"created_at_max": "<string>",
"updated_at_min": "<string>",
"updated_at_max": "<string>"
},
"created_at": "<string>",
"status": "pending"
}
}{
"error": {
"message": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "export_in_progress",
"export_id": 123
}
}completed, then fetch the file from download_url.
The filters are the ones List Customers
takes, and each line of the file is one customer in the shape that endpoint
returns. An empty body exports every customer.
A program may have one export pending or processing at a time. A second
request returns 409 naming the export already running.
See the customer exports guide
for the full flow.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
Body
Body
Return only customers whose email contains the specified string
Return only customers created on or after the specified ISO 8601 datetime string
Return only customers created before the specified ISO 8601 datetime string
Return only customers updated on or after the specified ISO 8601 datetime string
Return only customers updated before the specified ISO 8601 datetime string
Response
202
An export moves from pending to processing to completed, and to expired once its file is deleted seven days later; a run that cannot finish ends failed. Which fields are present depends on its status
- Pending customer export
- Processing customer export
- Completed customer export
- Expired customer export
- Failed customer export
Show child attributes
Show child attributes