Skip to content

Companies

A company stands above projects: it holds projects and the people who work on them, with roles of its own. You can be in several companies. A project in no company is a personal project — every project is one until its owner moves it into a company — and for somebody in no company nothing changes.

What you see inside a project is still decided by membership of that project, as on Projects. Everyone in a company sees the names of its projects and its people; a project’s runs, cases and plans open only to that project’s members. A company role opens no project by itself. It gives two things instead: the right to join the company’s projects, and the role you join them with.

Companies in the bar outside a project (/companies) lists every company you are in: your role in it, how many projects and people it has, and the day it was made. The company you opened last comes first, the others oldest first. A row opens the company’s page.

The Companies page with two companies: Acme QA, marked Owner, 2 projects · 3 people; Northwind Labs, marked Member, 1 project · 2 people — each with the day it was made. New company on the right of the title. The Companies page with two companies: Acme QA, marked Owner, 2 projects · 3 people; Northwind Labs, marked Member, 1 project · 2 people — each with the day it was made. New company on the right of the title.
Every company you are in, with your role in each.

A company has four roles, and they are not project roles: a company role says what you may do in the company, and which project role you get when you join one of its projects.

RoleIn the companyJoins its projects as
Owner (owner)everything an admin does, and alone: whatever touches an owner — making, demoting, removing or inviting one — and deleting the companyowner
Admin (admin)invites people, changes their roles and removes them — owners aside; moves projects in; adds people to its projects; renames itowner
Member (member)sees its projects and people, joins its projects, leavesmember
Read-only (reader)the same as a memberread-only (reader)
  • Anyone in a company adds themself to one of its projects — Join as … on the Projects tab. Adding somebody else is an owner’s or an admin’s.
  • The role in the last column is given at the moment somebody joins, is added, or their project moves in. After that the role in the project is the project’s business: a new company role does not change it in the projects they are already in.
  • A company always has an owner. The last one can neither leave nor step down — 409 a company needs an owner — make somebody else one first.
  • An admin runs the company below its owners: making, demoting, removing or inviting an owner answers 403 company owner only.

The three project roles are on Members.

  1. On Companies, click New company.

    The New company dialog: the Name field holding Acme QA, the hint You become its owner. Projects move into it from the company's page., and Cancel and Create company. The New company dialog: the Name field holding Acme QA, the hint You become its owner. Projects move into it from the company's page., and Cancel and Create company.
  2. Type its name — 1 to 100 characters — and click Create company. You are its owner, and its page opens on the empty Projects tab.

Through the API — any token of yours, or your session:

Terminal window
curl -X POST https://beta-api.plune.ai/v1/companies \
-H "Authorization: Bearer $PLUNE_TOKEN" \
-H "content-type: application/json" \
-d '{"name":"Acme QA"}'
{
"id": "d662bdb4-…", "name": "Acme QA", "role": "owner",
"projects": 0, "members": 1, "createdAt": "2026-09-29T12:36:12.487Z"
}

201, and the answer is the company as the list shows it: your role, its projects and people counted.

The People tab lists everyone in the company — their role, their address and who invited them — and, for owners and admins, the invitations still waiting.

Acme QA's People tab as its owner sees it: an Email field, the Role list on Read-only and Invite; under them Invitation sent to riley@example.com — they join when they first sign in, and a line saying what each role gives in the company's projects. People · 3: Alex Morgan, you, alex@example.com, Created Acme QA, Owner, with Leave company; Jordan Lee, jordan@example.com, Invited by you, Admin; Sam Patel, sam@example.com, Invited by Jordan Lee, Member — each with a role list and a remove button. Pending invitations · 1: riley@example.com, Invited · now, Read-only, Withdraw. Acme QA's People tab as its owner sees it: an Email field, the Role list on Read-only and Invite; under them Invitation sent to riley@example.com — they join when they first sign in, and a line saying what each role gives in the company's projects. People · 3: Alex Morgan, you, alex@example.com, Created Acme QA, Owner, with Leave company; Jordan Lee, jordan@example.com, Invited by you, Admin; Sam Patel, sam@example.com, Invited by Jordan Lee, Member — each with a role list and a remove button. Pending invitations · 1: riley@example.com, Invited · now, Read-only, Withdraw.
An invitation waits under Pending until the address first signs in.
  • Invite — an address and a role, Member unless you pick another. An address that already has a Plune account is in at once. Any other gets a mail, waits under Pending invitations and joins at its first sign-in; the invitation also lets it through the beta door, as an invitation into a project does (Members). Withdraw takes it back.
  • Change a role in the person’s row; × removes them. An admin’s list of roles stops at Admin, and an owner’s row is only a badge to an admin.
  • Leave company is on your own row, whatever your role — a read-only person may leave too.
  • Members and read-only people see the list with no controls but their own Leave company, and no invitations.

