Skip to main content
Manage active and pending users in the workspace associated with your API key. Invite teammates, update names and roles, and remove workspace memberships.

Base URL

Authentication

All requests require a workspace API key:
The examples use $API_KEY for your API key. The key determines the workspace; you do not supply a workspace ID. See Authentication.

Endpoints

User object

All names, domains, identifiers, amounts, URLs, and timestamps in these examples are illustrative.

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 OK
The unfiltered collection includes active and pending users only. status=deleted and status=all are invalid.

Pagination and ordering

Users are ordered by created_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}
200 OK — returns one User object directly, as shown above. Active and pending memberships are accessible. Missing, deleted, or inaccessible IDs all return 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 Created
The invited user remains pending until they complete onboarding. The API cannot activate a user by setting status. 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.
Omitted fields are preserved. Name must be a nonempty string after trimming, no more than 160 characters, without control characters. 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}
204 No Content — the response body is empty. Deletion removes this workspace membership through soft deletion. The membership immediately disappears from list results and cannot be retrieved, updated, or deleted again through its old ID. Historical attribution remains retained internally. Memberships in other workspaces are unaffected. No restore endpoint is available.

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.

Duplicate email error