Skip to main content
All endpoints require authentication via Supabase JWT in the Authorization: Bearer <token> header. Org context is resolved from the JWT’s user membership.

Team Management

Invite Member

string
required
Email address of the user to invite.
string
required
Role to assign. One of: owner, admin, analyst, viewer. Cannot exceed your own role level.
string
Membership ID.
string
Either pending (invite sent, not yet claimed) or active (user has logged in and claimed the invite).

List Members

Returns all members of your organization, including pending invites.

Update Member Role

string
required
Membership ID of the member to update.
string
required
New role. Cannot exceed your own role level.
You cannot downgrade the last owner. The API returns 409 Conflict if this would leave the org with no owners.

Remove Member

string
required
Membership ID to remove.
Removing a member also revokes all their personal tokens. Service and deploy tokens are unaffected.

Token Operations

Create Token

string
required
Human-readable label for the token.
string
required
Token type: personal, service, or deploy.
string[]
required
Array of scopes: read, ingest, manage, admin, *.
The token field is returned only in this response. Store it securely — it cannot be retrieved again.

List Tokens

Returns all tokens for your organization. Raw token values are never included.

Revoke Token

string
required
Token ID to revoke.
Revocation is immediate. Any request using this token after revocation returns 401 Unauthorized.

User Preferences

Get Preferences

Returns the current user’s preferences for the organization.

Update Preferences

Performs a JSONB merge — only the fields you send are updated. Omitted fields retain their current values.
string
dark or light.
string
Default time range for dashboards. One of: 1h, 6h, 24h, 7d, 30d.
string
Landing page after login. One of: overview, sessions, alerts, fleet.
object
Notification preferences object. Merged with existing values.
The merge is shallow for top-level keys but deep for the notifications object. Sending {"notifications": {"browser_push": true}} updates only browser_push without touching other notification settings.

Error Responses

All endpoints return consistent error shapes: