> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orica.markets/llms.txt
> Use this file to discover all available pages before exploring further.

# Rate Limits

> API usage limits and quotas.

Rate limits protect the API from abuse and ensure fair access for all users.

***

## REST API Limits

| Limit Type | Value |
| - | - |
| Requests per minute per IP | 100 |
| Requests per second per IP | 10 |

When you exceed the rate limit, you receive:

```http theme={"dark"}
HTTP/1.1 429 Too Many Requests
Retry-After: 60
```

***

## WebSocket Limits

| Limit Type | Value |
| - | - |
| Connections per IP | 10 |
| Messages per second per connection | 5 |
| Idle timeout | 5 minutes |
| Connection timeout | 1 hour |

***

## Rate Limit Headers

Responses include rate limit information:

| Header | Description |
| - | - |
| `X-RateLimit-Limit` | Maximum requests allowed |
| `X-RateLimit-Remaining` | Requests remaining in window |
| `X-RateLimit-Reset` | Unix timestamp when limit resets |

***

## Handling Rate Limits

> [tab] Retry Strategy
>
> Implement exponential backoff when rate limited:
>
> ```typescript theme={"dark"}
> async function fetchWithRetry(url: string, maxRetries = 3) {
>   for (let i = 0; i < maxRetries; i++) {
>     const response = await fetch(url);
>
>     if (response.status === 429) {
>       const retryAfter = response.headers.get('Retry-After') || '60';
>       await new Promise(r => setTimeout(r, parseInt(retryAfter) * 1000));
>       continue;
>     }
>
>     return response;
>   }
>   throw new Error('Rate limit exceeded after retries');
> }
> ```

> [tab] Request Batching
>
> Reduce requests by batching operations:
>
> * Fetch all markets once, filter client-side
> * Use WebSocket for real-time updates instead of polling
> * Cache responses for static data

***

## Best Practices

> [card] Use WebSockets
>
> Subscribe to real-time streams instead of polling REST endpoints.

> [card] Cache Responses
>
> Cache market metadata and static data that rarely changes.

> [card] Respect Limits
>
> Implement proper backoff and don't hammer the API.

> [card] Batch Requests
>
> Fetch lists instead of individual items when possible.

***

## Higher Limits

If you need higher rate limits for your application, contact the Orica team to discuss enterprise access.

***

## Next Steps

> [card] [Markets API](https://docs.orica.markets/api-reference/rest/markets.md)
>
> Query market data.

> [card] [WebSocket](https://docs.orica.markets/api-reference/websocket/market-data.md)
>
> Real-time data streams.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.