List a site's access requests
The pending requests to see one of the member’s private sites, newest first, each with who asked (name and account email address), what they wrote and when. Requests the owner has decided and requests that expired are not listed, and neither are requests from members who have left the company. A pending request is listed as stored: whether it can still be granted is checked when it is approved, so a request whose site has since been made public, taken down or locked, or whose requester the messaging policy no longer lets the owner share with, is still listed, and approving it answers 422 with the reason it was superseded. The list is paged by cursor, 25 to a page; follow meta.pagination.next_cursor until it is null to read every request. It is not cached (max-age=0) and can be revalidated with an ETag.
A bearer only: a request on the cookie mount is refused with 403, with or without an X-Fluid-Member-Site header. A member JWT, which travels in order and subscription email links, is refused with 403 too, so a forwarded email never lists who asked to see a site. A portal JWT can read. It answers 404 until access requests are enabled for the member’s company.
curl --request GET \
--url https://api.fluid.app/api/member/v2026-10/sites/{site_id}/access-requests \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/sites/{site_id}/access-requests"
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/sites/{site_id}/access-requests', 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/sites/{site_id}/access-requests",
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/sites/{site_id}/access-requests"
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/sites/{site_id}/access-requests")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/sites/{site_id}/access-requests")
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": [
{
"id": "0192f4e5-9c01-7b8c-9d0e-1f2a3b4c5d02",
"state": "pending",
"message": null,
"requester": {
"id": "0192f4e5-1a01-7b8c-9d0e-1f2a3b4c5d12",
"name": "Casey Brooks",
"email": "casey@example.com"
},
"created_at": "2026-11-08T09:30:00.000000Z",
"closed_at": null
},
{
"id": "0192f4e5-9c01-7b8c-9d0e-1f2a3b4c5d01",
"state": "pending",
"message": "I'd love to see the launch plan.",
"requester": {
"id": "0192f4e5-1a01-7b8c-9d0e-1f2a3b4c5d11",
"name": "Nathan Cho",
"email": "nathan@example.com"
},
"created_at": "2026-11-07T16:05:00.000000Z",
"closed_at": null
}
],
"meta": {
"request_uuid": "0192f4c8-5b6c-7d74-a3e8-0f1a2b3c4d5e",
"timestamp": "2026-11-09T15:08:21Z",
"pagination": {
"next_cursor": null
}
}
}{
"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 member
session JWT, a portal JWT whose login is linked to a membership in
that company, an opaque member token, or a verified One Auth identity
access token. The credential alone identifies the member and company.
Member session JWTs, and portal JWTs the server minted read-only, are
refused with 403 on every write.
Headers
ETag from a previous response.
Path Parameters
Public id of one of the member's sites.
Query Parameters
Opaque cursor from meta.pagination.next_cursor, valid only for the same site. A cursor this list did not issue starts the list again from its first page.
Response
A page of the site's pending requests.
curl --request GET \
--url https://api.fluid.app/api/member/v2026-10/sites/{site_id}/access-requests \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/member/v2026-10/sites/{site_id}/access-requests"
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/sites/{site_id}/access-requests', 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/sites/{site_id}/access-requests",
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/sites/{site_id}/access-requests"
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/sites/{site_id}/access-requests")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/sites/{site_id}/access-requests")
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": [
{
"id": "0192f4e5-9c01-7b8c-9d0e-1f2a3b4c5d02",
"state": "pending",
"message": null,
"requester": {
"id": "0192f4e5-1a01-7b8c-9d0e-1f2a3b4c5d12",
"name": "Casey Brooks",
"email": "casey@example.com"
},
"created_at": "2026-11-08T09:30:00.000000Z",
"closed_at": null
},
{
"id": "0192f4e5-9c01-7b8c-9d0e-1f2a3b4c5d01",
"state": "pending",
"message": "I'd love to see the launch plan.",
"requester": {
"id": "0192f4e5-1a01-7b8c-9d0e-1f2a3b4c5d11",
"name": "Nathan Cho",
"email": "nathan@example.com"
},
"created_at": "2026-11-07T16:05:00.000000Z",
"closed_at": null
}
],
"meta": {
"request_uuid": "0192f4c8-5b6c-7d74-a3e8-0f1a2b3c4d5e",
"timestamp": "2026-11-09T15:08:21Z",
"pagination": {
"next_cursor": null
}
}
}{
"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"
}
}