REST API: the conventions that make one predictable
REST is a set of constraints, not a specification, which is why every API claiming to be RESTful is different. The conventions worth following are the ones that let a developer guess correctly.
A rate limit exists to keep one caller from degrading the service for everyone. The design question is not the number — it is what happens at the boundary, and whether a client can tell.
Rate limiting caps how many requests a client may make in a period. Its purpose is protective rather than commercial: one badly written integration in a retry loop can consume the capacity of a shared service, and the limit is what stops that becoming everybody's outage.
The interesting design decisions are not about the number. They are about what the client is told, how the boundary behaves, and whether a well-behaved integration can stay under the limit without guessing.
The most common client-side failure is retrying immediately after a 429, which turns a temporary limit into a self-inflicted outage. Exponential backoff with jitter is the correct response, and jitter matters more than people expect — without it, every client that was throttled at the same moment retries at the same moment, and the recovery attempt becomes the next spike.
Ettex API applies limits per credential and returns the standard signals described above; the retry behaviour expected of a client is covered in api integration, and the same backoff discipline applies to webhook delivery.
The honest boundary: current limits belong in the reference, not in an article, because they change with capacity. Nothing here is a commitment about specific numbers.
429, with a Retry-After header. Using 403 conflates authorisation with throttling, and returning 200 with an error inside breaks generic clients.
Token bucket or sliding window for most APIs. Fixed window is simplest and allows a double burst across the window boundary, which is the problem it was meant to solve.
Per credential wherever possible. Shared IP addresses punish innocent clients, and IP limits are easy to evade for anyone deliberately abusing the service.
Respect Retry-After, then exponential backoff with jitter. Immediate retries turn a temporary limit into an outage, and unjittered retries synchronise every throttled client into the next spike.
REST is a set of constraints, not a specification, which is why every API claiming to be RESTful is different. The conventions worth following are the ones that let a developer guess correctly.
Nobody reads API documentation from the top. They search for the endpoint, copy the example, and leave — which tells you exactly what to spend your effort on.
A webhook is a callback: instead of polling an API every minute for changes, you give it a URL and it calls you. Simple to describe, and the failure modes are where all the interesting work is.