Member sites
Change a member page's title, route, publication or site
Only the fields sent are changed, so publishing a page does not rewrite the route a merchant chose. Sending members_site_id moves the page to another site, which moves who may see it — the target must belong to the same theme.
PATCH
/
api
/
company
/
members_pages
/
{id}
Change a member page's title, route, publication or site
curl --request PATCH \
--url https://api.fluid.app/api/company/members_pages/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"members_page": {
"title": "Rewards & Perks",
"published": false
}
}
'import requests
url = "https://api.fluid.app/api/company/members_pages/{id}"
payload = { "members_page": {
"title": "Rewards & Perks",
"published": False
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({members_page: {title: 'Rewards & Perks', published: false}})
};
fetch('https://api.fluid.app/api/company/members_pages/{id}', 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_pages/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'members_page' => [
'title' => 'Rewards & Perks',
'published' => false
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/company/members_pages/{id}"
payload := strings.NewReader("{\n \"members_page\": {\n \"title\": \"Rewards & Perks\",\n \"published\": false\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.fluid.app/api/company/members_pages/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"members_page\": {\n \"title\": \"Rewards & Perks\",\n \"published\": false\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/members_pages/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"members_page\": {\n \"title\": \"Rewards & Perks\",\n \"published\": false\n }\n}"
response = http.request(request)
puts response.read_body{
"members_page": {
"id": 81530,
"title": "Rewards & Perks",
"slug": "rewards",
"published": false,
"path": "/accounts/rewards",
"template_id": 55102,
"updated_at": "2026-09-25T17:12:48Z"
}
}{
"message": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"details": {}
}Authorizations
Bearer token authentication
Path Parameters
The page's id, which must sit in one of this company's active theme's sites.
Query Parameters
Company-owned theme being edited, including draft themes. Omit for the active theme. Unknown or foreign themes return 404 without falling back.
Required range:
x >= 1Body
application/json
Show child attributes
Show child attributes
Response
The changed page
One page inside a member site. Enough to draw a row in the builder's folder and open it. The slug is unique within its site, not globally, so two sites may both hold rewards and the member decides which they get.
Show child attributes
Show child attributes
⌘I
Change a member page's title, route, publication or site
curl --request PATCH \
--url https://api.fluid.app/api/company/members_pages/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"members_page": {
"title": "Rewards & Perks",
"published": false
}
}
'import requests
url = "https://api.fluid.app/api/company/members_pages/{id}"
payload = { "members_page": {
"title": "Rewards & Perks",
"published": False
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({members_page: {title: 'Rewards & Perks', published: false}})
};
fetch('https://api.fluid.app/api/company/members_pages/{id}', 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_pages/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'members_page' => [
'title' => 'Rewards & Perks',
'published' => false
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/company/members_pages/{id}"
payload := strings.NewReader("{\n \"members_page\": {\n \"title\": \"Rewards & Perks\",\n \"published\": false\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.fluid.app/api/company/members_pages/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"members_page\": {\n \"title\": \"Rewards & Perks\",\n \"published\": false\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/members_pages/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"members_page\": {\n \"title\": \"Rewards & Perks\",\n \"published\": false\n }\n}"
response = http.request(request)
puts response.read_body{
"members_page": {
"id": 81530,
"title": "Rewards & Perks",
"slug": "rewards",
"published": false,
"path": "/accounts/rewards",
"template_id": 55102,
"updated_at": "2026-09-25T17:12:48Z"
}
}{
"message": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"details": {}
}