limits.max_seats on Tier status). Minting seats requires the Team plan.
List members
Mint an agent seat
An agent seat is an identity of its own, with its ownpb_ key and its own line in the changelog, so an agent’s writes are attributable and revocable without touching a human’s key.
apiKeyis returned once. There is no retrieval. The single-project form returns the same shape withoutprojects.- Prefer
projectIdswhen one agent works across several of your projects: one key to store, rotate and audit, and one seat however many projects it spans. Pass theprojectIdyou mean on each request as usual. - You must own every project you name. Otherwise
403 { "error": "not_owner", "message": "You do not own: ..." }and nothing is created. - Adding a project later means POSTing the full list again, which mints a new identity and key. Name every project up front.
- On Builder you get the owner seat plus your own key from the app; provision your agent with that. Asking for a seat anyway returns
403 { "error": "team_tier_required", "message": "Adding members requires the Team tier." }. - At the seat cap:
403 { "error": "seat_limit", "message": "Your plan allows 5 seats. Remove a member or upgrade." }.
/mutate and /workflow it rides the owner’s Team plan and the owner’s node limit.
Add an existing user
404 { "error": "user_not_found", ... } otherwise). Already a member: 400.
Invite a guest contributor
A contributor is a new, passwordless guest identity scoped to the projects you name. They work in the app UI on those projects only; AI use is billed to your plan.409 { "error": "email_in_use", ... }; add that person as a full member instead. If the invitation email cannot be sent, 502 { "error": "invite_failed", ... }.
Remove a seat
403 otherwise). Not a member: 404. Removing an agent seat from one project leaves its key working on the rest. Removing its last membership revokes the key.
