Skip to content

The projects you are in

GET
/v1/projects
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.

Your projects

Media type application/json
object
projects
required
Array<object>

A project the caller is a member of, with their role in it — one row of GET /v1/projects.

object
id
required
string
name
required
string
<= 100 characters
role
required

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.

string
Allowed values: owner member reader
createdAt
required
string format: date-time
lastRun

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
at
required
string format: date-time
total
required
integer
passed
required
integer
company

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
id
required
string
name
required
string
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