Rate limits

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

KeyWindow (s)MaxDescriptionUpdated
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.