FleetWorkAPI Docs

Rate Limits & Headers

Rate limiting, quotas, and response headers for the Fleetwork API.

Limits by Plan

LimitFreePremiumInternal
Requests/second210100
Requests/minute605005,000
Requests/hour1,00020,000Unlimited
Requests/day10,000200,000Unlimited
Requests/month100,0005,000,000Unlimited
Monthly quota100,0005,000,000Unlimited
Max API keys1520
Burst allowance550200

Rate Limit Headers

Every response from API-Key-authenticated requests includes:

HeaderDescription
X-RateLimit-LimitMax requests/minute for the key (0 = unlimited)
X-RateLimit-RemainingRemaining requests in current window
X-RateLimit-ResetISO 8601 timestamp when the window resets
Retry-After(HTTP 429 only) Seconds to wait before retrying

Quota Headers

HeaderDescription
X-Quota-LimitMonthly quota limit
X-Quota-RemainingRemaining quota this month
X-Quota-UsedQuota consumed this month

Informational Headers

HeaderDescription
X-API-Key-IdUUID of the authenticated API key
X-Module-IdUUID of the accessed module
X-Module-NameName of the accessed module

Example Responses

Normal response

HTTP/1.1 200 OK
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 497
X-Quota-Limit: 5000000
X-Quota-Remaining: 4999823
X-Quota-Used: 177
X-API-Key-Id: 3513c8c9-6ea7-47c3-ba37-188b842fa590
X-Module-Name: Job Management
Content-Type: application/json

Throttled response

HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 0
Retry-After: 45
Content-Type: application/json

Handling Rate Limits

async function apiCallWithRetry(url, options, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const retryAfter = parseInt(response.headers.get('Retry-After') || '1');
      await new Promise(r => setTimeout(r, retryAfter * 1000));
      continue;
    }

    return response;
  }
  throw new Error('Max retries exceeded');
}

On this page