Leaving or being removed takes the person out of every project of the company too, and off the cases assigned to them there; their personal projects are not touched. When they are the last owner of one of the company’s projects, nothing changes, and the answer names that project — make somebody else its owner first:

{
"error": "[email protected] is the last owner of «Payments API» — make somebody else its owner first",
"projectId": "63489859-…"
}

Inviting through the API:

Terminal window
curl -X POST \
https://beta-api.plune.ai/v1/companies/d662bdb4-…/members \
-H "Authorization: Bearer $PLUNE_TOKEN" \
-H "content-type: application/json" \
-d '{"email":"[email protected]","role":"admin"}'
{
"kind": "invitation", "id": "63b1df20-…",
"email": "[email protected]", "role": "admin",
"createdAt": "2026-09-29T12:36:13.884Z"
}

201. kind says which of the two happened: invitation for an address with no account yet, or member — the person’s row, with userId and invitedBy — for somebody who is in at once. The same address twice, or one already in, answers 409; a member or a read-only person asking answers 403 company owner or admin only.

The rest of the tab, for owners and admins — and the removal of your own row, which is leaving, for anyone:

PATCH /v1/companies/{id}/members/{userId} { "role": "reader" } → 200
DELETE /v1/companies/{id}/members/{userId} → 204
DELETE /v1/companies/{id}/invitations/{invitationId} → 204

A company’s project takes the company’s people. On its Settings → Members, inviting takes an owner of the project who is also an owner or admin of the company: a project owner who is only a member of the company is answered 403 company owner or admin only. Somebody from outside the company is asked into the company too, with the company role the picked project role comes from — Owner → Admin, Member → Member, Read-only → Read-only. Somebody already in the company joins the project with the role their company role gives, whatever was picked.

The Projects tab lists every project of the company by name. One you are in opens — your role in it on the right. Any other offers Join as … with the role your company role gives: Join as owner for owners and admins, Join as member, Join as read-only. After the click the row opens the project.

Acme QA's page as its owner sees it: Acme QA, Owner, 2 projects · 3 people; the tabs Projects, People and Settings; the line Everyone in Acme QA sees these names. A project's runs and cases open only to its members — join one to see inside., with Move a project here on the right; Checkout web, marked Owner, with an arrow into it; Payments API with Join as owner. Acme QA's page as its owner sees it: Acme QA, Owner, 2 projects · 3 people; the tabs Projects, People and Settings; the line Everyone in Acme QA sees these names. A project's runs and cases open only to its members — join one to see inside., with Move a project here on the right; Checkout web, marked Owner, with an arrow into it; Payments API with Join as owner.
Checkout web is Alex's own; Payments API is Jordan's, and Alex can join it as an owner.

Through the API, joining is POST /v1/companies/{id}/projects/{projectId}/join → 201 { "projectId": "…", "role": "owner" }, for anyone in the company, themself only. An owner or an admin adds somebody else in the company with POST /v1/companies/{id}/projects/{projectId}/members { "userId": "…" } → 201 { "projectId", "userId", "role" } — their role by the same table. Somebody already in the project answers 409.

Owners and admins of a company move their own projects into it: Move a project here lists the projects you own that are in no company, your default project aside.

The Move a project into Acme QA dialog: Project — Mobile app, with the hint Your own projects outside any company.; This is one-way. Mobile app stays in Acme QA for good — it cannot go back to your own projects, and deleting Acme QA deletes it too.; People of Mobile app who are in Acme QA get the role their company role gives; the others keep theirs — an owner outside the company becomes a member.; Cancel and Move Mobile app. The Move a project into Acme QA dialog: Project — Mobile app, with the hint Your own projects outside any company.; This is one-way. Mobile app stays in Acme QA for good — it cannot go back to your own projects, and deleting Acme QA deletes it too.; People of Mobile app who are in Acme QA get the role their company role gives; the others keep theirs — an owner outside the company becomes a member.; Cancel and Move Mobile app.
  • One way. A project in a company stays in it: there is no way back to your own projects, in the dashboard or through the API, and deleting the company deletes the project too. The dialog says so before the click.
  • Your default project stays personal — it is where a request with no project lands.
  • Its people. Those who are in the company get the role their company role gives. The others keep theirs, but an owner becomes a member: a company’s projects are run by its owners and admins. An invitation into the project as owner becomes one as member.

