Close a request for a paid tier
const url = 'https://beta-api.plune.ai/v1/admin/tier-requests/example';const options = { method: 'PATCH', headers: { cookie: 'plune_session=<plune_session>', 'Content-Type': 'application/json' }, body: '{"status":"done"}'};
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/admin/tier-requests/example \ --header 'Content-Type: application/json' \ --cookie plune_session=<plune_session> \ --data '{ "status": "done" }'The operator closes an open request (#2121) without a grant: done (the tier is there by another way) or declined. A grant of the tier (POST /v1/admin/tier-grants) closes it as done by itself; this close grants nothing. A request closed already stays as it was closed (409 request_closed); the person may ask again, which is a new request. Written to the admin journal (admin_events) with the request and its new status, as every call at these doors is. Owner-only and session-only, as GET /v1/admin/tiers; everyone else gets 404, before the body is read. Ten calls a minute.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Request Body required
Section titled “Request Body required ”object
Examples
Switched on by hand
{ "status": "done"}Declined
{ "status": "declined"}Responses
Section titled “ Responses ”The request, closed
object
A request for a paid tier (#2121), until payment is there. open waits for the operator; done once the tier was switched on by hand, declined otherwise.
object
object
Example
{ "request": { "id": "6f1c2b3a-0000-4000-8000-0000000000f6", "tier": "team", "subject": { "kind": "company", "id": "6f1c2b3a-0000-4000-8000-0000000000a5" }, "status": "done", "createdAt": "2026-09-16T09:12:04.151Z" }}Not JSON, or a status other than done and declined
object
Example
{ "error": "validation failed — status: must be done or declined"}No / invalid session
The caller does not own the application — or there is no such request
object
Example generated
{ "error": "example"}The request is closed already
object
Example
{ "error": "this request is closed already", "code": "request_closed"}Rate-limited: the per-route throttle, or the per-minute request limit of the plan an API token counts by (#1442; the body names the plan, #2092). 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