Read a team member's Exigo figures
Opens someone in the member’s team, by the Exigo customer id a team list’s people carry, for summary, team and activity. The connector refuses anyone outside the member’s downline (exigo.status is not_in_team, 404), and reading anyone other than yourself needs a rep member, company admin or root admin. The member’s own id reads as their own figures. Earnings and the plan are only ever the member’s own. The answer is shaped like the member’s own, and the figures name whose they are (customer_id) and the chain from the member to them (path). A team member who keeps their earnings private appears as Private Member with no estimated payout.
curl --request GET \
--url https://api.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}', 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.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}",
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.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}"
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.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}")
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{
"status": 200,
"exigo": {
"operation": "activity",
"status": "ready",
"as_of": "2026-10-21T15:04:05Z",
"stale": false,
"is_estimate": false,
"figures": {
"operation": "activity",
"customer_id": 4388,
"path": [
{
"customer_id": 4021,
"name": "Sam Example",
"private": false
},
{
"customer_id": 4388,
"name": "Alex Sample",
"private": false
}
],
"recent": [
{
"kind": "order",
"date": "2026-10-12",
"order_id": 90210,
"currency": "usd",
"amount": 84.5
},
{
"kind": "enrollment",
"date": "2026-09-29",
"customer_id": 6150,
"customer_type": "affiliate",
"name": "Jordan Placeholder",
"private": false
},
{
"kind": "title",
"date": "2026-08-01",
"track": "circle",
"title": "Silver"
}
],
"metrics": {
"months_active": 14,
"avg_order_value": 91.25,
"avg_order_currency": "usd",
"growth_trend": 0.04,
"retention_rate": 0.83
}
}
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}{
"status": 401,
"error": {
"message": "A member credential is required",
"details": {
"error": "unauthorized"
}
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}{
"status": 403,
"error": {
"message": "Widget is unavailable for this membership",
"details": {}
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}{
"status": 404,
"exigo": {
"operation": "summary",
"status": "not_in_team",
"as_of": null,
"stale": false,
"is_estimate": false,
"figures": null
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}{
"status": 422,
"error": {
"message": "Query parameters are not supported",
"details": {}
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}{
"status": 503,
"exigo": {
"operation": "summary",
"status": "unavailable",
"as_of": null,
"stale": false,
"is_estimate": false,
"figures": null
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}Authorizations
A member credential in the Authorization: Bearer header: a portal
JWT whose login is linked to a membership in that company, or an
opaque member token. The credential alone identifies the member and
company. A member session JWT, the kind order and subscription email
links carry, is refused with 403. A company admin's own credential is
not a member credential and gets 401.
Path Parameters
Exigo customer id of someone in the member's team, as a team list's customer_id.
^[1-9]\d{0,9}$The operation to read for that person.
summary, team, activity Query Parameters
Month to read, as YYYY-MM. Defaults to the current month in the company's Exigo timezone. Accepted only for summary, team and earnings; plan accepts no query parameters.
^\d{4}-(0[1-9]|1[0-2])$"2026-10"
Page of the team list, 25 per page, from 1 to 1000. Accepted for team. On the member's own earnings it pages both the ledger and the payouts, an older form kept for existing clients; use ledger_page and payouts_page instead.
^([1-9]\d{0,2}|1000)$"2"
Limit the team list to affiliates or customers. Accepted only for team.
affiliate, customer Response
The figures of the person opened. Their shape follows the operation.
The envelope every Exigo answer is in, with or without figures.
curl --request GET \
--url https://api.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}', 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.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}",
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.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}"
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.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/exigo/team/{exigo_id}/{operation}")
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{
"status": 200,
"exigo": {
"operation": "activity",
"status": "ready",
"as_of": "2026-10-21T15:04:05Z",
"stale": false,
"is_estimate": false,
"figures": {
"operation": "activity",
"customer_id": 4388,
"path": [
{
"customer_id": 4021,
"name": "Sam Example",
"private": false
},
{
"customer_id": 4388,
"name": "Alex Sample",
"private": false
}
],
"recent": [
{
"kind": "order",
"date": "2026-10-12",
"order_id": 90210,
"currency": "usd",
"amount": 84.5
},
{
"kind": "enrollment",
"date": "2026-09-29",
"customer_id": 6150,
"customer_type": "affiliate",
"name": "Jordan Placeholder",
"private": false
},
{
"kind": "title",
"date": "2026-08-01",
"track": "circle",
"title": "Silver"
}
],
"metrics": {
"months_active": 14,
"avg_order_value": 91.25,
"avg_order_currency": "usd",
"growth_trend": 0.04,
"retention_rate": 0.83
}
}
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}{
"status": 401,
"error": {
"message": "A member credential is required",
"details": {
"error": "unauthorized"
}
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}{
"status": 403,
"error": {
"message": "Widget is unavailable for this membership",
"details": {}
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}{
"status": 404,
"exigo": {
"operation": "summary",
"status": "not_in_team",
"as_of": null,
"stale": false,
"is_estimate": false,
"figures": null
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}{
"status": 422,
"error": {
"message": "Query parameters are not supported",
"details": {}
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}{
"status": 503,
"exigo": {
"operation": "summary",
"status": "unavailable",
"as_of": null,
"stale": false,
"is_estimate": false,
"figures": null
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-10-21T15:04:05Z"
}
}