Version
GET

List a project's council sessions

/v1/projects/{project}/council in the Council API.

curl https://api.example.test/v1/projects/$PROJECT_ID/council \  -H "Authorization: Bearer $TOKEN"

Every sitting on the project, newest first, with its turns: the moment, the record it read, the voices, where it stands, the verdict once written, the counts, the cost, who convened and when.

GET
/v1/projects/{project}/council

Requires ability

The token must hold this ability, or the call is refused with 403.

Run the same action from an agent, behind the same ability.

Authorization

bearerToken
AuthorizationBearer <token>

A personal access token minted in the app under Account Settings, then API Tokens, sent as Authorization: Bearer zg_live_…. The token carries the abilities each endpoint lists under Requires ability and is frozen to one team, and optionally to one project, at mint time.

In: header

Path Parameters

project*string

The project.

Formatuuid

Responses

200OK

Array of CouncilSessionResource

401Unauthorized

The request carries no bearer token, or one that is revoked, malformed, or minted for another environment (a zg_test_ token on production).

403Forbidden

The token is valid but does not carry the ability this endpoint requires; error.context.required_ability names the one to grant. An endpoint that also checks who registered a row answers FORBIDDEN with the same status, and says so in its own description. On this endpoint: FORBIDDEN: when the token is a client guest's, or the holder's role on the project does not carry import:view-any.

404Not found

An id in the path names nothing the token can see. TENANT_MISMATCH: the project sits outside the token's scope:project: allow-list, or the token carries no team scope. Both answer 404 rather than 403 so that existence outside the token's scope cannot be inferred. On this endpoint: RESOURCE_NOT_FOUND: when the project is hidden from the token or missing.

429Too many requests

The token has spent its 300 requests a minute or 10,000 an hour; Retry-After says when the next one is accepted.

How is this guide?

Last updated on