Skip to main content

Rate Limiting

Requests are rate-limited using a sliding window algorithm. Limits are per API key, per second.

Response Headers

Every authenticated response includes rate limit headers:
HeaderDescription
X-RateLimit-LimitMaximum requests per second for your tier
X-RateLimit-RemainingRemaining requests in the current window
X-RateLimit-ResetUnix timestamp (milliseconds) when the window resets

When Rate Limited

{
  "error": "RATE_LIMIT_EXCEEDED",
  "message": "Rate limit 10 req/s exceeded. Retry after 1s.",
  "retryAfter": 1
}
Status code: 429 Strategy: Wait retryAfter seconds before retrying. Use exponential backoff for repeated 429s.

Quotas

Each tier has daily and monthly request quotas. Quotas reset at midnight UTC (daily) and the 1st of each month (monthly).

When Quota Exceeded

{
  "error": "DAILY_QUOTA_EXCEEDED",
  "message": "Daily quota of 1000 requests exceeded.",
  "limit": 1000,
  "used": 1001
}
Status code: 429

Tier Access Matrix

FeatureFreeProEnterprise
Rate limit5 req/s20 req/s100 req/s
Daily quota1,00010,000Unlimited
Monthly quota10,000300,000Unlimited
Result cap100500Unlimited
Core endpointsYesYesYes
Position endpointsYesYesYes
Portfolio endpointsYesYesYes
Risk endpointsNoYesYes
Analytics endpointsNoYesYes
Research endpointsNoYesYes
Ratings endpointsNoYesYes
Agent endpointsNoNoYes
Allowed chainsEthereum onlyAllAll
History window30 days90 daysUnlimited
These are default tier values configured at launch. Actual limits are stored in the database and may differ. Use the Quota Dashboard endpoint to check your current limits programmatically.

Tier-Aware Clamping

The API applies tier-specific constraints automatically:
  • Result cap: limit parameter is clamped to your tier’s maximum
  • Chain filter: chainIds parameter is filtered to your allowed chains
  • History window: startDate is clamped to your tier’s history window

Route-Specific Limits

Some endpoints have higher default limits:
EndpointMax limit
GET /markets1,000
GET /liquidations500,000
All other endpoints200
If no limit is provided, defaults to 50. Values above the max are silently clamped.