Skip to navigation

Create workspace

View as Markdown

Create a new workspace. Multiple workspaces per user are allowed; each has its own subscription. Returns 201 with workspace detail.

Headers

AuthorizationstringRequired

Bearer {access_token}

Request

name (required); slug, billingEmail, type, and tier are optional; pro/team tiers start a 7-day trial

namestringRequired

The server trims surrounding whitespace, then requires 1-100 UTF-8 bytes.

billingEmailstringOptional

Empty is allowed; non-empty values are validated with Go’s mail.ParseAddress.

slugstringOptionalformat: "^$|^[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$"<=63 characters

Empty is allowed and causes automatic slug generation. A non-empty value must contain URL-safe ASCII letters, numbers, and hyphens with no leading or trailing hyphen; validation is case-insensitive.

tierstringOptionalformat: "^\s*(?:[Ff][Rr][Ee][Ee]|[Pp][Rr][Oo]|[Tt][Ee][Aa][Mm])?\s*$"Defaults to free

Leading/trailing whitespace and letter case are ignored. β€œpro” or β€œteam” starts a 7-day trial; empty/β€œfree” means free/active. Enterprise is NOT allowed via tier (use type=β€œenterprise” instead).

typestringOptionalformat: "^\s*(?:[Pp][Ee][Rr][Ss][Oo][Nn][Aa][Ll]|[Ee][Nn][Tt][Ee][Rr][Pp][Rr][Ii][Ss][Ee])?\s*$"Defaults to personal

Leading/trailing whitespace and letter case are ignored. Empty defaults to β€œpersonal”; the other accepted value is β€œenterprise”. Use json:β€œtype” (not omitempty) so request bodies always bind β€œtype” reliably across JSON decoders.

Response

data: created workspace (id, name, slug, type, ownerId, logoUrl, billingEmail, settings, createdAt, updatedAt)

Errors

401
Unauthorized Error
409
Conflict Error
422
Unprocessable Entity Error