Per-user rate caps for every Edge Function and gated RPC. Changes take effect within ~60s on every Edge worker (the helper caches config reads for that window).
Live caps
| Key | Window (s) | Max | Description | Updated | |
|---|---|---|---|---|---|
| parse-expense | Single-line AI parse. 30/min lets a fast typist clear; bots get cut off. | 5/6/2026, 7:25:54 AM | |||
| parse-expenses-batch | Multi-line escalation. Lower than parse-expense because each call is more expensive. | 5/6/2026, 7:25:54 AM | |||
| scan-receipt | Bill scan via Vision. Pro feature. | 5/6/2026, 7:25:54 AM | |||
| search-users | Friend search by email. RPC-side enforcement. | 5/6/2026, 7:25:54 AM | |||
| send-friend-request | Friend invite send. RPC-side enforcement. | 5/6/2026, 7:25:54 AM | |||
| send-invite-email | Anti-spam on invite blasts. Pair with daily cap. | 5/6/2026, 7:25:54 AM | |||
| send-invite-email-day | Daily complement to send-invite-email per-minute cap. | 5/6/2026, 7:25:54 AM | |||
| transcribe-audio | Voice input. Pro feature. | 5/6/2026, 7:25:54 AM | |||
| validate-receipt | StoreKit transaction reflushes; usually one per launch. | 5/6/2026, 7:25:54 AM |
Caps that are too tight surface as 429 responses (rate_limitedenvelope) and trigger the iOS "slow down" alert. Caps that are too loose burn the OpenAI budget. The previous values are visible in git history on _shared/ratelimit.ts.