13.4Rate limits
A rate limit is the most calls you can make in a given time. These limits apply to API calls:
| What | Limit | Answer when you pass it |
|---|---|---|
Run a check now (TriggerNow) | Once per monitor every 30 seconds | resource_exhausted (429), check just ran — try again in 12s |
| Public status page calls (no key) | 60 a minute per IP address, by default | resource_exhausted (429), rate limit exceeded |
DiscoverMonitors (no key) | 10 a minute per IP address, by default | 429, rate limit exceeded |
Confirmation emails for an email channel (ResendEmailVerification) | One per address every 10 minutes, 5 per address a day, 50 a day per team | resource_exhausted |
| Creating monitors | Several creates at the same time can be refused | unavailable (503). Send it again. |
Send a test alert (TestChannel) | 5 per channel each minute, 30 per team each hour | too many test sends to this channel: at most 5 per minute, try again shortly or too many test sends for this team: at most 30 per hour, try again later |
Prometheus scrape (GET /result/v1/metrics) | 30 a minute per team, bursts of 10 | 429, rate limit exceeded |
| Request body | 4 MiB | 413, request body too large |
List calls also have a largest page size. See 13.6.
When you get 429, wait and try again. For TriggerNow, wait the number of seconds in the message. Where a 429 has a Retry-After header, it gives the seconds to wait, such as Retry-After: 60. Not every 429 has one.