List sub-accounts

List the agency's sub-accounts, newest first. Deleted sub-accounts are never returned.

GET https://api.centerfy.ai/webhooks/inbound/agency/sub-accounts

Headers

HeaderRequiredValueDescription
x-api-keyYesyour agency API key (cfy_…)Agency (organization-wide) API key, created in the agency workspace under Settings → API Keys (“Agency API Keys”; the tab only appears on White Label or SaaS Mode plans). Or send Authorization: Bearer <key>; x-api-key wins if both are present. Keys must start with cfy_. A sub-account key is rejected with 401.

Query parameters

NameTypeRequiredDefaultDescription
limitintegerNo50Page size; minimum 1, maximum 100 (larger values are rejected with 400).
offsetintegerNo0Number of records to skip for paging; minimum 0.
archivedbooleanNo—true = only archived, false = only not archived. Omit for both.
pausedbooleanNo—true = only paused (any reason), false = only not paused. Omit for both.
searchstringNo—Case-insensitive substring match on the name (max 200 characters; % _ and \ are ignored).

Example

curl -X GET "https://api.centerfy.ai/webhooks/inbound/agency/sub-accounts?limit=50&offset=0" \
  -H "x-api-key: $CENTERFY_AGENCY_API_KEY"
import { CenterfyAgencyClient } from "@centerfy/sdk";

const agency = new CenterfyAgencyClient({ apiKey: process.env.CENTERFY_AGENCY_API_KEY! });

const result = await agency.subAccounts.list({
  "limit": 50,
  "offset": 0
});
console.log(result);
centerfy --agency subAccounts list '{"limit":50,"offset":0}'

MCP tool: centerfy_agency_sub_accounts_list (see MCP server)

Response

{
  "status": "success",
  "total": 2,
  "limit": 50,
  "offset": 0,
  "has_more": false,
  "sub_accounts": [
    {
      "id": "5a1f3c2e-8b4d-4e6f-9a7b-1c2d3e4f5a01",
      "name": "Acme Roofing",
      "slug": "acme-roofing",
      "parent_sub_account_id": null,
      "is_active": true,
      "archived_at": null,
      "paused_reason": null,
      "paused_at": null,
      "paused_note": null,
      "subscription_plan": "starter",
      "subscription_status": "active",
      "max_users": 10,
      "max_contacts": 1000,
      "created_at": "2026-09-14T15:20:00.000Z",
      "updated_at": "2026-10-01T09:00:00.000Z"
    },
    {
      "id": "7c3b5e40-ad6f-4081-9c2d-3e4f5a6b7c03",
      "name": "Bayview Dental",
      "slug": "bayview-dental",
      "parent_sub_account_id": null,
      "is_active": true,
      "archived_at": null,
      "paused_reason": "manual_agency",
      "paused_at": "2026-10-03T08:00:00.000Z",
      "paused_note": "Invoice overdue",
      "subscription_plan": null,
      "subscription_status": null,
      "max_users": 10,
      "max_contacts": 1000,
      "created_at": "2026-08-20T10:00:00.000Z",
      "updated_at": "2026-10-03T08:00:00.000Z"
    }
  ]
}

Errors

  • 400 — if a query value fails validation.
  • 401 — when the key is missing, not cfy_-prefixed or unknown (including sub-account keys); 403 when the agency is not on a White Label or SaaS Mode plan; 429 above 50 requests per minute per agency (Retry-After header set); 500 ‘database error’ on an internal failure.

Notes

List rows omit features and settings — use Get a sub-account for those.

© 2026 Centerfy AI. All rights reserved.