Two kinds of limits exist: monthly volume (your plan) and burst rate (per IP, to keep one bad actor from saturating your account).
# Monthly volume
Per your plan's max_searches_monthly:
| Plan | Searches / month | AI Coach analyses | AI Query Understanding |
|---|---|---|---|
| Free | 5,000 | — | — |
| Starter | 50,000 | — | — |
| Growth | 250,000 | 30 | 1,000 |
| Business | 2,000,000 | 720 | 10,000 |
| Enterprise | custom | 10,000 | 100,000 |
When you exceed the search quota, requests return 429 with code
SK-SYS-429 unless your account has overage pricing turned on (Growth+),
in which case requests succeed and the overage shows up on next month's
invoice.
When AI quotas are exhausted, search keeps working — only AI enhancement is paused. Tenants on FREE/STARTER never see AI failures because AI is disabled at the plan level.
# Per-IP burst
The public sandbox key and Skryx Demo index are throttled to 60 requests per minute per IP to protect us from runaway clients on the landing page. Production tenant keys are not subject to this throttle.
If you hit the throttle, the response includes a Retry-After header
pointing to when you can resume:
HTTP/1.1 429 Too Many Requests
Retry-After: 28
# Concurrent connections
Each tenant can hold up to 100 concurrent connections to the search endpoint. This is usually irrelevant for HTTP/1.1 clients but matters if you're holding open connections from many serverless workers.
# Headers we set
Every response includes:
X-RateLimit-Limit-Month: 250000
X-RateLimit-Remaining-Month: 247312
X-RateLimit-Reset-Month: 2026-06-01T00:00:00Z
Use these to display "X searches left this month" in your dashboard, or to throttle from your own side before Skryx tells you to.