The projects you are in
GET
/v1/projects
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, 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
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
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
createdAt
required
string format: date-time
Example
{ "projects": [ { "id": "u-shop::default", "name": "Checkout", "role": "owner", "createdAt": "2026-09-16T09:12:04.151Z" }, { "id": "9c4e7d10-0000-4000-8000-0000000000a4", "name": "Mobile app", "role": "member", "createdAt": "2026-09-16T09:12:04.151Z" } ]}No / invalid token or session