- Per-minute rate limit — sliding window, counted per API key
- Monthly request cap — counted per org, resets on the 1st of each calendar month (UTC)
Plan matrix
Upgrade at any time from Dashboard → Billing.
When you hit the limit
Both caps return HTTP 429 with a machine-readable detail:Retry-After header with the number of
seconds until the oldest in-window request ages out. Respect it.
How enforcement works
- Rate limit is enforced per container (we run on Cloud Run). The effective global limit is your plan limit × number of concurrent containers. For stricter guarantees reach out — we can move to a Redis-backed limiter.
- Monthly cap is enforced per org and cached 60s. You may slightly overshoot during that cache window, but only by a handful of requests. We honor the cap strictly once the cache refreshes.
- Only 2xx responses count against your cap. Failed auth, rate-limit rejects, and validation errors don’t consume quota.
- Demo/anonymous requests don’t count (when key auth is disabled in dev — not applicable to production).
Monitoring your usage
- Portal dashboard — real-time “X of Y used this month” progress bar at Dashboard → Usage
- Programmatic — drop us a note if you need an API for usage reporting; not built yet, prioritized by demand.