[ Concepts ]
Rate limits & plans
Rate limits stop runaway traffic; plan limits define account capacity.
Rate limits per key or connection
- Free: 30 requests/minute, 1,000/day
- Pro: 120 requests/minute, 20,000/day
Responses include rate-limit headers. A 429 rate_limited response includes retry_after seconds; wait, then reuse the same idempotency key for a write.
Plan limits
- Free: 50 expenses per workspace per billing cycle (anchored to the day the workspace was created, like a Stripe subscription cycle)
- Pro: unlimited expenses, API keys, and OAuth connections
A 402 plan_limit_exceeded response means the free cycle allowance is used up: the expense is not saved and not queued for review. From 40 of 50 onward, successful writes also carry a non-blocking `warning` field.
Treat 429 and 402 differently: 429 means slow down and retry; 402 means stop and tell the person their plan limit was reached.