Rate Limits

Rate limits protect the API from abuse and ensure fair usage for all customers. Limits vary by pricing tier.

Limits by Tier

TierMonthly LimitRate LimitPrice
Free50 calls10 / minute$0
Starter1,000 calls60 / minute$29/mo
Pro10,000 calls200 / minute$99/mo
UnlimitedNo limit1,000 / minuteCustom

Rate Limit Headers

Every API response includes headers to help you track your usage:

HeaderDescription
X-RateLimit-LimitMax requests per minute for your tier
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the window resets
X-Monthly-LimitMonthly call limit for your tier
X-Monthly-RemainingCalls remaining this billing period

Example Response Headers

HTTP/1.1 200 OK
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 198
X-RateLimit-Reset: 1699564800
X-Monthly-Limit: 10000
X-Monthly-Remaining: 9542
Content-Type: application/json

Cache Hits

Responses are cached for 24 hours based on the image hash. When you request the same image:

  • Cache hits don't count against your monthly quota
  • Cache hits don't count against your rate limit
  • The response includes "cached": true
  • Response times are significantly faster (~10ms vs ~100ms)

Pro tip: Process your product catalog once, then query the same images freely without hitting limits.

Rate Limit Exceeded

When you exceed the rate limit, the API returns a 429 Too Many Requests error:

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Please wait before making another request.",
    "retry_after": 42
  }
}

The retry_after field indicates how many seconds to wait before retrying. You can also check the Retry-After header.

Monthly Quota Exceeded

When you exceed your monthly quota, the API returns a 403 Forbidden error:

{
  "error": {
    "code": "quota_exceeded",
    "message": "Monthly quota exceeded. Upgrade your plan or wait for the next billing period.",
    "current_usage": 10000,
    "limit": 10000,
    "resets_at": "2024-12-01T00:00:00Z"
  }
}

Best Practices

  • Implement exponential backoff when you receive 429 errors
  • Monitor the rate limit headers to predict when you'll hit limits
  • Batch your requests during off-peak hours for large catalogs
  • Cache results on your end to avoid redundant API calls
  • Use webhooks (coming soon) for async processing instead of polling

Catalog Limits by Tier

The Catalog API has separate limits for products and searches:

TierMax ProductsSearches/MonthBatch Size
Free1,00050010
Starter10,0005,00050
Pro100,00050,000100
UnlimitedNo limitNo limit100

Need Higher Limits?

If you need higher limits than our Pro tier offers, contact us for a custom Enterprise plan. We can accommodate:

  • Custom monthly quotas
  • Higher rate limits
  • Dedicated infrastructure
  • SLA guarantees
  • Priority support

Email support@dupifyapp.com to discuss your requirements.