Skip to main content
DocIntell enforces per-tenant rate limits to ensure fair usage and system stability.

Current Limits

OperationLimitWindow
Document Ingestion100 documents1 hour
Job Status Checks1,000 requests1 hour

Response Headers

Every response includes rate limit information:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1701612000
HeaderDescription
X-RateLimit-LimitMaximum requests allowed
X-RateLimit-RemainingRequests remaining in window
X-RateLimit-ResetUnix timestamp when limit resets

Rate Limit Errors

When you exceed the limit, you’ll receive a 429 Too Many Requests response:
{
  "error": "rate_limit_exceeded",
  "message": "Rate limit: 100 documents/hour. Retry after 3600 seconds",
  "retry_after": 3600
}
The response includes a Retry-After header indicating when to retry.

Handling Rate Limits

Implement Exponential Backoff

from tenacity import retry, stop_after_attempt, wait_exponential

@retry(
    stop=stop_after_attempt(5),
    wait=wait_exponential(multiplier=1, min=2, max=60)
)
def upload_with_retry(file_path):
    response = requests.post(
        "https://api.docintell.com/v1/documents",
        headers={"Authorization": f"Bearer {API_KEY}"},
        files={"file": open(file_path, "rb")}
    )

    if response.status_code == 429:
        retry_after = int(response.headers.get("Retry-After", 60))
        raise RateLimitError(retry_after)

    return response.json()

Monitor Usage

Check remaining quota before batch operations:
def check_rate_limit(response):
    remaining = int(response.headers.get("X-RateLimit-Remaining", 0))
    if remaining < 10:
        print(f"Warning: Only {remaining} requests remaining")

Best Practices

Batch Wisely

Group multiple operations when possible

Cache Results

Cache extraction results to avoid duplicate requests

Use Webhooks

Webhooks don’t count against rate limits

Monitor Usage

Track rate limit headers to avoid hitting limits

Increasing Limits

Need higher limits? Contact us at support@docintell.com to discuss enterprise plans with higher quotas.