Rate Limits
API rate limits and quotas per plan
Overview
The Formfex API enforces rate limits to ensure fair usage and platform stability. Limits are applied per API key using a sliding window algorithm.
There are three layers of protection:
- Per-minute burst limit — prevents short traffic spikes
- Per-hour limit — sustained request cap
- Monthly quota — total API calls allowed per billing period (30-day rolling window)
Rate Limits by Plan
| Plan | Per Minute | Per Hour | Monthly Quota |
|---|---|---|---|
| Free | — | — | — |
| Starter | 20 | 200 | 2,000 |
| Pro | 60 | 1,000 | 20,000 |
| Max | 150 | 3,000 | 200,000 |
Free Plan
Free plan does not include Public API access. Upgrade to Starter or higher to use the API.
Response Headers
Every successful API response includes rate limit headers so you can track your usage:
Hourly Rate Limit Headers
| Header | Description |
|---|---|
X-RateLimit-Limit | Your hourly request limit |
X-RateLimit-Remaining | Requests remaining in the current hour window |
X-RateLimit-Reset | Unix timestamp (seconds) when the hour window resets |
Example:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 847
X-RateLimit-Reset: 1710000000
Monthly Quota Headers
| Header | Description |
|---|---|
X-Monthly-Limit | Your monthly API call quota |
X-Monthly-Used | Calls used in the current 30-day period |
X-Monthly-Reset | Unix timestamp (seconds) when the monthly period resets |
Example:
X-Monthly-Limit: 20000
X-Monthly-Used: 147
X-Monthly-Reset: 1712000000
Handling 429 Responses
When you exceed any limit, the API returns a 429 Too Many Requests response with a Retry-After header indicating how many seconds to wait.
Hourly / Burst Limit Exceeded
Headers:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1710000000
Retry-After: 45
Monthly Quota Exceeded
Headers:
X-Monthly-Limit: 20000
X-Monthly-Used: 20000
X-Monthly-Reset: 1712000000
Retry-After: 2592000
AI Endpoint Limits
AI-powered endpoints have additional per-endpoint rate limits on top of the general API limits:
| Endpoint | Starter | Pro | Max |
|---|---|---|---|
| Generate Form | 10/hr | 30/hr | 100/hr |
| Smart Analytics | — | 5/hr | 20/hr |
| Analytics Chat | — | 30/hr | 100/hr |
AI endpoint responses include their own headers:
| Header | Description |
|---|---|
X-AI-RateLimit-Limit | Per-endpoint hourly limit |
X-AI-RateLimit-Remaining | Requests remaining for this endpoint |
X-AI-RateLimit-Reset | Unix timestamp when the endpoint limit resets |
Best Practices
Retry Strategy
Implement exponential backoff when you receive a 429. Read the Retry-After header for the exact wait time instead of using a fixed delay.
- Check headers proactively — monitor
X-RateLimit-Remainingand slow down before hitting the limit - Cache responses when possible to reduce unnecessary API calls
- Use webhooks for event-driven workflows instead of polling endpoints repeatedly
- Batch operations where available to reduce the number of requests
- Upgrade your plan if you consistently approach your limits