Skip to content

Rate limits

Reference
For:
Developers

This page lists the HostRepute API rate limits, how requests are counted against them, the headers that report them, and how to back off when you reach one.

  • REST API: 120 requests per minute per team. All of a team’s API tokens share one budget, so two scripts with different tokens slow each other down. Every request that gets past authentication counts, including those answered with 403, 404 or 422. Requests refused with 401, and requests to a path that doesn’t exist, don’t count.
  • Test alerts: 5 per minute per team. POST /api/v1/alerts/{uuid}/test counts against this limit and the team’s 120. The portal’s test button uses the same 5, so tests from the portal and the API add up.
  • Private agents: 60 requests per minute per agent token, and 60 per IP address. Both apply to every request to /api/v1/certificate-agent, and they’re separate from the team’s 120. Requests are counted before the token is checked, so requests with a wrong token use up the IP address’s limit. Read check internal certificates with a private agent.
  • MCP server: 60 requests per minute per person. The limit belongs to your HostRepute account and covers every AI client you connect, for every team. Read connect AI clients with MCP.

Each limit counts requests in a one-minute window that starts with the first request. When the window ends, the count starts again from zero.

Every counted response carries the state of the limit:

Header Sent on Value
X-RateLimit-Limit Every counted response The number of requests the window allows.
X-RateLimit-Remaining Every counted response How many requests are left in this window.
Retry-After 429 only The number of seconds until the window ends and you can send again.
X-RateLimit-Reset 429 only The same moment as a Unix timestamp, in seconds.

When two limits apply to a request, as with test alerts, the headers describe the one with fewer requests left. A test alert therefore shows X-RateLimit-Limit: 5.

Response headers (200)
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 118

The request isn’t carried out and the API answers 429:

Response headers (429)
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
Retry-After: 59
X-RateLimit-Reset: 1793047746
Response (429)
{
"message": "Too Many Attempts."
}

Because nothing was carried out, you can send the same request again after Retry-After seconds, even one that starts a check. A 429 uses no credits.

  • Wait for Retry-After. Sending again sooner gets another 429 and doesn’t shorten the wait.
  • Pace your loops. Poll a running check every few seconds, not in a tight loop, or give a callback_url and let HostRepute call you: read run checks and wait for results.
  • Read lists in big pages. per_page=100 reads 100 items in one request: read pagination.
  • Spread the work across the minute. A job that changes many items is better off sending a request every second than a burst of 120.
  • Watch X-RateLimit-Remaining and slow down before it reaches 0, especially when several scripts share the team.

These examples retry a read after a 429, waiting as long as Retry-After says:

curl’s --retry waits for Retry-After on a 429 (curl manual, checked October 2026). It also retries after a timeout or a 5xx, so use it for reads, not for a POST that starts a check. --fail keeps the body of the refused attempt out of the output; if the request still fails, curl prints the status code and exits with an error.

Terminal
curl --fail --retry 5 "https://app.hostrepute.com/api/v1/hosts?per_page=100" \
-H "Authorization: Bearer $HOSTREPUTE_TOKEN" \
-H "Accept: application/json"

Every rate limit in HostRepute, including the portal’s and the sign-in limits:

SettingDefaultHow to change
API requests120 requests per minute per teamFixed
Test alerts (portal and API)5 per minute per teamFixed
MCP server requests60 requests per minute per userFixed
Certificate agent requests, per IP address60 requests per minute per IP addressFixed
Certificate agent requests, per agent token60 requests per minute per agent tokenFixed
AI assistant requests (chat, summaries and playbooks)20 requests per minute per teamFixed
Manual scans10 per minute per userFixed
Adding, editing or removing Domains & IPs and check profiles60 changes per minute per userFixed
Running a certificate, domain expiry or uptime check on demand6 per minute per userFixed
Sending a test scheduled report6 per minute per userFixed
Syncing an integration on demand (Microsoft SNDS, Gmail Postmaster Tools, ESP)6 per minute per userFixed
Member invitations10 invitations per minute per member, in each teamFixed
Failed sign-in attempts5 failed attempts per email address and IP address in a 60-second windowFixed
Two-factor codes at sign-in6 attempts per minute per account and per IP address, and 10 per 30 minutes per accountFixed
Starting single sign-on10 per minute per email address, and 60 per minute per IP addressFixed
Password reset emailsOne every 60 seconds per accountFixed
Shared report links, reputation badges and public status pages120 requests per minute per IP addressFixed
Reputation check on the HostRepute website (/check)3 scans per IP address per dayFixed