リファレンスHTTP APITeams

The workspace's teams, by name

GET
/v1/teams

Owners and admins. Archived teams are left out. q keeps the teams whose name contains it, ignoring case. By name, then id, limit per page (default 50, at most 100). Pass next_cursor back as cursor for the next page; it is null on the last one. A cursor that does not decode to a position in that order answers 400; a cursor only positions the read, so one from another workspace shows nothing of it. A team renamed while the pages are read can show twice or not at all; every other team shows once.

Auth: cookie session only; no scope.

Authorization

cookieSession
cookie__Host-werft_session<token>

For the web console: the browser session cookie set by POST /v1/auth/login. It holds the scopes of the user's workspace role (owner: all; admin and member: all but sessions:recover). Requests other than GET must also send X-Requested-With: werft-web.

Query Parameters

cursor?string

The next_cursor of the page before; omit it for the first page.

Length1 <= length
limit?integer

How many items a page holds at most.

Range1 <= value <= 100
Default50
q?string

Keeps the teams whose name contains it, ignoring case. % and _ match themselves.

Length1 <= length <= 200

Response Body

A page of the workspace's live teams.

application/json
  1. response
items*array<>
next_cursor*|null
Example Request
curl -X GET 'https://example.com/v1/teams'
Example Response
{  "items": [    {      "id": "019a0000-0000-7000-8000-00000000b0a1",      "workspace_id": "9d2c4e61-8a3b-4f70-b1e5-6c0a7d3f2b98",      "name": "research admins",      "member_count": 2,      "created_by": "3e7f1a90-5c2d-4b8e-8f61-2a9d0c4b7e35",      "created_at": "2026-10-23T09:00:00Z",      "revision": 3    }  ],  "next_cursor": null}