curl -X GET "https://api.sitespeak.ai/v1/agency/clients" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
const response = await fetch('https://api.sitespeak.ai/v1/agency/clients', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_API_TOKEN'
}
});
const data = await response.json();
console.log(data);
Agency
List Client Workspaces
Returns all client workspaces with their limits and current usage
GET
/
v1
/
agency
/
clients
curl -X GET "https://api.sitespeak.ai/v1/agency/clients" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
const response = await fetch('https://api.sitespeak.ai/v1/agency/clients', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_API_TOKEN'
}
});
const data = await response.json();
console.log(data);
Available on agency plans. The API token must belong to the agency owner.
Query Parameters
| Name | Type | Description |
|---|---|---|
| external_reference | String | Only return the client workspace with this external_reference. |
Headers
| Name | Type | Description |
|---|---|---|
| Accept* | String | application/json |
| Authorization* | String | Bearer |
curl -X GET "https://api.sitespeak.ai/v1/agency/clients" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
const response = await fetch('https://api.sitespeak.ai/v1/agency/clients', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_API_TOKEN'
}
});
const data = await response.json();
console.log(data);
Response
Anull limit means no client-level limit is set for that resource. response_tokens is a per-answer length cap, not a usage quota, so it has no usage counterpart.
usage.messages counts message credits used in the current cycle, which starts at the beginning of the calendar month or at the client’s last credit reset, whichever is later. messages_remaining is null when no message limit is set. topup_credits_remaining is the client’s top-up credit balance, drawn only after the monthly limit is used up. credits_exhausted_at is set while the client’s own budget (monthly plus top-up) is at zero and clears when credits return.
- 200 Success
- 403 Not an agency account
{
"clients": [
{
"id": "dfcee2e1-3ace-41c6-9803-fb2b7c7cdfc7",
"name": "Acme Inc",
"external_reference": "billing-account-1001",
"status": "active",
"pause_mode": null,
"paused_at": null,
"byok_enabled": false,
"limits": {
"chatbots": 2,
"sources": 50,
"messages": 1000,
"response_tokens": null
},
"usage": {
"chatbots": 1,
"sources": 12,
"messages": 274
},
"messages_remaining": 726,
"topup_credits_remaining": 0,
"credits_exhausted_at": null,
"credits_reset_at": null,
"created_at": "2026-07-22T19:31:40+00:00"
}
]
}
Returns when the API token does not belong to an agency account owner.
Last modified on August 25, 2026