The history of one subject’s tier
const url = 'https://beta-api.plune.ai/v1/admin/tier-grants?subject=company%3A6f1c2b3a-0000-4000-8000-0000000000a5';const options = {method: 'GET', headers: {cookie: 'plune_session=<plune_session>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://beta-api.plune.ai/v1/admin/tier-grants?subject=company%3A6f1c2b3a-0000-4000-8000-0000000000a5' \ --cookie plune_session=<plune_session>Every grant of one account or company, newest first (up to 200), with the standing worked out from them now. A subject with no grant is Free and has an empty list. Owner-only and session-only, as GET /v1/admin/tiers; everyone else gets 404. Ten calls a minute.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”Example
company:6f1c2b3a-0000-4000-8000-0000000000a5user:<id> or company:<id>
Responses
Section titled “ Responses ”The standing and the history
object
object
Free and Personal are an account’s, Team and Enterprise a company’s; Free may also be a company’s, as the row that cancels its Team.
Worked out from the grants at the database’s clock, never stored. active: a paid grant covers now. grace: it ended or was cancelled less than 14 days ago, and the limits are still the tier’s. expired: the 14 days are over — Free. disabled: the operator switched it off — Free at once, and nothing is deleted for 14 days. No grant ever is plain Free, active.
What a grant carries besides its tier. A free grant carries none.
object
When the paid period ends — or ended, in grace. null without an end, and on Free.
Only in grace and disabled: when the 14 days end.
One row of the append-only history. A cancellation is a later row with tier: free, not a change to this one.
object
object
Free and Personal are an account’s, Team and Enterprise a company’s; Free may also be a company’s, as the row that cancels its Team.
What a grant carries besides its tier. A free grant carries none.
object
The application owner who granted it; null for a payment.
The address of grantedBy; deleted account once the purge has made that account nobody; null for a payment.
Example
{ "standing": { "tier": "team", "state": "active", "options": { "saml": true }, "validUntil": "2099-12-31T23:59:59.000Z", "graceEndsAt": null }, "grants": [ { "id": "6f1c2b3a-0000-4000-8000-0000000000a6", "subject": { "kind": "company", "id": "6f1c2b3a-0000-4000-8000-0000000000a5" }, "tier": "team", "options": { "saml": true }, "validFrom": "2026-09-16T09:12:04.151Z", "validUntil": "2099-12-31T23:59:59.000Z", "source": "manual", "grantedBy": "u-shop", "note": "annual invoice 2026-114", "disabled": false, "createdAt": "2026-09-16T09:12:04.151Z" } ]}subject is not user:<id> or company:<id>
object
Example
{ "error": "subject: must be user:<id> or company:<id>"}No / invalid session
The caller does not own the application
object
Example generated
{ "error": "example"}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