REST Endpoints
Rate Limit
Inspect client IP rate limit status, daily quota balance, and reset timers.
GET
/
rate-limit
curl -X GET "https://api.hexagraph.in/rate-limit"
fetch("https://api.hexagraph.in/rate-limit")
.then(response => response.json())
.then(data => console.log(data));
import requests
response = requests.get("https://api.hexagraph.in/rate-limit")
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
resp, err := http.Get("https://api.hexagraph.in/rate-limit")
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
{
"ip": "203.0.113.195",
"minute_rate_limit": {
"limit": 30,
"remaining": 28,
"reset_seconds": 42
},
"daily_quota": {
"list_filter": {
"limit": 500,
"remaining": 455,
"reset_seconds": 43200
},
"search": {
"limit": 50,
"remaining": 46,
"reset_seconds": 43200
}
}
}
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "IP rate limit exceeded (max 30 requests per minute). Please try again in 42 seconds (at 11:40:32 UTC).",
"reset_in_seconds": 42,
"reset_at_utc": "2026-08-05T11:40:32.000Z"
}
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Your daily quota for List/Filter requests has been exceeded. Please try again in 3 hours, 14 minutes, and 22 seconds (at 00:00:00 UTC).",
"reset_in_seconds": 11662,
"reset_at_utc": "2026-08-06T00:00:00.000Z"
}
The
/rate-limit endpoint returns the calling client’s current IP rate limit status, short-burst minute allowance, and daily query quota balances.
Rate Limiting Architecture
Hexagraph Core protects service capacity using a dual-tiered rate limiter:- Short-Burst Minute Limit: 30 requests / min per IP address across all REST & GraphQL routes.
- Daily List/Filter Quota: 500 requests / day per IP address for list and filter endpoints across all entities.
- Daily Search Quota: 50 requests / day per IP address for
/autocompleteroutes. - System Daily Pool Cap: 10,000 List / 1,000 Search total system capacity.
Response Headers
Every API response from Hexagraph includes real-time rate limit headers for client monitoring:X-RateLimit-IP-Limit: 30
X-RateLimit-IP-Remaining: 28
X-RateLimit-IP-Reset-Seconds: 42
X-RateLimit-Daily-Limit: 500
X-RateLimit-Daily-Remaining: 455
Response Fields
string
required
Client IP address detected by the gateway.
object
required
object
required
24-hour rolling daily quotas.
Show daily_quota attributes
Show daily_quota attributes
object
curl -X GET "https://api.hexagraph.in/rate-limit"
fetch("https://api.hexagraph.in/rate-limit")
.then(response => response.json())
.then(data => console.log(data));
import requests
response = requests.get("https://api.hexagraph.in/rate-limit")
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
resp, err := http.Get("https://api.hexagraph.in/rate-limit")
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
{
"ip": "203.0.113.195",
"minute_rate_limit": {
"limit": 30,
"remaining": 28,
"reset_seconds": 42
},
"daily_quota": {
"list_filter": {
"limit": 500,
"remaining": 455,
"reset_seconds": 43200
},
"search": {
"limit": 50,
"remaining": 46,
"reset_seconds": 43200
}
}
}
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "IP rate limit exceeded (max 30 requests per minute). Please try again in 42 seconds (at 11:40:32 UTC).",
"reset_in_seconds": 42,
"reset_at_utc": "2026-08-05T11:40:32.000Z"
}
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Your daily quota for List/Filter requests has been exceeded. Please try again in 3 hours, 14 minutes, and 22 seconds (at 00:00:00 UTC).",
"reset_in_seconds": 11662,
"reset_at_utc": "2026-08-06T00:00:00.000Z"
}
⌘I
curl -X GET "https://api.hexagraph.in/rate-limit"
fetch("https://api.hexagraph.in/rate-limit")
.then(response => response.json())
.then(data => console.log(data));
import requests
response = requests.get("https://api.hexagraph.in/rate-limit")
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
resp, err := http.Get("https://api.hexagraph.in/rate-limit")
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
{
"ip": "203.0.113.195",
"minute_rate_limit": {
"limit": 30,
"remaining": 28,
"reset_seconds": 42
},
"daily_quota": {
"list_filter": {
"limit": 500,
"remaining": 455,
"reset_seconds": 43200
},
"search": {
"limit": 50,
"remaining": 46,
"reset_seconds": 43200
}
}
}
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "IP rate limit exceeded (max 30 requests per minute). Please try again in 42 seconds (at 11:40:32 UTC).",
"reset_in_seconds": 42,
"reset_at_utc": "2026-08-05T11:40:32.000Z"
}
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Your daily quota for List/Filter requests has been exceeded. Please try again in 3 hours, 14 minutes, and 22 seconds (at 00:00:00 UTC).",
"reset_in_seconds": 11662,
"reset_at_utc": "2026-08-06T00:00:00.000Z"
}