Skip to main content
The Shelfforce API enforces rate limits to ensure fair usage and platform stability. Limits are applied per API key over a rolling 60-second window.

Limits by plan

AnalysesPOST /api/v1/analyses and POST /api/v1/analyses/batch (each image in a batch counts as one analysis request). Reads — All GET endpoints (analyses, products, tasks, places, reports, usage). Writes — All POST and PATCH endpoints except analysis submission (tasks, places, inventory, webhooks).

Rate limit headers

Every API response includes headers showing your current rate limit status: Example response headers:

Handling rate limits

When you exceed the rate limit, the API returns a 429 Too Many Requests response with a Retry-After header indicating how many seconds to wait:

Best practices

Exponential backoff

When you receive a 429, wait for the duration specified in Retry-After, then retry. If the retry also fails, double the wait time on each subsequent attempt.

Use batch endpoints

Submit up to 20 images in a single batch request instead of making 20 individual calls. This consumes only 1 rate limit slot for writes.

Cache results

Analysis results are permanent. Cache responses locally to avoid redundant GET requests.

Use webhooks

Instead of polling for analysis status, register a webhook to receive notifications when analyses complete. This eliminates repeated GET requests.

Example: Exponential backoff

If you consistently hit rate limits, consider upgrading your plan. Contact hey@shelfforce.ai for custom rate limits on Enterprise plans.