Through the API:

Terminal window
curl -X POST \
https://beta-api.plune.ai/v1/projects/24325643-…/transfer \
-H "Authorization: Bearer $PLUNE_TOKEN" \
-H "content-type: application/json" \
-d '{"companyId":"d662bdb4-…"}'
{
"id": "24325643-…", "name": "Checkout web",
"company": { "id": "d662bdb4-…", "name": "Acme QA" }
}

The refusals come about the project first, so somebody outside it learns nothing about the company from their order:

AnswerWhen
404 project '…' not foundyou are not in the project
403 project owner onlyyou are in it, but not its owner
409 a default project stays personal — it is where a request with no project landsit is your default project
409 this project is already in a company — a transfer is one-wayit is in a company already
404 company '…' not foundyou are not in the company
403 company owner or admin onlyyou are a member or read-only in it

GET /v1/projects names each project’s company — "company": { "id": "…", "name": "Acme QA" }, or null for a personal one.

Outside its own pages, a company’s name stands over its projects wherever they are listed or opened.

Projects groups the projects you are in by company: Personal first — every project in no company, a colleague’s personal project you were asked into among them — then each company by name, under the building, with how many people it has, your role in it and Open company →. A company where you are in none of its projects yet has a line of its own and the way to its page, where you join one. More on the Projects page.

The Projects page in groups: Personal — Projects outside any company — with Mobile app and Shop web; Acme QA — Company · 3 people · you are its owner, and Open company — with Checkout web; Northwind Labs — Company · 2 people · you are a member, and Open company — with the line You are in none of Northwind Labs's projects yet. Its page lists them all — join one there. The Projects page in groups: Personal — Projects outside any company — with Mobile app and Shop web; Acme QA — Company · 3 people · you are its owner, and Open company — with Checkout web; Northwind Labs — Company · 2 people · you are a member, and Open company — with the line You are in none of Northwind Labs's projects yet. Its page lists them all — join one there.
Alex owns Acme QA and is a member of Northwind Labs, in none of its projects yet.

Inside a company’s project the bar names the company before the project — the building and its name, a link to the company’s page — and the project switcher groups its list the same way.

The left end of the bar in Checkout web: the building and Acme QA, a slash, Checkout web with its chevron, a slash, and RUNS. The left end of the bar in Checkout web: the building and Acme QA, a slash, Checkout web with its chevron, a slash, and RUNS.

Somebody in a company’s project but not in the company — left in it after a move — sees the company’s name there too, as words with no link: the company’s page is not theirs and answers them 404, and on Projects its group has no Open company →.

Owners and admins have a Settings tab: the company’s name, which Save changes once you edit it. The Danger zone under it is the owner’s alone.

Acme QA's Settings tab: Company name, the field holding Acme QA and Save, greyed until the name changes; below, the Danger zone — Acme QA and its 2 projects go to the Bin for 6 months, then they are gone for good. Only an owner can delete a company. — and Delete company. Acme QA's Settings tab: Company name, the field holding Acme QA and Save, greyed until the name changes; below, the Danger zone — Acme QA and its 2 projects go to the Bin for 6 months, then they are gone for good. Only an owner can delete a company. — and Delete company.

Delete company names the projects that go with it and waits until you type the company’s name:

The Delete Acme QA? dialog: Its 2 projects go with it: Checkout web, Payments API. They stay in the Bin for 6 months, then they are gone for good.; a field saying Type Acme QA to confirm; Cancel, and Delete company and 2 projects, greyed until the name is typed. The Delete Acme QA? dialog: Its 2 projects go with it: Checkout web, Payments API. They stay in the Bin for 6 months, then they are gone for good.; a field saying Type Acme QA to confirm; Cancel, and Delete company and 2 projects, greyed until the name is typed.

The company and every project in it go to the Bin together, and six months later they are gone for good. From the moment of the delete they open for nobody: they leave Companies, Projects and Analytics, their addresses answer 404, and there is no Restore for a company in the dashboard or the API.

PATCH /v1/companies/{id} { "name": "Acme Quality" } → 200
DELETE /v1/companies/{id} → 200

