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.