Skip to main content
A few Revinel endpoints are rate limited to keep abuse from skewing stats, overloading checkout, or hammering the management API. Limits are fixed windows.

How tracking limits behave

Impression and click tracking fail quietly. When you go over the limit, the event is dropped and the endpoint returns { "success": false } with a normal 200 status, so it never throws in your renderer. If the client IP cannot be determined, the limit is skipped (it fails open) rather than blocking a legitimate event. Checkout and the management API are the exceptions: exceeding their limits returns a real 429 TOO_MANY_REQUESTS error.

Rate-limit headers

A 429 from a management endpoint (per-key limit) includes a Retry-After header with the number of seconds to wait before retrying. Revinel does not emit X-RateLimit-Limit, X-RateLimit-Remaining, or X-RateLimit-Reset today, so treat the limits above as the contract and honor Retry-After when you get one.
You will not normally hit the tracking limits from real user traffic. The @revinel/sdk and @revinel/react clients fire impressions and clicks fire-and-forget with keepalive, one per view or click. The limits exist to absorb misfiring loops and bots, not ordinary page views.