List recorded placements for member access
Requires a current member identity from a member/customer JWT or legacy user token. 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 may read their own seat and current downline. Historical access follows today’s scope; parent identities outside it are clipped to null. Member selectors are not supported. Returns only recorded relationships; historical rank, volume and profile values are not inferred. Reads use the primary database. The example uses illustrative fixture IDs. Substitute records visible to your authenticated company or member.
curl -X GET 'https://api.fluid.app/api/member/v2026-10/team/01a08944-eff4-7a2a-be01-d699fa649966/placements' \
-H 'Authorization: Bearer <member-token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/team/{id}/placements"
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}/placements', 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}/placements",
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}/placements"
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}/placements")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/team/{id}/placements")
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{
"placements": [
{
"id": "01a08944-eff5-7d3e-8f3e-7886e974a14a",
"actor_id": null,
"actor_type": null,
"effective_at": "2026-09-10T03:03:11.604825Z",
"ended_at": null,
"leg": null,
"member_id": "423f3c52-5440-5955-8e53-e2050d0b86b6",
"node_id": "01a08944-eff4-7a2a-be01-d699fa649966",
"parent_node_id": "01a08944-efec-7d23-8788-2eac746be4a8",
"reason": null,
"request_id": null,
"source": "admin",
"tree_id": "7096ad49-7117-53f6-8f7f-4805473d14c5"
}
],
"status": 200,
"meta": {
"request_uuid": null,
"timestamp": "2026-09-10T03:03:11Z",
"pagination": {
"cursor": null,
"limit": 25,
"prev_cursor": null,
"next_cursor": null
}
}
}{
"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.
Query Parameters
curl -X GET 'https://api.fluid.app/api/member/v2026-10/team/01a08944-eff4-7a2a-be01-d699fa649966/placements' \
-H 'Authorization: Bearer <member-token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/team/{id}/placements"
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}/placements', 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}/placements",
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}/placements"
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}/placements")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/team/{id}/placements")
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{
"placements": [
{
"id": "01a08944-eff5-7d3e-8f3e-7886e974a14a",
"actor_id": null,
"actor_type": null,
"effective_at": "2026-09-10T03:03:11.604825Z",
"ended_at": null,
"leg": null,
"member_id": "423f3c52-5440-5955-8e53-e2050d0b86b6",
"node_id": "01a08944-eff4-7a2a-be01-d699fa649966",
"parent_node_id": "01a08944-efec-7d23-8788-2eac746be4a8",
"reason": null,
"request_id": null,
"source": "admin",
"tree_id": "7096ad49-7117-53f6-8f7f-4805473d14c5"
}
],
"status": 200,
"meta": {
"request_uuid": null,
"timestamp": "2026-09-10T03:03:11Z",
"pagination": {
"cursor": null,
"limit": 25,
"prev_cursor": null,
"next_cursor": null
}
}
}{
"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"
}
}