Teamspaces overview
Teamspaces group members and projects under one team.
The teamspace object
Attributes
created_atstring (date-time)When the teamspace was created.
updated_atstring (date-time)When the teamspace was last updated.
created_by_idstring (uuid)The user who created the teamspace.
updated_by_idstring (uuid) or nullThe user who last updated the teamspace.
nulluntil someone updates it.description_htmlstringRich-text body as HTML. This is the field the Plane editor round-trips.
idstring (uuid)Unique identifier.
lead_idstring (uuid)The related lead.
logo_propsstringEditor-owned logo descriptor. Pass back what you read rather than composing it by hand.
member_idsarray of stringIds of the associated members.
namestringDisplay name.
project_idsarray of stringIds of the associated projects.
{
"created_at": "2026-01-14T09:22:41.478363Z",
"created_by_id": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
"description_html": "<p>Details go here.</p>",
"id": "b7e42a19-3c5d-4f80-9a26-8d1c0f4e7b53",
"lead_id": "f960d3c2-8524-4a41-b8eb-055ce4be2a7f",
"logo_props": null,
"member_ids": ["16c61a3a-512a-48ac-b0be-b6b46fe6f430"],
"name": "Example name",
"project_ids": ["16c61a3a-512a-48ac-b0be-b6b46fe6f430"]
}Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/v2/workspaces/{slug}/teamspaces/ | List teamspaces |
GET | /api/v2/workspaces/{slug}/teamspaces/{pk}/ | Get a teamspace |
POST | /api/v2/workspaces/{slug}/teamspaces/ | Create a teamspace |
PATCH | /api/v2/workspaces/{slug}/teamspaces/{pk}/ | Update a teamspace |
DELETE | /api/v2/workspaces/{slug}/teamspaces/{pk}/ | Delete a teamspace |
GET | /api/v2/workspaces/{slug}/teamspaces/{pk}/members/ | List a teamspace's members |
GET | /api/v2/workspaces/{slug}/teamspaces/{pk}/projects/ | List a teamspace's projects |
The two list routes return the rows behind member_ids and project_ids, paginated, so you don't have to look up each id. They are read-only. Write member_ids and project_ids inline on Create a teamspace and Update a teamspace.
Response shaping
Every teamspace read accepts ?fields= for sparse responses. See Sparse fields. Errors follow the shared problem+json contract.

