The theme's member sites, each with its pages
Returned in the order a resolver considers them, so the builder’s panel and the storefront agree about precedence without the client sorting. Pages come nested, so drawing a folder takes one request.
curl --request GET \
--url https://api.fluid.app/api/company/members_sites \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/company/members_sites"
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/company/members_sites', 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/company/members_sites",
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/company/members_sites"
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/company/members_sites")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/members_sites")
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{
"members_sites": [
{
"id": 6021,
"name": "Reps",
"active": true,
"default": false,
"position": 1,
"layout_name": "theme",
"menu_slug": "reps-navigation",
"menu_id": 4417,
"unconstrained": false,
"rule": {
"country_ids": [
214
],
"member_type_ids": [
"0191d3f0-7c2a-7b4e-9d61-3f8a2c5e1b07"
]
},
"pages": [
{
"id": 81530,
"title": "Rewards",
"slug": "rewards",
"published": true,
"path": "/accounts/rewards",
"template_id": 55102,
"updated_at": "2026-09-18T14:03:27Z"
}
]
},
{
"id": 6018,
"name": "Everyone",
"active": true,
"default": true,
"position": 2,
"layout_name": "member",
"menu_slug": "everyone-navigation",
"menu_id": 4409,
"unconstrained": true,
"rule": {
"country_ids": [],
"member_type_ids": []
},
"pages": [
{
"id": 81502,
"title": "Welcome",
"slug": "/",
"published": true,
"path": "/accounts",
"template_id": 55090,
"updated_at": "2026-09-02T09:41:12Z"
}
]
}
],
"system_screens": [
{
"key": "messaging",
"label": "Messaging",
"path": "/accounts/messaging"
},
{
"key": "contacts",
"label": "Contacts",
"path": "/accounts/contacts"
},
{
"key": "my-site",
"label": "My Site",
"path": "/accounts/my-site"
},
{
"key": "profile",
"label": "Profile",
"path": "/accounts/profile"
},
{
"key": "orders",
"label": "Orders",
"path": "/accounts/orders"
},
{
"key": "subscriptions",
"label": "Subscriptions",
"path": "/accounts/subscriptions"
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"details": {}
}Authorizations
Bearer token authentication
Query Parameters
Company-owned theme being edited, including draft themes. Omit for the active theme. Unknown or foreign themes return 404 without falling back.
x >= 1Response
The theme's member sites, in resolution order
Show child attributes
Show child attributes
The screens Fluid ships, sent once rather than nested in each site. Every site has every screen, so nesting would repeat the catalogue and imply a per-site variation that does not exist. Absent from the create and update responses for the same reason: a site just created has the same screens as every other.
Show child attributes
Show child attributes
curl --request GET \
--url https://api.fluid.app/api/company/members_sites \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/company/members_sites"
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/company/members_sites', 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/company/members_sites",
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/company/members_sites"
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/company/members_sites")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/members_sites")
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{
"members_sites": [
{
"id": 6021,
"name": "Reps",
"active": true,
"default": false,
"position": 1,
"layout_name": "theme",
"menu_slug": "reps-navigation",
"menu_id": 4417,
"unconstrained": false,
"rule": {
"country_ids": [
214
],
"member_type_ids": [
"0191d3f0-7c2a-7b4e-9d61-3f8a2c5e1b07"
]
},
"pages": [
{
"id": 81530,
"title": "Rewards",
"slug": "rewards",
"published": true,
"path": "/accounts/rewards",
"template_id": 55102,
"updated_at": "2026-09-18T14:03:27Z"
}
]
},
{
"id": 6018,
"name": "Everyone",
"active": true,
"default": true,
"position": 2,
"layout_name": "member",
"menu_slug": "everyone-navigation",
"menu_id": 4409,
"unconstrained": true,
"rule": {
"country_ids": [],
"member_type_ids": []
},
"pages": [
{
"id": 81502,
"title": "Welcome",
"slug": "/",
"published": true,
"path": "/accounts",
"template_id": 55090,
"updated_at": "2026-09-02T09:41:12Z"
}
]
}
],
"system_screens": [
{
"key": "messaging",
"label": "Messaging",
"path": "/accounts/messaging"
},
{
"key": "contacts",
"label": "Contacts",
"path": "/accounts/contacts"
},
{
"key": "my-site",
"label": "My Site",
"path": "/accounts/my-site"
},
{
"key": "profile",
"label": "Profile",
"path": "/accounts/profile"
},
{
"key": "orders",
"label": "Orders",
"path": "/accounts/orders"
},
{
"key": "subscriptions",
"label": "Subscriptions",
"path": "/accounts/subscriptions"
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"details": {}
}