Skip to main content
Skip to main content

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

LimitValue
Requests per minute100 per API key
Burst allowanceUp to 20 requests in a 1-second burst
Concurrent connections10 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:

HeaderDescription
X-RateLimit-Limit
Maximum requests allowed per minute
X-RateLimit-Remaining
Requests remaining in the current window
X-RateLimit-Reset
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
response:

The response includes a

Retry-After
header:

Retry-After: 45

Always respect the

Retry-After
header. Continuing to send requests while rate-limited may result in longer cooldown periods.

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

ParameterTypeDefaultDescription
page
integer1Page number (1-based)
per_page
integer50Results per page (max 100)

Example: Paginated user list

Pagination response metadata

Paginated responses include metadata about the total result set:

Iterating through all pages

tip

Always use the maximum

per_page
value (100) when retrieving large data sets. This reduces the total number of API calls and helps you stay within rate limits.

Quotas

In addition to per-minute rate limits, certain operations have daily or monthly quotas:

OperationQuotaPeriod
User creationDepends on planMonthly
Voucher generationDepends on planMonthly
Report exportsDepends on planDaily
Webhook deliveriesDepends on planMonthly

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.

ApproachAPI Calls per DayLatency
Poll every minute1,440Up to 60 seconds
Poll every 5 minutes288Up to 5 minutes
Webhooks0 (only event-driven)Real-time (seconds)

3. Minimize payload size

Request only the data you need:

  • Use pagination with appropriate
    per_page
    values
  • 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 CodeShould Retry?Action
400NoFix the request payload
401NoFix authentication
403NoCheck permissions
404NoFix the resource ID or URL
429YesWait and retry with backoff
500YesRetry with backoff
502YesRetry with backoff
503YesRetry with backoff

See Error Codes for the complete error reference.

Requesting Higher Limits

If your integration requires higher rate limits:

  1. Review your current usage to confirm you are using the API efficiently
  2. Implement caching, webhooks, and batch operations to reduce request volume
  3. Contact IronWiFi support at support@ironwifi.com with:
    • Your current API usage patterns
    • The rate limit you need
    • Your use case justification

Was this page helpful?