curl --request GET \
--url https://app.base44.com/api/v1/compliance/{workspace_id}/members \
--header 'Authorization: Bearer <token>' \
--header 'api_key: <api-key>'import requests
url = "https://app.base44.com/api/v1/compliance/{workspace_id}/members"
headers = {
"api_key": "<api-key>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {api_key: '<api-key>', Authorization: 'Bearer <token>'}
};
fetch('https://app.base44.com/api/v1/compliance/{workspace_id}/members', 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://app.base44.com/api/v1/compliance/{workspace_id}/members",
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>",
"api_key: <api-key>"
],
]);
$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://app.base44.com/api/v1/compliance/{workspace_id}/members"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api_key", "<api-key>")
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://app.base44.com/api/v1/compliance/{workspace_id}/members")
.header("api_key", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/v1/compliance/{workspace_id}/members")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api_key"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "6812a4c9d3e7f1004b58c2e0",
"email": "jane.doe@acme.com",
"role": "editor",
"role_source": "direct",
"status": "active",
"access_state": "granted",
"invitation_expired": false,
"sso_linked": true,
"user_id": "6791b5d2c4e8a3007f61a9c3",
"created_date": "2026-01-15T09:23:41Z",
"invited_by": "admin@acme.com",
"mfa_enrolled": true,
"mfa_methods": [
"totp"
],
"last_active_at": "2026-07-28T16:05:12Z"
}
],
"pagination": {
"total": 347,
"has_more": true,
"next_cursor": "gAAAAABn7vJ..."
}
}List workspace members
Lists the members of a workspace, including invited users and users whose access is blocked.
For each member, you can view their role and their security settings, such as whether multi-factor authentication is turned on.
Member email addresses are returned, which is why this method has its own scope. See security considerations.
To call this method, your API key must include the compliance:members:read and compliance:inventory:read scopes.
curl --request GET \
--url https://app.base44.com/api/v1/compliance/{workspace_id}/members \
--header 'Authorization: Bearer <token>' \
--header 'api_key: <api-key>'import requests
url = "https://app.base44.com/api/v1/compliance/{workspace_id}/members"
headers = {
"api_key": "<api-key>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {api_key: '<api-key>', Authorization: 'Bearer <token>'}
};
fetch('https://app.base44.com/api/v1/compliance/{workspace_id}/members', 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://app.base44.com/api/v1/compliance/{workspace_id}/members",
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>",
"api_key: <api-key>"
],
]);
$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://app.base44.com/api/v1/compliance/{workspace_id}/members"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api_key", "<api-key>")
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://app.base44.com/api/v1/compliance/{workspace_id}/members")
.header("api_key", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/v1/compliance/{workspace_id}/members")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api_key"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "6812a4c9d3e7f1004b58c2e0",
"email": "jane.doe@acme.com",
"role": "editor",
"role_source": "direct",
"status": "active",
"access_state": "granted",
"invitation_expired": false,
"sso_linked": true,
"user_id": "6791b5d2c4e8a3007f61a9c3",
"created_date": "2026-01-15T09:23:41Z",
"invited_by": "admin@acme.com",
"mfa_enrolled": true,
"mfa_methods": [
"totp"
],
"last_active_at": "2026-07-28T16:05:12Z"
}
],
"pagination": {
"total": 347,
"has_more": true,
"next_cursor": "gAAAAABn7vJ..."
}
}Authorizations
Identifies the workspace you can read and limits your access to the key's scopes. A workspace owner or admin creates the key and shares it with you. See Workspace API key for more details.
The signed authentication token that identifies you as the security partner. Sign a new token for each request with your signing key, using RS256 or ES256, and send it as a bearer token in the Authorization header. See Sign an authentication token for more details.
Path Parameters
Workspace ID. Learn more about how to retrieve your workspace ID.
Query Parameters
Cursor for the next page. Pass the next_cursor value from the previous response back unchanged. Don't send limit with it, because the cursor already carries the limit. Cursors are valid for 24 hours, and a cursor from a different workspace isn't valid. Sending limit with a cursor, or an invalid cursor, returns a 400 error.
Number of items per page. The maximum is 1000. Don't send it with cursor, because the cursor already carries the limit.
Default: 100.
1 <= x <= 1000Was this page helpful?