Skip to main content
Nine methods. API detail: Organizations.

list

GET /v1/organizations — the organizations this credential reaches. Orgless: it answers on a person session, which is what makes org switching possible.

create

POST /v1/organizations. The reply carries two objects: the organization and the first admin API key that opens it — api_key.secret is returned here and never again. A caller signed in as a person also becomes the founding owner.

setup

POST /v1/organizations/setup — the company a signed-in person is setting up, found or made, with them as its owner. One per person: asking again answers the same company until it is activated by a paid plan. template (blueprint/template) is recorded as start_template when it is made. It mints no API key, and an API key is refused (forbidden). See Set up a company.

get

GET /v1/organizations/{id} — including balance_micro_usd, integer micro-USD.

update

PATCH /v1/organizations/{id}. Send a new name, a new timezone (an IANA name such as America/Los_Angeles), a new logo_svg (SVG text; null removes it), a new brand (a brand kit — { palette, typeface, tagline }; null removes it), or any of them together. A logo the check refuses, or a kit that does not match, throws validation_failed with the reason.

members

GET /v1/organizations/{id}/members, cursor-paginated.

addMember

POST /v1/organizations/{id}/members. Role is "owner" | "admin" | "member".

setRole

PATCH /v1/organizations/{id}/members/{user_id}, body { role }. Recorded in the audit log as member.role_changed.

removeMember

DELETE /v1/organizations/{id}/members/{user_id}. Removal does not cascade: keys that member created keep working and their sessions keep running — revoke each one with keys.revoke, reading keys.list first, since a key’s created_by is the only record of who minted it.