The projects you are in
const url = 'https://beta-api.plune.ai/v1/projects';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://beta-api.plune.ai/v1/projects \ --header 'Authorization: Bearer <token>'Every project the caller is a member of, with their role in each and its last run, oldest first (api.ts → listProjects; the dashboard reads it at boot to fill the project switcher). The one surface that takes no X-Plune-Project: it is how a client learns which ids it may put there. A brand-new account lists exactly one — its default project, provisioned on first sight — never none.
Authorizations
Section titled “Authorizations ”Responses
Section titled “ Responses ”Your projects
object
A project the caller is a member of, with their role in it — one row of GET /v1/projects.
object
What a member may do (B8-team). owner runs the project — members, roles, its name; member does everything else; reader is refused every write at the boundary, before a handler runs.
In GET /v1/projects only: the project’s newest live run — when, how many results, how many passed — or null for a project with no run yet. Counted as GET /v1/runs counts a row: the summary an upload stored, else its results. The Projects page reads it under each name.
object
In GET /v1/projects only: the company the project is in (ADR 0038), or null for a personal one. The Projects page names it as the owner of the card.
object
Example
{ "projects": [ { "id": "u-shop::default", "name": "Checkout", "role": "owner", "createdAt": "2026-09-16T09:12:04.151Z", "lastRun": { "at": "2026-09-16T09:12:04.151Z", "total": 48, "passed": 45 }, "company": null }, { "id": "9c4e7d10-0000-4000-8000-0000000000a4", "name": "Mobile app", "role": "member", "createdAt": "2026-09-16T09:12:04.151Z", "lastRun": null, "company": { "id": "6f1c2b3a-0000-4000-8000-0000000000a5", "name": "Acme" } } ]}No / invalid token or session