Base URL
Authentication
All requests require a workspace API key:$API_KEY for your API key. The key determines the workspace; you do not supply a workspace ID. See Authentication.
Endpoints
User object
Roles
Deleted memberships are inaccessible through all Users GET endpoints. User objects do not expose credentials or invitation tokens.
1. List users
GET /v1/users
Query parameters
Combine filters to retrieve, for example, pending viewers:
Example response
200 OKstatus=deleted and status=all are invalid.
Pagination and ordering
Users are ordered bycreated_at DESC, then id DESC. Pass pagination.next_cursor unchanged with the same filters for the next page. Stop when it is null. No configurable sort parameters or offset pagination are supported.
An empty result returns total: 0, data: [], and pagination.next_cursor: null.
2. Retrieve a user
GET /v1/users/{user_id}
404 not_found.
3. Invite a user
POST /v1/users
POST accepts exactly email and role; both are required. It creates a pending membership and sends the existing invitation workflow.
Example response
201 Createdstatus.
Email must be valid and at most 254 characters. An active or pending membership with the same normalized email in this workspace causes a 400 validation error. The same email can independently belong to other workspaces.
POST does not accept name, status, IDs, timestamps, or workspace selectors. A previously deleted email may be invited again as a new pending membership with a new User ID.
4. Update a user
PATCH /v1/users/{user_id}
PATCH accepts name, role, or both. At least one must be supplied.
Example response
200 OK — returns the complete updated User object.null is invalid for name. Role must be admin, marketer, or viewer.
Email, status, login timestamps, and system fields are read-only. PATCH does not resend an invitation or activate a pending user. Validation is atomic.
5. Delete a user
DELETE /v1/users/{user_id}
Administrator protection
Every established workspace must retain at least one active administrator. The last active admin cannot be deleted or demoted. A pending admin does not satisfy this requirement, and admins in another workspace do not count. All management operations require the appropriate permissions. An API key cannot grant itself permissions it does not possess.Errors
Errors use the standard error envelope. Use
request_id when contacting support.