Skip to main content
Rate limits protect provider capacity, prevent accidental duplicate processing, and keep catalog imports predictable.

Current limits

20 images maximum per batch
25 images processed per hour per API key
1 active batch maximum per API key
2 active batches maximum per account
POST /api/v1/product-image-enhancements: 5 requests per hour per API key
GET /api/v1/product-image-enhancements/{enhancementId}: 120 requests per hour per API key
General API IP limit: 100 requests per hour
API key management also has dashboard-side limits:
5 active API keys per account
5 key creations per hour
20 key creations per day
10 key mutations per hour

429 responses

Rate limit responses use HTTP 429.
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded.",
    "request_id": "req_..."
  }
}
Responses may include:
Retry-After
X-RateLimit-Limit
X-RateLimit-Remaining
X-RateLimit-Reset
Wait for Retry-After before retrying.

Concurrency guidance

The API currently allows one active batch per API key and two active batches per account. If a platform needs to process a large catalog, split it into batches and enqueue the next batch only after the current one reaches a terminal status. Terminal enhancement statuses are:
completed
partially_completed
failed
cancelled

Polling guidance

For low-volume integrations, poll every 5 to 15 seconds while an enhancement is queued or processing. For higher-volume workflows, use webhooks and keep polling as a fallback source of truth. Do not poll every item individually. Poll the enhancement status endpoint and read all item statuses from the response.