Count the Team's subscriptions due to renew soon
The active subscriptions the signed-in member’s current Team members hold that are due to bill
within the window: from the start of today, UTC, through the end of the window’s last UTC day,
counted at each of the five levels below the member, with how many Team members hold one. The
Team is the one GET /api/member/v2026-10/team lists, found the same way; a subscription is a
member’s when they own it, as in GET /api/member/v2026-10/team/subscriptions/summary. Paused,
past-due, pending and cancelled subscriptions, and those the platform has stopped billing, do not
count. Only subscriptions of the member’s company count. Counts only: no Team member or
subscription is named.
A member with no downline gets zeros. In a company on tree reads, a member with no seat in the enrollment tree gets 404, as in the list.
The same members may read it as may read the summary, the legacy My Team authorize_rep_tier:
reps, company admins and root admins, on a member token or portal JWT. A customer or
preferred-customer membership is refused with 403, even with a valid credential, as is a member
session JWT. No parameter selects another member: the Team is always the credential’s own.
Current Team membership is rechecked on every request, so the response is private and must be revalidated before reuse.
curl --request GET \
--url https://api.fluid.app/api/member/v2026-10/team/subscriptions/upcoming \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/team/subscriptions/upcoming"
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/team/subscriptions/upcoming', 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/team/subscriptions/upcoming",
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/team/subscriptions/upcoming"
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/team/subscriptions/upcoming")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/team/subscriptions/upcoming")
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,
"data": {
"window": "30d",
"from": "2026-11-11",
"through": "2026-12-11",
"total_count": 13,
"by_level": [
{
"level": 1,
"count": 8
},
{
"level": 2,
"count": 4
},
{
"level": 3,
"count": 1
},
{
"level": 4,
"count": 0
},
{
"level": 5,
"count": 0
}
],
"member_count": 11,
"team_count": 27
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-11-11T15:04:05Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
A member credential in the Authorization: Bearer header: a portal
JWT whose login is linked to a membership in that company, or a 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, as legacy My Team needs a rep session. A customer
or preferred-customer membership is refused with 403 too: legacy My
Team (authorize_rep_tier) admits reps, company admins and root
admins. A company admin's own credential is not a member credential
and gets 401, so in practice a rep's or a root admin's membership
reads the Team.
Headers
Query Parameters
Response
The Team's renewals due in the window, per level.
The signed-in member's Team renewals due in a window.
curl --request GET \
--url https://api.fluid.app/api/member/v2026-10/team/subscriptions/upcoming \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/team/subscriptions/upcoming"
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/team/subscriptions/upcoming', 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/team/subscriptions/upcoming",
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/team/subscriptions/upcoming"
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/team/subscriptions/upcoming")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/team/subscriptions/upcoming")
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,
"data": {
"window": "30d",
"from": "2026-11-11",
"through": "2026-12-11",
"total_count": 13,
"by_level": [
{
"level": 1,
"count": 8
},
{
"level": 2,
"count": 4
},
{
"level": 3,
"count": 1
},
{
"level": 4,
"count": 0
},
{
"level": 5,
"count": 0
}
],
"member_count": 11,
"team_count": 27
},
"meta": {
"request_uuid": "01a0f4fe-de00-75b3-8d8a-b74b0cde8b07",
"timestamp": "2026-11-11T15:04:05Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}