Skip to content

Find an account or a company and see its tier

GET
/v1/admin/tiers
curl --request GET \
--url 'https://beta-api.plune.ai/v1/admin/tiers?query=example' \
--cookie plune_session=<plune_session>

Accounts by part of the address and companies (not in the Bin) by part of the name, up to 25 of each: the tier each is on now, until when, and the newest grant — who gave it and why. Owner-only and session-only (the owner’s plune_session cookie; a bearer token is refused, as every token is minted inside a project); everyone else gets 404. Ten calls a minute.

query
required
string
>= 1 characters <= 100 characters

The accounts and companies that match

Media type application/json
object
results
required
Array<object>
object
subject
required
object
kind
required
string
Allowed values: user company
id
required
string
label
required

The address of an account, the name of a company.

string
standing
required
object
tier
required

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.

string
Allowed values: free personal team enterprise
state
required

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.

string
Allowed values: active grace expired disabled
options
required

What a grant carries besides its tier. A free grant carries none.

object
saml
boolean
extra_storage_packs
integer
<= 1000
extra_full_months
integer
<= 120
validUntil
required

When the paid period ends — or ended, in grace. null without an end, and on Free.

string format: date-time
nullable
graceEndsAt
required

Only in grace and disabled: when the 14 days end.

string format: date-time
nullable
latest
required

The newest row of its history; null when it never had one.

object
id
required
string format: uuid
subject
required
object
kind
required
string
Allowed values: user company
id
required
string
tier
required

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.

string
Allowed values: free personal team enterprise
options
required

What a grant carries besides its tier. A free grant carries none.

object
saml
boolean
extra_storage_packs
integer
<= 1000
extra_full_months
integer
<= 120
validFrom
required
string format: date-time
validUntil
required
string format: date-time
nullable
source
required
string
Allowed values: manual payment
grantedBy
required

The application owner who granted it; null for a payment.

string
nullable
grantedByEmail
required

The address of grantedBy; deleted account once the purge has made that account nobody; null for a payment.

string
nullable
note
required
string
disabled
required
boolean
createdAt
required
string format: date-time
Example
{
"results": [
{
"subject": {
"kind": "company",
"id": "6f1c2b3a-0000-4000-8000-0000000000a5"
},
"label": "Acme",
"standing": {
"tier": "team",
"state": "active",
"options": {
"saml": true
},
"validUntil": "2099-12-31T23:59:59.000Z",
"graceEndsAt": null
},
"latest": {
"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",
"grantedByEmail": "[email protected]",
"note": "annual invoice 2026-114",
"disabled": false,
"createdAt": "2026-09-16T09:12:04.151Z"
}
}
]
}

No query, or one over 100 characters

Media type application/json
object
error
required
string
Example
{
"error": "query: must be 1 to 100 characters"
}

No / invalid session

The caller does not own the application

Media type application/json
object
error
required
string
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.

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

Seconds until the window rolls over