curl --request GET \
--url https://app.sideshift.app/api/oauth/v1/performance/creator-spend \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.sideshift.app/api/oauth/v1/performance/creator-spend"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.sideshift.app/api/oauth/v1/performance/creator-spend', 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://app.sideshift.app/api/oauth/v1/performance/creator-spend",
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://app.sideshift.app/api/oauth/v1/performance/creator-spend"
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://app.sideshift.app/api/oauth/v1/performance/creator-spend")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.sideshift.app/api/oauth/v1/performance/creator-spend")
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{
"data": {
"currency": "usd",
"basis": "platform_creator_spend",
"summary": {
"totalPaidCents": 1,
"contractLinkedPaidCents": 1,
"campaignTaggedUnlinkedPaidCents": 1,
"unattributedPaidCents": 1,
"paymentCount": 1,
"creatorCount": 1,
"campaignCount": 1
},
"campaigns": [
{
"id": "<string>",
"name": "<string>",
"status": "<string>",
"totalPaidCents": 1,
"paymentCount": 1,
"creatorCount": 1
}
],
"payments": [
{
"paymentId": "<string>",
"amountCents": 1,
"status": "<string>",
"paymentType": "<string>",
"paidAt": "2023-11-07T05:31:56Z",
"attribution": "contract",
"contractId": "<string>",
"creator": {
"id": "<string>",
"name": "<string>",
"avatarUrl": "<string>"
},
"campaign": {
"id": "<string>",
"name": "<string>",
"status": "<string>"
}
}
]
},
"nextCursor": "<string>",
"hasMore": true
}{
"error": {
"code": "unauthorized",
"message": "Missing bearer access token",
"requestId": "req_..."
}
}{
"error": {
"code": "insufficient_scope",
"message": "Requires scope 'campaigns:write'",
"requestId": "req_..."
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded",
"requestId": "req_..."
}
}List all PII-safe creator payouts for the token tenant
Returns every creator-spend ledger row recognized by SideShift’s spending report for exactly the company bound to the token or Platform API key. Includes safe creator display identity, safe campaign identity, amount, status, date, type, and tenant-owned contract ID. Includes contract payouts, bonuses, one-time payouts, embed transfers, Quick Pay, and claim-link spend; excludes wallet funding, balance transfers, failed attempts, contact/KYC data, notes, payment terms and calculations, contract documents, and every parent or sibling company. Requires brand-performance:read and the Performance API company feature.
curl --request GET \
--url https://app.sideshift.app/api/oauth/v1/performance/creator-spend \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.sideshift.app/api/oauth/v1/performance/creator-spend"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.sideshift.app/api/oauth/v1/performance/creator-spend', 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://app.sideshift.app/api/oauth/v1/performance/creator-spend",
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://app.sideshift.app/api/oauth/v1/performance/creator-spend"
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://app.sideshift.app/api/oauth/v1/performance/creator-spend")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.sideshift.app/api/oauth/v1/performance/creator-spend")
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{
"data": {
"currency": "usd",
"basis": "platform_creator_spend",
"summary": {
"totalPaidCents": 1,
"contractLinkedPaidCents": 1,
"campaignTaggedUnlinkedPaidCents": 1,
"unattributedPaidCents": 1,
"paymentCount": 1,
"creatorCount": 1,
"campaignCount": 1
},
"campaigns": [
{
"id": "<string>",
"name": "<string>",
"status": "<string>",
"totalPaidCents": 1,
"paymentCount": 1,
"creatorCount": 1
}
],
"payments": [
{
"paymentId": "<string>",
"amountCents": 1,
"status": "<string>",
"paymentType": "<string>",
"paidAt": "2023-11-07T05:31:56Z",
"attribution": "contract",
"contractId": "<string>",
"creator": {
"id": "<string>",
"name": "<string>",
"avatarUrl": "<string>"
},
"campaign": {
"id": "<string>",
"name": "<string>",
"status": "<string>"
}
}
]
},
"nextCursor": "<string>",
"hasMore": true
}{
"error": {
"code": "unauthorized",
"message": "Missing bearer access token",
"requestId": "req_..."
}
}{
"error": {
"code": "insufficient_scope",
"message": "Requires scope 'campaigns:write'",
"requestId": "req_..."
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded",
"requestId": "req_..."
}
}Authorizations
OAuth 2.1 authorization code + PKCE (S256). Tokens are tenant-bound (company_id) and scoped. Discover endpoints via /.well-known/oauth-authorization-server.
- Authorization URL
- https://app.sideshift.app/api/oauth/v1/authorize
- Token URL
- https://app.sideshift.app/api/oauth/v1/token
- Refresh URL
- https://app.sideshift.app/api/oauth/v1/token
Query Parameters
Page size (default 25, max 100). Messaging lists on SideShift's own messaging clamp values above 50 to 50.
1 <= x <= 100Opaque pagination cursor from a prior response's nextCursor.