Rate limits

The HLD API enforces rate limits per API key to ensure reliability for all customers. Limits are applied on a rolling 60-second window.

Default limits

NameTypeRequiredDescription
Standard endpoints300 req/minNoApplies to most GET and PATCH endpoints.
Write endpoints60 req/minNoPOST and DELETE endpoints.
Response actions10 req/minNoSentinel response action triggers.
Report generation5 req/minNoCompliance report generation.
Webhook registration30 req/minNoCreating and updating webhook endpoints.

Rate limit headers

Every API response includes rate limit headers so you can track your current consumption.

http
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 247
X-RateLimit-Reset: 1748750460
Retry-After: 12

Handling 429s

When you exceed the limit, the API returns 429 Too Many Requests. Implement exponential backoff — do not immediately retry.

typescript
async function apiRequest(url: string, attempt = 0): Promise<Response> {
  const res = await fetch(url, {
    headers: { Authorization: `Bearer ${process.env.HLD_API_KEY}` },
  })

  if (res.status === 429 && attempt < 5) {
    const retryAfter = parseInt(res.headers.get('Retry-After') ?? '2', 10)
    await new Promise(r => setTimeout(r, retryAfter * 1000 * Math.pow(2, attempt)))
    return apiRequest(url, attempt + 1)
  }

  return res
}
Tip:If you're building a high-volume integration (SOC automation, bulk device queries), contact HLD to discuss elevated rate limits on your account.