PUBLISHED PROVIDER LIMITS
Limits keep their provider-specific dimensions.
Linear tracks request count and GraphQL complexity independently. Some endpoints apply additional lower request limits.
Authentication: Personal API key, OAuth access token, Unauthenticated requests where supported
Primary scope: Authenticated User, OAuth App User, OAuth App, Or Source IP
Measured dimensions: Requests, Graphql Complexity, Endpoint Requests
Profile coverage: Linear request allowances by authentication type, GraphQL complexity pools, maximum query complexity, endpoint-specific headers, and 429 handling. Lower endpoint-specific quotas remain discoverable through response headers.
Request Rate
| Limit | Value | Period | Scope | Conditions and variability |
|---|---|---|---|---|
| API key requests | 2,500 requests | Per hour | Authenticated User | API keys owned by the same user share the allowance The current allowance table lists 2,500 requests per hour, while nearby prose still states 5,000. This profile uses the table value. |
| OAuth requests | 5,000 requests | Per hour | Authenticated User Or App User | Published provider limit. |
| Unauthenticated requests | 600 requests | Per hour | Source Ip | Published provider limit. |
Complexity Pool
| Limit | Value | Period | Scope | Conditions and variability |
|---|---|---|---|---|
| API key GraphQL complexity | 3,000,000 complexity points | Per hour | Authenticated User | Published provider limit. |
| OAuth GraphQL complexity | 2,000,000 complexity points | Per hour | Authenticated User Or App User | Published provider limit. |
| Unauthenticated GraphQL complexity | 100,000 complexity points | Per hour | Source Ip | Published provider limit. |
Request Complexity
| Limit | Value | Period | Scope | Conditions and variability |
|---|---|---|---|---|
| Maximum single-query complexity | 10,000 complexity points | At one time | Request | Published provider limit. |
Endpoint limits
| Limit | Value | Period | Scope | Conditions and variability |
|---|---|---|---|---|
| Endpoint-specific request limits | Provider-specific | Provider-defined | Endpoint And Identity | Some endpoints apply lower allowances identified through X-RateLimit-Endpoint-* response headers. |
RESPONSE METADATA
Headers expose the applicable limit state.
X-RateLimit-Requests-LimitFormat: Integer- Maximum requests in the current request-count window.
X-RateLimit-Requests-RemainingFormat: Integer- Requests remaining in the current request-count window.
X-RateLimit-Requests-ResetFormat: Unix Epoch Milliseconds- Time when the request-count allowance resets.
X-RateLimit-Endpoint-Requests-LimitFormat: Integer- Maximum requests for an additional endpoint-specific limit.
X-RateLimit-Endpoint-Requests-RemainingFormat: Integer- Requests remaining for the endpoint-specific limit.
X-RateLimit-Endpoint-Requests-ResetFormat: Unix Epoch Milliseconds- Time when the endpoint-specific allowance resets.
X-RateLimit-Endpoint-NameFormat: String- Name of the endpoint-specific limit that applies.
X-ComplexityFormat: Integer- Complexity points consumed by the GraphQL request.
X-RateLimit-Complexity-LimitFormat: Integer- Maximum GraphQL complexity points in the current window.
X-RateLimit-Complexity-RemainingFormat: Integer- GraphQL complexity points remaining in the current window.
X-RateLimit-Complexity-ResetFormat: Unix Epoch Milliseconds- Time when the complexity allowance resets.
WHEN A LIMIT IS EXCEEDED
Read the response before choosing a delay.
- Rate-limit responses can use HTTP 400.
- Primary exhaustion signal: GraphQL errors contain the RATELIMITED extension code.
- Errors[].extensions.code: RATELIMITED identifies a Linear rate-limit error in a GraphQL response.
RECOMMENDED HANDLING
Protect both the provider and your own queue.
- Track request count and complexity independently.
- Use the relevant reset header before retrying.
- Reduce requested fields and pagination size when complexity is the binding constraint.
- Honor lower endpoint-specific allowances when those headers are present.
VERIFICATION RECORD