Skip to content

Workspaces & Team

LaunchKit Pro is multi-tenant. Users belong to one or more workspaces with role-based access inside each workspace.

Workspaces

MethodPathDescription
GET/workspacesList workspaces for current user
POST/workspacesCreate workspace
GET/workspaces/:workspaceIdWorkspace detail
PATCH/workspaces/:workspaceIdUpdate name/settings

Creating a workspace makes the creator OWNER.

bash
curl -s -X POST http://localhost:4000/workspaces \
  -H "Authorization: Bearer <accessToken>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Acme Agency"}' | jq

Workspace members

MethodPathDescription
GET/workspaces/:workspaceId/membersList members
PATCH/workspaces/:workspaceId/members/:memberIdUpdate role
DELETE/workspaces/:workspaceId/members/:memberIdRemove member

Roles

RoleTypical access
OWNERFull workspace control, billing, member management
ADMINManage settings, members, files, developer tools
MEMBERUse product features; limited admin actions
VIEWERRead-only access where permissions allow

Platform-level User.role (USER, ADMIN, OWNER) is separate from workspace membership roles.

Workspace statuses

StatusUser switcherAPI access
ACTIVESelectableAllowed
SUSPENDEDShown disabled (if listed)403 WORKSPACE_SUSPENDED
ARCHIVEDHidden403 WORKSPACE_ARCHIVED

After login, only ACTIVE workspaces can become activeWorkspace. If none exist, users are redirected to /workspace-unavailable.

Admins still manage all statuses from Admin Workspace Management.

Admin workspace management

Platform admins use Admin → Workspaces for full CRUD. See Admin Workspace Management for APIs, safe delete, owner transfer, and demo restrictions.

Invite flow

  1. Owner/Admin creates invite: POST /workspaces/:workspaceId/invites
  2. Invitee receives token (mock email in dev; link uses FRONTEND_URL/invite-accept?token=...)
  3. Invitee accepts: POST /workspaces/invites/accept
bash
curl -s -X POST http://localhost:4000/workspaces/<workspaceId>/invites \
  -H "Authorization: Bearer <accessToken>" \
  -H "Content-Type: application/json" \
  -d '{"email": "member@example.com", "role": "MEMBER"}' | jq

Workspace settings

PATCH /workspaces/:workspaceId/settings — workspace-level preferences (requires settings permission).

Workspace branding

MethodPathDescription
GET/workspaces/:workspaceId/brandingBranding profile
PATCH/workspaces/:workspaceId/brandingUpdate colors, name display
POST/workspaces/:workspaceId/branding/logoUpload logo (multipart)

Branding changes are audited. Demo mode may block branding updates for protected demo users.

Frontend

  • Dashboard workspace switcher persists active workspace in localStorage
  • Team page: /dashboard/team — members, invites, role updates

LaunchKit Pro by LaunchKit Labs — buyer documentation. No secrets in this site.