Skip to main content
Hexagraph Core enforces a dual-tiered rate limiter to protect capacity, prevent scraping, and ensure fair resource allocation for all users across REST and GraphQL interfaces.

Rate Limit Tiers & Quotas

Rate limits are tracked per IP address across short-burst minute windows and 24-hour daily quotas:

Response Headers

Every API response from Hexagraph Core includes real-time rate limit headers:
  • X-RateLimit-IP-Limit: Short-burst 1-minute limit.
  • X-RateLimit-IP-Remaining: Remaining requests in current 1-minute window.
  • X-RateLimit-IP-Reset-Seconds: Seconds until the 1-minute window resets.
  • X-RateLimit-Daily-Limit: Total daily list/filter query quota.
  • X-RateLimit-Daily-Remaining: Remaining daily list/filter queries.

Checking Rate Limit Status (GET /rate-limit)

Send a GET request to /rate-limit at any time to inspect your current IP status and daily balances:
cURL
Example Response:

Rate Limit Exceeded Responses (HTTP 429)

When a rate limit is exceeded, Hexagraph returns an HTTP 429 Too Many Requests response containing human-readable time strings and exact UTC reset timestamps:

Minute Burst Limit Exceeded

Daily Quota Exceeded


Best Practices

  • Inspect Response Headers: Check X-RateLimit-IP-Remaining and X-RateLimit-Daily-Remaining on API calls.
  • Use GraphQL for Multi-Entity Operations: Retrieve outputs, authors, and sources in a single GraphQL query (/graphql) to preserve quota.
  • Implement Exponential Backoff: On receiving HTTP 429, wait for the duration specified in reset_in_seconds or X-RateLimit-IP-Reset-Seconds.