Skip to main content

Rate Limits

Truedy API uses configurable rate limits to ensure fair usage and prevent abuse. Each API key has separate rate limits that can be customized.

Rate Limit Tiers

API keys support three rate limit tiers:
  • Per Minute: Default 60 requests/minute
  • Per Hour: Default 1,000 requests/hour
  • Per Day: Default 10,000 requests/day

Rate Limit Headers

When rate limiting is enabled for your API key, responses may include rate limit headers such as:
X-RateLimit-Limit-Minute: 60
X-RateLimit-Remaining-Minute: 45
X-RateLimit-Reset-Minute: 1640995200

X-RateLimit-Limit-Hour: 1000
X-RateLimit-Remaining-Hour: 850
X-RateLimit-Reset-Hour: 1640998800

X-RateLimit-Limit-Day: 10000
X-RateLimit-Remaining-Day: 9200
X-RateLimit-Reset-Day: 1641081600

Rate Limit Exceeded

When a rate limit is exceeded, you’ll receive a 429 Too Many Requests response:
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded",
    "details": {
      "limit": 60,
      "reset_at": "2024-01-01T00:01:00Z"
    }
  }
}

Best Practices

Monitor Headers

Always check rate limit headers to avoid hitting limits

Implement Backoff

Use exponential backoff when rate limited

Request Higher Limits

Contact support to increase limits if needed

Use Multiple Keys

Distribute load across multiple API keys

Handling Rate Limits

Exponential Backoff

import time
import requests

def make_request_with_retry(url, headers, max_retries=3):
    for attempt in range(max_retries):
        response = requests.get(url, headers=headers)
        
        if response.status_code == 429:
            # Rate limited - wait and retry
            retry_after = int(response.headers.get('Retry-After', 60))
            wait_time = (2 ** attempt) * retry_after
            time.sleep(wait_time)
            continue
        
        return response
    
    raise Exception("Max retries exceeded")

Check Remaining Quota

import requests

response = requests.get(url, headers=headers)

# Check remaining quota
remaining_minute = int(response.headers.get('X-RateLimit-Remaining-Minute', 0))
remaining_hour = int(response.headers.get('X-RateLimit-Remaining-Hour', 0))
remaining_day = int(response.headers.get('X-RateLimit-Remaining-Day', 0))

if remaining_minute < 10:
    print("Warning: Approaching rate limit")

Usage Tracking

All API requests are logged and tracked. You can view usage statistics:
  • Per API Key: See usage in the dashboard or via API
  • Per Endpoint: Track which endpoints are called most
  • Per Time Period: Hourly, daily, weekly analytics
  • Error Rates: Monitor success vs error rates

Increasing Limits

To increase your rate limits:
  1. Contact Support: Email support@truedy.ai
  2. Specify Requirements: Provide your use case and expected volume
  3. Upgrade Plan: Higher-tier plans include higher limits

Rate Limit Reset Times

  • Minute: Resets at the start of each minute
  • Hour: Resets at the start of each hour (e.g., 1:00 PM, 2:00 PM)
  • Day: Resets at midnight UTC
Reset times are included in the X-RateLimit-Reset-* headers as Unix timestamps.