Skip to content

Your tenant, your tier, your ceiling, your keys.

GET
/me
curl --request GET \
--url https://testnet.permafrost.live/me \
--header 'Authorization: Bearer <token>'

Key lane only. This route authenticates the caller’s own pf_sk_ itself rather than trusting context resolved elsewhere, so a tenant that arrived through a signed token has no key to present here and is answered 401. Everything about such a tenant is visible on the operator surface on request instead.

Only active keys are listed, and each is shown by prefix and id — the key itself is never returned by any route except the one that minted it. The entry that made this request carries current: true.

rate_limit_rps is the tenant’s own requests-per-second ceiling: the number the per-tenant bucket is sized by. usage is operational — reads and bytes — and carries no price. credit is null when no prepaid credit is configured, and stays null rather than failing the route when the balance cannot be read.

The calling tenant’s own record.

Media typeapplication/json

The calling tenant’s own record, scoped to that one tenant.

object
tenant_address
required

The Sui address that is this tenant.

string
display_name
string | null
tier
required
string
rate_limit_rps
required

This tenant’s own requests-per-second ceiling — what its bucket is sized by.

integer
keys
required

The tenant’s active keys.

Array<object>

One active key, by prefix and id. The key itself is not here.

object
key_id
required
string format: uuid
key_prefix
required

The first characters of the key — enough to recognise it, not enough to use it.

string
permissions
required
Array<string>
status
required
string
created_at
string | null format: date-time
last_used_at
string | null format: date-time
current
required

True for the key that authenticated this request.

boolean
usage
required

Operational usage, accumulated from the edge’s own access record. No price, no bill.

object
total_reads
integer
total_bytes
integer format: int64
first_seen
string | null format: date-time
last_settled
string | null format: date-time
credit

Prepaid credit standing, read on chain. null when no credit is configured, and also null rather than an error when the balance cannot be read.

object
balance
string
pool_id
string
Example
{
"tenant_address": "0x2c4f6a8b0d1e3f5a7b9c0d2e4f6a8b1c3d5e7f9a0b2c4d6e8f0a1b3c5d7e9f10",
"display_name": "Northwind Media",
"tier": "free",
"rate_limit_rps": 10,
"keys": [
{
"key_id": "5e2b9a71-4c08-4d3f-91b6-7a0d2f8c1e34",
"key_prefix": "pf_sk_5e2b9",
"permissions": [
"read",
"write"
],
"status": "active",
"created_at": "2026-09-01T09:14:03Z",
"last_used_at": "2026-09-13T11:47:52Z",
"current": true
}
],
"usage": {
"total_reads": 1842,
"total_bytes": 734003200,
"first_seen": "2026-09-01T09:20:11Z",
"last_settled": null
},
"credit": {
"balance": "0",
"pool_id": "0x423ccb5f81e003e15ef6768c7d44360933f52f00490515479547413e1404779d"
}
}

No usable pf_sk_ on the request. Absent, malformed, unknown, revoked, or belonging to a tenant that is no longer active — one answer for all of them. A caller on the token lane lands here too: this route authenticates by key, and a token holder has no key to present.

Media typeapplication/json

The refusal shape. detail is present on a few routes and deliberately absent from the custody surface, where a detail string could carry an internal path.

object
error
required

The code, or a short fixed sentence.

string
detail

A human-readable note, where a route carries one.

string
Example
{
"error": "invalid or inactive API key"
}

Permafrost runs on Sui testnet and Walrus testnet. Everything here describes a shipped testnet instance, not a production service.