Token bucket (bursts allowed, average enforced) fits most APIs; sliding windows where precision matters — implemented at the gateway with shared state, not per-instance memory.
Limit/remaining/reset headers, 429 with Retry-After, and documented tiers — clients that can see the limits build respectful integrations; surprises build support tickets.
Per-client and per-tenant limits so one integration's enthusiasm can't degrade everyone — with premium tiers as a product decision, cleanly enforceable.
Internal jobs, migrations, and webhook fan-outs get concurrency caps and off-peak schedules — self-inflicted load spikes are the embarrassing outage class.
Skipping the discipline this article describes until an incident, audit, or stalled project forces it — every practice above is cheaper adopted early than retrofitted under pressure.
Let's discuss how we can help you with rate limiting throttling.