A rename is an owner’s or an admin’s and answers the company as the list shows it; a delete is the owner’s alone and answers how many projects went with it — { "projects": 2 }.

Every company route takes a token or your session. A token acts as you here: it reads every company you are in, whichever project it was minted for.

Terminal window
curl -H "Authorization: Bearer $PLUNE_TOKEN" \
https://beta-api.plune.ai/v1/companies
{
"companies": [
{
"id": "d662bdb4-…", "name": "Acme QA", "role": "owner",
"projects": 2, "members": 3,
"createdAt": "2026-09-29T12:36:12.487Z"
}
]
}

Oldest first. role is yours in the company, projects counts all its projects — joined or not — and members its people. GET /v1/companies/{id} is the company’s page:

{
"id": "d662bdb4-…", "name": "Acme QA", "role": "member",
"createdAt": "2026-09-29T12:36:12.487Z",
"projects": [
{ "id": "24325643-…", "name": "Checkout web",
"joined": true, "role": "member" },
{ "id": "63489859-…", "name": "Payments API", "joined": false }
],
"members": [
{ "userId": "…", "email": "[email protected]", "name": "Alex Morgan",
"role": "owner", "createdAt": "…" },
{ "userId": "…", "email": "[email protected]", "name": "Sam Patel",
"role": "member", "invitedBy": "…", "createdAt": "…" }
],
"invitations": []
}

A project you are not in gives its name and "joined": false, nothing more. invitations — each with the projectId it joins when it was sent from a project’s Members page — are for owners and admins, and empty for everyone else.

Somebody outside the company gets the answer an id nobody has gets, on this route and every route under it — the company’s existence is never confirmed:

Terminal window
curl -H "Authorization: Bearer $PLUNE_TOKEN" \
https://beta-api.plune.ai/v1/companies/d662bdb4-…
{ "error": "company 'd662bdb4-…' not found" }

Each route of the sections above, with every field and answer: the API reference.

Below 480 px wide the list’s rows stack — the name and your role, the size under them — and a company’s People tab puts the form and each person’s controls under one another.

Companies on a phone: Companies · 2 and New company; Acme QA, Owner, 2 projects · 3 people; Northwind Labs, Member, 1 project · 2 people. Companies on a phone: Companies · 2 and New company; Acme QA, Owner, 2 projects · 3 people; Northwind Labs, Member, 1 project · 2 people.
Acme QA's People tab on a phone: Email, Role on Read-only and a full-width Invite, one under another; the sent line and the roles line; Alex Morgan, Jordan Lee and Sam Patel, each with the role list under the name; Pending invitations with riley@example.com, Read-only, Withdraw. Acme QA's People tab on a phone: Email, Role on Read-only and a full-width Invite, one under another; the sent line and the roles line; Alex Morgan, Jordan Lee and Sam Patel, each with the role list under the name; Pending invitations with riley@example.com, Read-only, Withdraw.

Step by step: your team’s project into a new company

Section titled “Step by step: your team’s project into a new company”
  1. Create the company — Companies → New company, a name, Create company. You are its owner. See Creating a company.

  2. Invite the team — on People, each address with a role. People who already use Plune are in at once; the others join at their first sign-in. See People.

  3. Move the project — on Projects, Move a project here, pick it, read the warning, Move. Everyone on the project who is in the company by now gets the role their company role gives. See Moving a project in.

  4. Open the rest — each colleague finds the company’s other projects on its Projects tab and joins one with Join as …. See A company’s projects.

Why can’t I see the runs of a company’s project? You are in the company, not in the project, and a company role opens no project. Join it on the company’s Projects tab with Join as …, or ask an owner or admin of the company to add you.

Why can’t a project go back out of a company? A move is one-way by design: a company’s projects are run by the company’s owners and admins, and deleting the company takes them with it. Nothing in the dashboard or the API moves a project back — which is why the dialog says so before the click. A project you want to keep to yourself, leave personal.

What does somebody outside the company see? Nothing of it. Every company route answers 404 with the body an id nobody has gets, and the dashboard shows This company does not exist, or you are not in it. The names of its projects are not shown to them, and a project of it they are not in answers 404 too. Somebody left in one of its projects after a move sees the company’s name over that project, and nothing more.

Where are the company’s analytics? Not there yet. Analytics counts every project you are a member of — a company’s projects among them once you join them — but a company of its own is not a filter or a page there.