Rate limits
Competiflow applies per-minute rate limits per API key and monthly check quotas per account.
Request rate limits
Every successful auth updates rate-limit headers:
| Header | Description |
|---|---|
X-RateLimit-Limit |
Max requests per minute for your plan |
X-RateLimit-Remaining |
Requests left in current window |
X-RateLimit-Reset |
Unix timestamp when the window resets |
When exceeded, the API returns 429 with code rate_limited and a Retry-After header (seconds).
Limits by plan
| Plan | Requests / minute |
|---|---|
| Trial | 60 |
| Starter | 600 |
| Growth | 900 |
| Pro | 1,200 |
Check quotas
Most write operations that trigger checks use checks from your monthly pool. Reads on workspaces, competitors, monitors, and changes do not use checks.
When your balance is zero, mutating endpoints return 429 with code quota_exceeded.
| Plan | Checks / month |
|---|---|
| Trial | 100 |
| Starter | 2,000 |
| Growth | 5,000 |
| Pro | 10,000 |
See Billing for what counts as a check.
Quota-skipped endpoints
These reads do not require a positive check balance:
- All workspace endpoints
- Competitor list, show, discovery_status
- Monitor list and show
- Change list and show
These do use checks when they trigger work:
POST /workspaces/:id/competitors(discovery + baselines)POST /monitors/:id/check
Plan caps
| Plan | Workspaces | Monitors | Min cadence |
|---|---|---|---|
| Trial | 1 | 3 | daily |
| Starter | 3 | 25 | every 6 hours |
| Pro | 10 | 100 | hourly |