Rename a project
const url = 'https://beta-api.plune.ai/v1/projects/example';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"Checkout"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://beta-api.plune.ai/v1/projects/example \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "Checkout" }'An owner of THAT project renames it (api.ts → renameProject), whichever project the request is standing in — the id is in the path, not the header. A member of it is told it is the owner’s to rename (403); a stranger gets the 404 an invented id gets. Recorded in the audit feed of the project as a project update.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”An id from GET /v1/projects
Request Body required
Section titled “Request Body required ”The body of POST /v1/projects and of PATCH /v1/projects/{id} alike — a project has a name and nothing else to set.
object
Example
{ "name": "Checkout"}Responses
Section titled “ Responses ”The project as it is now
A project the caller is a member of, with their role in it — one row of GET /v1/projects.
object
What a member may do (B8-team). owner runs the project — members, roles, its name; member does everything else; reader is refused every write at the boundary, before a handler runs.
Example
{ "id": "u-shop::default", "name": "Checkout", "role": "owner", "createdAt": "2026-09-16T09:12:04.151Z"}Invalid body — a name is 1 to 100 characters
object
Example generated
{ "error": "example"}No / invalid token or session
You are in it, but not as an owner
object
Example
{ "error": "project owner only"}No such project among yours
object
Example
{ "error": "project 'u-shop::default' not found"}Rate-limited: either the per-route throttle or a tenant quota. Retry-After carries the seconds until the window rolls over.
object
Example generated
{ "error": "example"}Headers
Section titled “Headers ”Seconds until the window rolls over