Skip to main content
The DHMAD API uses rate limiting to ensure fair usage and system stability.

Default Limits

  • Default: 100 requests per minute per IP address
  • Custom limits: You can set a custom rate limit when creating or updating an API key in the dashboard
  • Window: Sliding window (per minute)

Rate Limit Headers

All API responses include rate limit headers:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 2024-01-15T12:00:00Z

Handling Rate Limits

When you exceed the rate limit, you’ll receive: Status Code: 429 Too Many Requests Response:
{
  "error": "Too Many Requests",
  "message": "Rate limit exceeded. Please try again later."
}

Best Practices

Monitor Headers

Track remaining requests using response headers

Implement Backoff

Use exponential backoff when rate limited

Cache Responses

Cache responses to reduce API calls

Batch Requests

Combine multiple operations when possible

Exponential Backoff Example

async function makeRequestWithRetry(url, options, retries = 3) {
  for (let i = 0; i < retries; i++) {
    try {
      const response = await fetch(url, options);
      
      if (response.status === 429) {
        const resetHeader = response.headers.get('X-RateLimit-Reset');
        const resetTime = resetHeader ? new Date(resetHeader).getTime() : Date.now() + 60000;
        const waitTime = Math.min(resetTime - Date.now(), 60000 * Math.pow(2, i));
        
        if (waitTime > 0) {
          await new Promise(resolve => setTimeout(resolve, waitTime));
        }
        continue;
      }
      
      return response;
    } catch (error) {
      if (i === retries - 1) throw error;
      await new Promise(resolve => setTimeout(resolve, 1000 * Math.pow(2, i)));
    }
  }
}

Requesting Higher Limits

For higher rate limits, contact support@dhmad.tn with:
  • Your use case
  • Expected request volume
  • API key ID

The default rate limit applies per IP address. Custom per-key rate limits can be configured when creating or updating an API key in the dashboard.