Skip to main content
Query decisions with analytics.getRatelimits from five tables. They record calls to ratelimit.limit and ratelimit.multiLimit. Limits on keys and identities show up as RATE_LIMITED outcomes in the key_verifications tables instead.

ratelimits_v1

One row per rate limit check.
String
The meta.requestId of the request that performed the check.
Int64
When the check happened, in milliseconds since the Unix epoch.
Int64
When the row was recorded, in milliseconds since the Unix epoch. Filter on time instead.
String
Your workspace. Always the same value.
String
The namespace the check ran in, as an rlns_ ID.
String
The identifier you passed: a user ID, an IP, a tenant, whatever you chose to limit on.
Bool
true if the request was allowed, false if it was rejected.
Float64
How long Unkey took to process the check, in milliseconds.
String
The override that applied, or empty when the request used the default limit.
UInt64
The limit in force for this check.
UInt64
Requests left in the window after this check.
Int64
When the window resets, in milliseconds since the Unix epoch.
UInt64
The cost charged, 1 by default. Zero when the request sent cost: 0, or for older rows recorded before this column existed.

Rollup tables

ratelimits_per_minute_v1, ratelimits_per_hour_v1, ratelimits_per_day_v1, and ratelimits_per_month_v1 have the same columns: one row per time bucket, namespace, and identifier.
DateTime | Date
Start of the bucket. DateTime on per-minute and per-hour, Date on per-day and per-month.
String
Your workspace.
String
The namespace rlns_ ID.
String
The rate limited identifier.
SimpleAggregateFunction(sum, Int64)
Checks that were allowed in the bucket. Read with sum(passed).
SimpleAggregateFunction(sum, Int64)
All checks in the bucket. sum(total) - sum(passed) is the number rejected.
SimpleAggregateFunction(sum, Int64)
Sum of tokens over all checks.
SimpleAggregateFunction(sum, Int64)
Sum of tokens over allowed checks.
AggregateFunction(avg, Float64)
Can’t be read, because avgMerge isn’t allowed. Use avg(latency) on the raw table.
AggregateFunction(quantilesTDigest(0.75), Float64)
Aggregate state, with the same limitation.
AggregateFunction(quantilesTDigest(0.99), Float64)
Aggregate state, with the same limitation.
The rate limit tables keep less history than the verification tables: raw 1 month, per-minute 7 days, per-hour 30 days, per-day 100 days, per-month 3 years. For a month-long chart, use the per-day table. Your plan’s retention also applies. See Analytics restrictions and quotas.
Last modified on September 29, 2026