Rate limiting
Edifix rate-limits requests, not the number of references inside a job. A single create_job call carrying a thousand references counts as one request.
There are two independent rate limits:
| Limit | Endpoints | Refill rate | Request limit |
|---|---|---|---|
| Create-job limit | POST /create_job, POST /create_job_from_file | One request every three seconds (~20/min sustained) | 1200 requests |
| General limit | All other endpoints | One request every 0.3 seconds (~200/min sustained) | 12000 requests |
Capacity returns continuously at each limit's refill rate, so you don't have to wait idle after hitting a limit—you can resume immediately at the reduced rate. RateLimit-Reset reports when the full request limit is available again, about one hour from empty for either limit.
Scope
Single-session accounts are rate-limited per user.
Multi-session accounts are rate-limited per session where each session_tag has its own rate limit. See Authentication for multi-session details.
Response headers
Every response reflects the rate-limit that applied to the request (including 429), and carries the following headers:
| Header | Meaning |
|---|---|
RateLimit-Limit | The request limit for this endpoint: 1200 for create-job calls, 12000 for everything else. |
RateLimit-Remaining | Requests remaining before you exceed the limit. |
RateLimit-Reset | Seconds until the full request limit resets. |
TIP
Instead of waiting for a 429 response, monitor RateLimit-Remaining, and reduce your request rate before reaching the limit.
Exceeding the limit
When you exceed the limit, the API returns:
- HTTP status
429 Too Many Requests - Error code
0028in the JSON body (see Error codes) - The same three rate-limit headers, where
RateLimit-Limitreflects the limit you exceeded (1200for create-job calls,12000for all others),RateLimit-Remaining: 0, andRateLimit-Resetshows how long until the limit resets.
Example:
{
"errors": [
{
"error_code": "0028",
"error_message": "Unable to process references because your account has hit the rate limit threshold for this endpoint. See the response headers for rate limit reset details."
}
]
}Recommendations
- Polling guidance: Wait approximately two seconds per submitted reference before your first check, then check no more than once every three seconds.
- Honour
RateLimit-Reset: Do not retry beforeRateLimit-Resetindicates capacity has returned. - Stagger large batches: Avoid submitting thousands of jobs in quick succession — once exhausted, requests are throttled back to the refill rate for up to an hour before the full create-job limit returns.
- Adapt to limit changes:
RateLimit-Limitalways reports the current request limit, so your integration adapts automatically if the published limits change.