Skip to main content

Workspaces

A workspace is the top-level tenant for events, leads, forms, and team members.

Create workspace​

POST /api/v1/workspaces/setup/company/
Authorization: Bearer <access_token>
Content-Type: application/json

Request body​

{
"name": "Acme Events",
"slug": "acme-events",
"industry": "software",
"company_size": "51-200"
}

Response (201 Created)​

{
"id": "aa0e8400-e29b-41d4-a716-446655440005",
"name": "Acme Events",
"slug": "acme-events",
"currency": "USD",
"created_at": "2026-06-20T08:00:00Z"
}

Workspace-scoped routes​

Most APIs use:

/api/v1/{workspace_id}/…

Members​

GET /api/v1/workspaces/{workspace_id}/members/
PATCH /api/v1/workspaces/{workspace_id}/members/{membership_id}/
DELETE /api/v1/workspaces/{workspace_id}/members/{membership_id}/

Invitations (global)​

POST /api/v1/workspaces/members/invite/
GET /api/v1/workspaces/members/invitations/
DELETE /api/v1/workspaces/members/invitations/{invitation_id}/
POST /api/v1/workspaces/members/invitations/{invitation_id}/resend/

Settings​

GET /api/v1/workspaces/{workspace_id}/settings/
PATCH /api/v1/workspaces/{workspace_id}/settings/

PATCH settings — request body​

{
"name": "Acme Events (updated)",
"timezone": "America/New_York",
"currency": "USD"
}

UI preferences​

GET /api/v1/workspaces/{workspace_id}/me/ui-preferences/
PATCH /api/v1/workspaces/{workspace_id}/me/ui-preferences/

Public hosts (custom domains)​

GET /api/v1/workspaces/{workspace_id}/public-hosts/
POST /api/v1/workspaces/{workspace_id}/public-hosts/
PATCH /api/v1/workspaces/{workspace_id}/public-hosts/{host_id}/
DELETE /api/v1/workspaces/{workspace_id}/public-hosts/{host_id}/
POST /api/v1/workspaces/{workspace_id}/public-hosts/{host_id}/verify/
POST /api/v1/workspaces/{workspace_id}/public-hosts/{host_id}/regenerate-token/

ICP config​

GET /api/v1/workspaces/{workspace_id}/icp-config/
PUT /api/v1/workspaces/{workspace_id}/icp-config/
PATCH /api/v1/workspaces/{workspace_id}/icp-config/

Currencies​

GET /api/v1/workspaces/{workspace_id}/currencies/
POST /api/v1/workspaces/{workspace_id}/currencies/
PATCH /api/v1/workspaces/{workspace_id}/currencies/{currency_id}/
DELETE /api/v1/workspaces/{workspace_id}/currencies/{currency_id}/
POST /api/v1/workspaces/{workspace_id}/currencies/{currency_id}/set-base/

Access requests​

GET /api/v1/workspaces/{workspace_id}/access-requests/
GET /api/v1/workspaces/{workspace_id}/access-requests/count/
POST /api/v1/workspaces/{workspace_id}/access-requests/{request_id}/approve/
POST /api/v1/workspaces/{workspace_id}/access-requests/{request_id}/decline/

Ownership & deletion​

POST /api/v1/workspaces/{workspace_id}/transfer-ownership/
GET /api/v1/workspaces/{workspace_id}/delete/eligibility/
POST /api/v1/workspaces/{workspace_id}/delete/confirm/

Permissions​

Role-based access is enforced per workspace. See MODULE_PERMISSIONS.md in the repo for the full permission matrix.

Business cards (user module)​

Workspace-scoped business card APIs live under the users app:

GET /api/v1/users/workspaces/{workspace_id}/business-cards/{card_id}/
PATCH /api/v1/users/workspaces/{workspace_id}/business-cards/{card_id}/
DELETE /api/v1/users/workspaces/{workspace_id}/business-cards/{card_id}/
POST /api/v1/users/workspaces/{workspace_id}/business-cards/presigned-url/
GET /api/v1/users/workspaces/{workspace_id}/business-card-templates/

See Public API — Business cards for public card endpoints.