API rate limits
API requests per hour for each Privatus Analytics plan, shared by a workspace's tokens, what a 429 response means and how to stay under the limit.
API limits are per workspace, per hour, and depend on the workspace's plan. Every token of the workspace shares the one allowance:
| Plan | Requests / hour |
|---|---|
| Free | 1,000 |
| Pro | 5,000 |
| Business | 20,000 |
| Enterprise | 100,000 |
- Every request that sends a Bearer token counts, including each request to the MCP server. One MCP tool call is one request.
- The hour is a fixed window, not a rolling one.
- A token that is invalid, revoked or expired is limited to 100 requests an hour.
- The mobile app does not use this allowance. Each login of the app has its own 3,000 requests an hour per workspace, the same on every plan.
- API calls never count toward your event usage.
- When you exceed a limit you get
429with the error coderate_limitedand aRetry-Afterheader: the seconds until the window resets.
Staying under the limits#
- Stats responses are cached on our side and keyed by the site's latest data, so asking for the same thing twice is cheap for us but still counts as a request. Cache on your side too.
- Use one
overviewrequest instead of many small ones when you need everything on the Overview. - Ask for up to 1,000 breakdown rows per request instead of many small pages.
- For bulk data, use exports or the warehouse sync (Business and Enterprise) instead of paging through the API.
Email sending limits#
Operations that send email have their own limits, whether you call them
from the app, the API or MCP. Over a limit you get 429 with the code
rate_limited and a Retry-After header (seconds), and nothing is sent.
| What | Limit |
|---|---|
| Team invitations | 20 per member an hour, 50 per workspace a day |
| Report recipient invites | 30 new invites per member an hour, 100 per workspace a day, 3 a week to one address from all workspaces |
| Report and channel tests | 10 per member an hour, 30 per workspace an hour |
| Site transfers | 20 per workspace a day |
| Invitations, tests and transfers to one address | 10 a day per workspace |
Alert and uptime emails are grouped instead of refused: repeated alerts for one rule become one email to each address every 30 minutes, and a flapping uptime check emails at most 6 status changes an hour.
Other limits#
A few operations make us call another server or do heavy work for you,
so they have their own limits. Over a limit you get 429 with the code
rate_limited and a Retry-After header.
| What | Limit |
|---|---|
| Webhook tests and resends | 60 per workspace an hour |
| Verify installation | 10 per host and 30 per workspace every 5 minutes. All workspaces together can check one host 300 times every 5 minutes |
| Manual warehouse syncs | 30 per workspace an hour |
Imports and exports are limited by how many run at once: 5 imports and 5
exports per workspace, queued or running. One more responds with 422
validation_failed until one finishes.