A workspace is the top-level organizational container in Caret. Every folder and document belongs to exactly one workspace, and users collaborate within workspaces through a membership model. Workspaces come in two kinds:Documentation Index
Fetch the complete documentation index at: https://mintlify.com/arrozet/caret/llms.txt
Use this file to discover all available pages before exploring further.
personal (a private home space automatically provisioned for each user) and shared (team workspaces that multiple members can be invited to). The Workspaces API lets you create and manage these containers, control membership, and rename or remove workspaces as your team structure evolves. All endpoints require a valid Supabase JWT passed as a Bearer token.
All endpoints are routed through the API Gateway. The gateway forwards
/api/v1/workspaces* traffic to the internal document-service. Always target https://api.caret.page/api/v1/... from client code.POST /api/v1/workspaces
Create a new workspace. The caller is automatically added as the workspace owner. Shared workspaces can be built out with additional members using the invite endpoint.
Request body
Display name for the workspace. Shown in the workspace switcher and sidebar header.
Optional URL-friendly identifier for the workspace. Must be unique. If omitted, a slug is auto-generated from the workspace name using a
citext uniqueness check.Workspace kind:
"shared" (default, for team workspaces) or "personal" (private home workspace). Personal workspaces are normally provisioned automatically — you will only need this field in special circumstances.201 Created
UUID of the newly created workspace.
URL-friendly slug. Auto-generated if not provided at creation time.
Display name of the workspace.
Workspace kind —
"personal" or "shared".UUID of the user who created the workspace. Set to the caller’s user ID.
The caller’s role in this workspace. The creator always starts as
"owner".Array of email addresses of other active members (excluding the caller). Empty on creation.
ISO 8601 timestamp of when the workspace was created.
ISO 8601 timestamp of the last update to the workspace record.
GET /api/v1/workspaces
List all workspaces the authenticated caller is a member of, regardless of their role within those workspaces. The response includes both the caller’s personal workspace and any shared workspaces they have been invited to. Each entry includes the caller’s current role and the shared_with list of co-member emails.
Query parameters
Maximum number of workspaces to return. Omit for unpaginated results.
Number of workspaces to skip before returning results. Used together with
limit for cursor-style pagination.200 OK — array of WorkspaceResponseDto
Returns an array of workspace objects. Each object has the same shape as the response documented in POST /api/v1/workspaces above.
PATCH /api/v1/workspaces/{id}
Rename an existing workspace. Only the workspace name can be changed through this endpoint. To change workspace kind or slug, contact support or manage those properties through Supabase directly.
The gateway spec uses
PATCH for this operation. Only the fields you include are updated; omitted fields remain unchanged.UUID of the workspace to update.
Updated display name for the workspace. This is the only mutable field via the API.
200 OK — WorkspaceResponseDto
Returns the full updated workspace object.
DELETE /api/v1/workspaces/{id}
Soft-delete a workspace. The workspace is marked as deleted via a deleted_at timestamp and will no longer appear in list responses. All documents and folders in the workspace are implicitly inaccessible after deletion. Only the workspace owner can perform this action.
Path parameters
UUID of the workspace to delete.
204 No Content
No response body is returned on successful deletion.
POST /api/v1/workspaces/{id}/invite
Invite a user to join a workspace by their email address. The user must already have a registered Caret account. If the user is already a member of the workspace, the operation reactivates their membership. Invited members are assigned the member role; workspace ownership can only be transferred out-of-band.
Path parameters
UUID of the workspace to invite the user to.
Email address of the user to invite. The user must have an existing Caret account.
201 Created
UUID of the workspace the user was invited to.
UUID of the invited user, resolved from the provided email.
Email address of the invited user, as provided in the request.
Role assigned to the invited user. Always
"member" for workspace invites.