Projects

Manage projects and project members.


Project endpoints require workspace context. Pass workspaceId on supported API requests or use a workspace-scoped token.

Projects

Method Path Purpose
GET /v1/projects List projects visible in the selected workspace
POST /v1/projects Create a project
PATCH /v1/projects/:projectId Update a project
DELETE /v1/projects/:projectId Delete a project

Projects can be used in scope: { "type": "projects", "ids": [...] } for private packs and tracks.

Project name is required. description accepts Markdown content. Updates use PATCH semantics, so omitted fields stay unchanged.

Project members

Method Path Purpose
POST /v1/projects/members/list List members across project IDs
PUT /v1/projects/:projectId/members Add project members
DELETE /v1/projects/:projectId/members Remove project members in bulk
DELETE /v1/projects/:projectId/members/:userId Remove one project member

POST /v1/projects/members/list takes { "projectIds": [...] }.

PUT /v1/projects/:projectId/members accepts either the legacy single-member body or the bulk body:

{ "userId": "user-id" }
{ "userIds": ["user-id-1", "user-id-2"] }

Bulk deletes use a comma-separated userIds query parameter rather than a request body, because some intermediaries strip bodies from DELETE requests:

DELETE /v1/projects/:projectId/members?userIds=user-id-1,user-id-2
Authorization: Bearer <token>

Project member bulk calls accept up to 100 user IDs per request.