List Members
Get all members and pending invites for a workspace.Workspace slug
Current user’s ID
Results are cached for 120 seconds with stale-while-revalidate for 10 minutes.
Invite Member
Send an invitation to join the workspace.Workspace slug
Email address to invite
Role to assign: “admin”, “member”, or “viewer”
Whether invite was sent successfully
Unique invitation token
- Email must not belong to an existing member
- Email must not belong to the workspace owner
- Workspace must be within member limit for current plan
- Rate limited to prevent spam (1 minute cooldown per user)
- Invites expire after 7 days
- Email includes workspace name and branded invitation link
- Invitation link format:
{APP_URL}/invite/{token}
Resend Invite
Resend an existing invitation email.Workspace slug
ID of the invite to resend
- If invite is expired, generates new token with 7-day expiration
- Sends branded email with updated invitation link
- Returns 404 if invite not found
Revoke Invite
Cancel a pending invitation.Workspace slug
ID of the invite to revoke
List Invites
Get all active invitations for a workspace.Array of active (non-expired, non-accepted) invitations
Update Member Role
Change a member’s role in the workspace.Workspace slug
ID of the user to update
New role: “admin”, “member”, or “viewer”
- Admin: Full workspace access, can manage members and settings
- Member: Can create and moderate content
- Viewer: Read-only access to workspace content
Remove Member
Remove a member from the workspace.Workspace slug
ID of the user to remove
- Members can remove themselves (leave workspace)
- Admins can remove other members
- Cannot remove the workspace owner
- Deletes all pending invites for the user’s email
- Removes workspace membership record
Accept Invite
Accept a workspace invitation.Invitation token from email
Whether invite was accepted successfully
- Token must be valid and not expired
- User’s email must match invited email
- Workspace must be within member limit
- User must not already be a member
- Creates workspace membership with invited role
- Deletes all pending invites for the email
- Returns
ok: falseif invite was already accepted
Decline Invite
Decline a workspace invitation.Invitation token to decline
- User’s email must match invited email
- Token must be valid and not expired
Get Invite by Token
Retrieve invitation details by token.Invitation token
null if:
- Token is invalid
- Invite is expired
- User’s email doesn’t match invited email
Add Existing Member
Add an existing user or send invite if user doesn’t exist.Workspace slug
Email address to add
Role to assign
Whether operation was successful
true if invite was sent, false if user was added directlyInvitation token (only if invited is true)
- If user exists: Adds them directly to workspace
- If user doesn’t exist: Sends invitation email
- Deletes any pending invites if user is added directly
- Workspace must be within member limit