API Rate Limiting
The IronWiFi REST API enforces rate limits to ensure fair usage and platform stability. This guide explains the limits, how to handle rate-limited responses, pagination for large data sets, and best practices for efficient API usage.
Rate Limits
Default limits
| Limit | Value |
|---|---|
| Requests per minute | 100 per API key |
| Burst allowance | Up to 20 requests in a 1-second burst |
| Concurrent connections | 10 per API key |
Rate limits are applied per API key, not per IP address. If you have multiple API keys, each has its own independent limit.
Rate limit headers
Every API response includes headers that show your current rate limit status:
| Header | Description |
|---|---|
| Maximum requests allowed per minute |
| Requests remaining in the current window |
| Unix timestamp when the limit resets |
When you hit the limit
If you exceed the rate limit, the API returns a
429 Too Many Requests
The response includes a
Retry-After
Retry-After: 45
Always respect the Retry-After
Pagination
Large collections (users, sessions, vouchers) are paginated. Use pagination parameters to retrieve data in manageable chunks instead of requesting everything at once.
Pagination parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| integer | 1 | Page number (1-based) |
| integer | 50 | Results per page (max 100) |
Example: Paginated user list
Pagination response metadata
Paginated responses include metadata about the total result set:
Iterating through all pages
Always use the maximum
per_page
Quotas
In addition to per-minute rate limits, certain operations have daily or monthly quotas:
| Operation | Quota | Period |
|---|---|---|
| User creation | Depends on plan | Monthly |
| Voucher generation | Depends on plan | Monthly |
| Report exports | Depends on plan | Daily |
| Webhook deliveries | Depends on plan | Monthly |
Quota information is available in the IronWiFi Console under Account > Usage.
Handling Rate Limits
Exponential backoff
Implement exponential backoff to handle rate-limited responses gracefully:
Pre-check remaining quota
Before starting a batch operation, check your remaining rate limit:
Batch operations
When you need to create or update many resources, pace your requests to stay within limits:
Best Practices
1. Cache responses locally
Do not fetch the same data repeatedly. Cache API responses and refresh only when needed:
2. Use webhooks instead of polling
Instead of polling the API for changes, use webhooks to receive real-time notifications. This eliminates unnecessary API calls entirely.
| Approach | API Calls per Day | Latency |
|---|---|---|
| Poll every minute | 1,440 | Up to 60 seconds |
| Poll every 5 minutes | 288 | Up to 5 minutes |
| Webhooks | 0 (only event-driven) | Real-time (seconds) |
3. Minimize payload size
Request only the data you need:
- Use pagination with appropriate values
per_page - Apply filters (date range, username, status) to narrow results
- Avoid fetching full collections when you only need a single resource
4. Use bulk operations
When available, prefer bulk endpoints over individual resource calls:
5. Implement circuit breakers
If the API returns repeated errors, back off instead of hammering it:
6. Handle errors gracefully
Do not retry on 4xx errors (except 429). They indicate a problem with your request, not a transient issue:
| Status Code | Should Retry? | Action |
|---|---|---|
| 400 | No | Fix the request payload |
| 401 | No | Fix authentication |
| 403 | No | Check permissions |
| 404 | No | Fix the resource ID or URL |
| 429 | Yes | Wait and retry with backoff |
| 500 | Yes | Retry with backoff |
| 502 | Yes | Retry with backoff |
| 503 | Yes | Retry with backoff |
See Error Codes for the complete error reference.
Requesting Higher Limits
If your integration requires higher rate limits:
- Review your current usage to confirm you are using the API efficiently
- Implement caching, webhooks, and batch operations to reduce request volume
- Contact IronWiFi support at support@ironwifi.com with:
- Your current API usage patterns
- The rate limit you need
- Your use case justification
Related Topics
- REST API -- API overview and base URLs
- API Authentication -- API key management
- API Endpoints -- Complete endpoint reference
- Error Codes -- API error reference
- Webhooks -- Real-time event notifications (alternative to polling)
Was this page helpful?