Query shape limits
These are checked before the query runs. Going over one returns HTTP 400, except nesting depth.Execution limits
These apply while the query runs. Hitting one returns HTTP 422.
The 4 MiB response size is the limit people hit first. To stay under it, page with
LIMIT and OFFSET, aggregate instead of selecting raw rows, or narrow the time window. NaN and infinity come back as null.
Quota per workspace
By default, each workspace can run 1,000 queries and 1,800 seconds of total query time per rolling hour. Going over either returns HTTP 429 witherr:user:too_many_requests:query_quota_exceeded. Wait for the window to roll over, or contact support@unkey.com if you need more.
Retention
Queries only return rows inside your plan’s log retention. If your time filter starts earlier than that, the query fails with HTTP 400 anderr:user:bad_request:query_range_exceeds_retention, and the detail names the earliest date you can query. A filter written with toIntervalDay(N) instead of INTERVAL N DAY doesn’t fail. It just leaves the older rows out. See Working with time.
Plans agreed with sales have their own retention. Your actual value is the
Log retention row on Settings > Limits. See Limits.
Each table also has a maximum age, whatever your plan:
- Verifications: raw, per-minute, and per-hour 90 days; per-day 365 days; per-month 3 years.
- Rate limits: raw one month; per-minute 7 days; per-hour 30 days; per-day 100 days; per-month 3 years.
Other errors
All errors use the standard API error format, and each error’s
type field links to its page.