Skip to Content
FR8 Factory Docs

Rate limits

Per-key limits, the response headers, and how to behave on 429.

Every key carries its own request limit — 10 requests per minute by default, counted per clock minute. The limit is per-key configuration on our side: if your integration legitimately needs more headroom, ask your account contact; it's a setting change, not a code change.

For a typical sync (pages of 100 loads, polling twice a day), the default limit is far more than you'll ever touch.

Response headers

Every authenticated response includes:

HeaderMeaning
X-RateLimit-LimitYour key's per-minute cap.
X-RateLimit-RemainingRequests left in the current window.
X-RateLimit-ResetUnix epoch seconds when the window resets.

When you exceed the limit

The API returns 429 with a Retry-After header (seconds):

HTTP/1.1 429 Too Many Requests
Retry-After: 22
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 0

{"error": "Rate limit exceeded"}

Wait Retry-After seconds and resume. Two details worth knowing:

  • Refused requests don't consume quota. A burst of 429s doesn't dig you deeper into the hole; the window drains on schedule.
  • The window is a clock minute, and resets on the boundary rather than draining gradually. X-RateLimit-Reset is the exact instant your full allowance returns, and Retry-After is the number of seconds until then — either is safe to wait on.
  • A consequence worth designing around: because each minute starts fresh, a burst spanning a boundary can send up to twice your cap in a very short span (10 at 12:00:59, 10 more at 12:01:00) without being refused. Pace against X-RateLimit-Remaining rather than assuming a smooth rate.

If you page through large result sets, a simple if remaining == 0: sleep until reset check between page fetches is all the client-side throttling you need.

On this page

Help

How do I get API access?

API keys are issued per customer by the FR8 Factory team. Ask your account contact — or send us a request through the Help desk tab with your company name and use case.

How do I authenticate requests?

Send your API key in the Authorization header on every request. Keys are secret — never ship them in browser code or mobile apps.

Open the guide — How do I authenticate requests?

How do I keep my copy of the data in sync?

Use delta polling: request only records changed since your last sync cursor instead of re-downloading everything. The guide covers cursors, ordering, and replay safety.

Open the guide — How do I keep my copy of the data in sync?

What are the rate limits?

Limits are per API key and documented on the rate-limits page, along with the response headers that tell you where you stand and how to back off.

Open the guide — What are the rate limits?

What does each load field mean?

The load field dictionary defines every field the API returns — types, nullability, and freight-domain meaning (pick vs drop dates, AR, equipment types).

Open the guide — What does each load field mean?

Found a bug or missing data?

Send it through the Help desk tab with the request you made and what you expected back. You'll get a reference code, and we'll email you when it's resolved.