Page current team subtree
Requires a current member identity from the existing member/customer JWT or legacy user-token authentication path. Company service tokens are rejected, and so is any credential the member API refuses, such as an admin’s credential or a member who can no longer act. A member whose user is also an admin of the company may read their own team with their own member token, one no admin holds. Any current member type can page their own primary seat or a node currently in its downline at relative depth zero followed by its kept strict descendants, breadth-first by (relative_depth, id), within the admitted depth 1-7 / 10,000-position profile. The anchor’s parent identity is masked when it lies outside the member scope. Member scope is applied before pagination; there is no member-id selector. Depth beyond the profile and within-range position overflow return pagination_requires_projection without partial output; a statement deadline returns lookup_too_large. Only depth, cursor, limit, ids_only, and as_of query parameters are accepted; body, filters, history, and other depth selectors are refused. Cursors bind the requester, tree, anchor, operation, depth, and ordering and grant no access. A move or discard can change later pages; these are not frozen snapshots. This endpoint neither creates seats nor changes legacy genealogy readers.
curl --request GET \
--url https://api.fluid.app/api/member/v2026-10/team/{id}/subtree \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/team/{id}/subtree"
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/{id}/subtree', 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/{id}/subtree",
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/{id}/subtree"
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/{id}/subtree")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/team/{id}/subtree")
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,
"nodes": [
{
"id": "019e5b8a-4c10-7000-8000-000000000001",
"tree_id": "7096ad49-7117-53f6-8f7f-4805473d14c5",
"member_id": "019e5b8a-4c10-7000-8000-000000000002",
"parent_node_id": null,
"leg": null,
"position": 0,
"pinned": false,
"relative_depth": 0
}
],
"meta": {
"request_uuid": null,
"timestamp": "2026-09-16T00:00:00Z",
"pagination": {
"cursor": null,
"next_cursor": null,
"limit": 100,
"ordering": "relative_depth_id_asc"
},
"traversal": {
"depth_truncated": false
}
}
}{
"message": "<string>",
"error": "<unknown>"
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
A member credential for the member's own team — a member or customer session JWT, a portal JWT, or a member's user token. It follows the member API's credential rules. Company service tokens, admin credentials and members who can no longer act are refused, and a session JWT cannot write. A member whose user is also an admin of the company may read, but not change, their own team with their own member token, one no admin holds.
Path Parameters
Query Parameters
curl --request GET \
--url https://api.fluid.app/api/member/v2026-10/team/{id}/subtree \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/team/{id}/subtree"
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/{id}/subtree', 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/{id}/subtree",
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/{id}/subtree"
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/{id}/subtree")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/team/{id}/subtree")
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,
"nodes": [
{
"id": "019e5b8a-4c10-7000-8000-000000000001",
"tree_id": "7096ad49-7117-53f6-8f7f-4805473d14c5",
"member_id": "019e5b8a-4c10-7000-8000-000000000002",
"parent_node_id": null,
"leg": null,
"position": 0,
"pinned": false,
"relative_depth": 0
}
],
"meta": {
"request_uuid": null,
"timestamp": "2026-09-16T00:00:00Z",
"pagination": {
"cursor": null,
"next_cursor": null,
"limit": 100,
"ordering": "relative_depth_id_asc"
},
"traversal": {
"depth_truncated": false
}
}
}{
"message": "<string>",
"error": "<unknown>"
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}