---
updatedAt: 2026-06-04T23:45:52.000Z
agentTools:
  projectIndex: https://developers.fieldwire.com/llms.txt
---

# Rate Limiting

To ensure our service remains available and reliable for all customers, we may place restrictions on how many API requests you can make in a specific amount of time.

Rate limiting is applied in two tiers:

1. **Catch-all limit** — applied to every request, regardless of endpoint
2. **Per-endpoint limit** — applied to specific endpoints, with per-minute and per-hour windows

***

## Tier 1: Catch-All Limit

Every request to the Fieldwire API is subject to a coarse limit of **3,000 requests per 5 minutes**. This limit exists to protect overall service availability and applies universally across all endpoints.

When this limit is exceeded, the API responds with an [HTTP 429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/429) status and the following headers:

| Header                  | Description                                | Type    |
| ----------------------- | ------------------------------------------ | ------- |
| `X-RateLimit-Limit`     | Maximum requests allowed in the window     | integer |
| `X-RateLimit-Remaining` | Requests remaining before the limit resets | integer |
| `X-RateLimit-Reset`     | Unix timestamp at which the window resets  | integer |

No response body is returned for this tier.

***

## Tier 2: Per-Endpoint Limits

On top of the catch-all, specific endpoints enforce their own per-minute and per-hour limits. We restrict the number of requests made to each endpoint per-minute and per-hour. You can find the list of affected endpoints in our [API reference](https://developers.fieldwire.com/reference/getting-started).

### Monitoring Rate Limits

For rate-limited endpoints, the API will include several headers with information on how many requests you have remaining:

| Header                       | Description                                                                                                   | Type              |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------- |
| `ratelimit-limit-minute`     | Per-minute request limit for this endpoint                                                                    | integer           |
| `ratelimit-remaining-minute` | Number of requests still allowed in the current minute                                                        | integer           |
| `ratelimit-limit-hour`       | Per-hour request limit for this endpoint                                                                      | integer           |
| `ratelimit-remaining-hour`   | Number of requests still allowed in the current hour                                                          | integer           |
| `ratelimit-reset`            | Unix timestamp at which the next request would become available. ***It is `0` if the limit is not exceeded*** | integer timestamp |
| `retry-after`                | Number of seconds to wait before retrying. ***Only present in headers when a 429 is returned***               | integer           |

> **Tip:** Avoid hard-coding rate limit values — thresholds may change at any time. Always refer to the response headers for accurate, up-to-date limits.

### Exceeding the Rate Limit

If you exceed either the per-minute or per-hour limit, the API will respond with an [HTTP 429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/429) status code and the following JSON body:

```json
{
  "errors": [
    {
      "type": "rate_limit_error",
      "code": "rate_limit_exceeded",
      "message": "Too many requests. Retry after 2026-01-01T00:00:00.000Z",
      "details": {
        "endpoint_hour_limit": 3000,
        "endpoint_minute_limit": 50,
        "request_retry_after": "2026-01-01T00:00:00.000Z",
        "throttled_by": "hour"
      }
    }
  ]
}
```

Wait until the time indicated in `details.request_retry_after`, or use the `ratelimit-reset` / `retry-after` headers before retrying.

***

## Legacy Rate Limiting

We are in the process of phasing out an older fixed-window rate limiting system. Some number of endpoints still use this system.

When the limit is exceeded, the API responds with an [HTTP 429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/429) status, the following header, and response body:

| Header              | Description                                  | Type      |
| ------------------- | -------------------------------------------- | --------- |
| `X-RateLimit-Reset` | Timestamp at which you may retry the request | timestamp |

```json
{
  "error": true,
  "request_retry_after": "2026-01-01 00:00:00 UTC"
}
```

Wait until the time indicated in `request_retry_after` before retrying.