List members and invitations

List a sub-account's active members (oldest first) plus its pending invitations (unaccepted and unexpired).

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

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.

Path parameters

NameTypeRequiredDescription
idstring (uuid)YesThe sub-account id. Must belong to the key’s agency and not be deleted.

Query parameters

NameTypeRequiredDefaultDescription
limitintegerNo50Page size; minimum 1, maximum 100 (larger values are rejected with 400).
offsetintegerNo0Number of records to skip for paging; minimum 0.

Example

curl -X GET "https://api.centerfy.ai/webhooks/inbound/agency/sub-accounts/{id}/users?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.subAccountUsers.list("<subAccountId>", {
  "limit": 50,
  "offset": 0
});
console.log(result);
centerfy --agency subAccountUsers list <subAccountId> '{"limit":50,"offset":0}'

MCP tool: centerfy_agency_sub_account_users_list (see MCP server)

Response

{
  "status": "success",
  "total": 2,
  "limit": 50,
  "offset": 0,
  "has_more": false,
  "users": [
    {
      "user_id": "8d4c6f51-be70-4192-8d3e-4f5a6b7c8d04",
      "email": "[email protected]",
      "first_name": "Jordan",
      "last_name": "Lee",
      "role": "sub_account_owner",
      "created_at": "2026-09-14T15:30:00.000Z"
    },
    {
      "user_id": "9e5d7062-cf81-42a3-9e4f-5a6b7c8d9e05",
      "email": "[email protected]",
      "first_name": "Sam",
      "last_name": "Rivera",
      "role": "sub_account_user",
      "created_at": "2026-09-20T10:00:00.000Z"
    }
  ],
  "pending_invitations": [
    {
      "id": "af6e8173-d092-43b4-af50-6b7c8d9eaf06",
      "email": "[email protected]",
      "first_name": "Alex",
      "last_name": "Kim",
      "role": "sub_account_admin",
      "created_at": "2026-10-04T09:00:00.000Z",
      "expires_at": "2026-10-11T09:00:00.000Z"
    }
  ]
}

Errors

  • 404 — when the sub-account id is not a uuid, does not exist, is deleted, or belongs to another agency.
  • 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

limit/offset page the members only; pending_invitations is always returned in full (newest first). email and names are null if the user has no profile.

© 2026 Centerfy AI. All rights reserved.