Skip to content

Create a company

POST
/v1/companies
curl --request POST \
--url https://beta-api.plune.ai/v1/companies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "name": "Acme QA" }'

A name, and the caller is its owner. It starts with no project: a project gets into a company by POST /v1/projects/{id}/transfer, one way. Nothing about the caller’s own projects changes.

Media type application/json

The body of POST /v1/companies and of PATCH /v1/companies/{id} alike — a company has a name and nothing else to set.

object
name
required
string
>= 1 characters <= 100 characters
Example
{
"name": "Acme QA"
}

Created — you are its owner

Media type application/json

A company the caller is in, with their role in it and two counts — one row of GET /v1/companies.

object
id
required
string format: uuid
name
required
string
<= 100 characters
role
required

What a member of a company may do (ADR 0038). owner and admin manage its people and add them to its projects — only an owner makes, unmakes or removes an owner, and only an owner deletes it; member and reader join its projects themselves. A company role opens no project: joining one gives the project role it maps to — owner and admin → owner, member → member, reader → reader.

string
Allowed values: owner admin member reader
projects
required

Its projects — all of them, joined or not: their names are the company’s.

integer
members
required
integer
>= 1
createdAt
required
string format: date-time
Example
{
"id": "6f1c2b3a-0000-4000-8000-0000000000a5",
"name": "Acme QA",
"role": "owner",
"projects": 0,
"members": 1,
"createdAt": "2026-09-16T09:12:04.151Z"
}

Invalid body — a name is 1 to 100 characters

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}

No / invalid token or session

Rate-limited: either the per-route throttle or a tenant quota. Retry-After carries the seconds until the window rolls over.

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}
Retry-After
integer

Seconds until the window rolls over