Who this API key is, what it may do, and how much it has used.
GET/account
Retrieve the calling key's account
Returns which organization the key belongs to, the plan, and what the key itself is allowed to do. No scope is required - a key must always be able to describe itself, otherwise debugging a 403 just produces another 403.
Response 200
FieldTypeDescription
object
string
organizationId
string
organizationName
string
nullable
plan
string
apiKey
object
id
string
A short, non-reversible identifier for the key. Never the key itself.
name
string
nullable
mode
enumlive | test
scopes
array of string
The scopes this key holds. ["*"] means unrestricted.
scopesAreUnrestricted
boolean
expiresAt
string <date-time>
nullable
readOnly
boolean
True for test keys, which may read but never write.
Errors
400Malformed or missing parameters
401Bad, missing, or revoked key
402The prepaid balance has nothing left for API requests past the included pool, or the trial requests are used up
403Lacks scope, plan without API access, live key on a trial, test key writing, or feature switched off
429Rate limited
500Unexpected server error
GET/usage
Retrieve current usage and limits
Returns consumption against every limit that can reject a request - the per-minute rate limit for this key, the organization's per-minute and per-day ceilings, the heavy-request sub-limit, the organization's daily write quota, the plan's request pool for this billing period (used, included, remaining, the overage price and when it resets), the key count against the plan cap, and any countable plan cap. On a free trial it also reports the lifetime request count against the trial's total. No scope is required. Use this to turn a 429 or a 402 into something self-diagnosable.
Response 200
FieldTypeDescription
object
string
organizationId
string
plan
string
rateLimit
object
The rate-limit windows. `minute` is per API key; `day` is per organization (across every key); `org` is the organization's per-minute ceiling; `heavy` is this key's sub-limit for heavy requests (large lists, POST /ai/ask, PNG reports). All counts are weighted requests.
minute
object
day
object
org
object
The per-minute ceiling for the whole organization.
heavy
object
This key's per-minute sub-limit for heavy requests.
requests
object
The organization's request pool for the current billing period. Past `included`, extra requests cost `overagePricePer10k` USD per 10,000 (in 1,000-request steps) from the prepaid balance - a separate meter from Genaya AI credits.
used
integer
Weighted requests used this billing period.
included
integer
Weighted requests the plan includes per billing period. null means unlimited.nullable
remaining
integer
Requests left in the pool before overage applies. null when unlimited.nullable
weightedThisCycle
integer
The same figure as `used`, spelled out as a weighted count.
overagePricePer10k
number
USD charged per 10,000 weighted requests past the pool.
resetsAt
string <date-time>
When the pool resets (the end of the current billing period).nullable
keys
object
How many API keys the organization holds against its plan cap.
used
integer
limit
integer
The plan's key cap. null means unlimited.nullable
trial
object
Present only on a free trial - the lifetime request count against the trial's total allowance. Trial keys are test keys (read-only).nullable
lifetimeUsed
integer
lifetimeLimit
integer
writeQuota
object
Per organization, across every key it holds. Reads never count. The limit is the plan's daily write quota (0 on a free trial - test keys cannot write).
used
integer
limit
integer
remaining
integer
resetsAt
string <date-time>
planLimits
object
Per organization, from the subscription plan. A limit of null with unlimited true means the plan does not cap that resource.
Errors
400Malformed or missing parameters
401Bad, missing, or revoked key
402The prepaid balance has nothing left for API requests past the included pool, or the trial requests are used up
403Lacks scope, plan without API access, live key on a trial, test key writing, or feature switched off