Endpoint Rate Limits
Configure per-endpoint request-per-minute caps to control burst traffic.
Use this guide to configure per-endpoint rate limits for traffic control.
Purpose
This guide helps you:
- Understand the difference between monthly quota and per-endpoint rate limits.
- Configure a requests-per-minute cap on an individual endpoint.
- Interpret
429responses andRetry-Afterheaders when limits are exceeded.
How endpoint rate limits work
Per-endpoint rate limits cap the number of requests an endpoint can accept per minute, independent of your monthly quota.
This is useful for:
- Preventing downstream overload when an endpoint is misconfigured or abused.
- Enforcing burst limits on high-traffic endpoints.
- Staging environment isolation (deploy a low-limit endpoint to catch runaway loops).
When the limit is exceeded, PayloadRelay returns:
- HTTP
429 Too Many Requests Retry-After: <seconds>header indicating when the next token will be available- Outcome logged as
RATE_LIMITED_ENDPOINT
Rate-limited requests count as failures in activity logs and do not consume monthly quota.
Prerequisites and permissions
- Endpoint edit access.
Step-by-step workflow
1. Configure the rate limit
- Open the endpoint edit page.
- Navigate to the Details tab.
- Scroll to the Throughput section.
- Set
Max requests per minuteto an integer ≥ 1 within your tier cap, or leave blank to use your tier default. - Save.
Tier defaults and caps:
| Tier | Default when blank | Maximum override |
|---|---|---|
| Trial / Basic | 60 requests/minute | 60 requests/minute |
| Pro | 600 requests/minute | 600 requests/minute |
| Ultimate | 3,000 requests/minute | 3,000 requests/minute |
| Unlimited | Unlimited | 100,000 requests/minute |
Examples:
60— 60 requests per minute (1 per second average)300— 300 requests per minute (5 per second average)- Blank — inherit your tier default
2. Understand token bucket semantics
The rate limit uses a token bucket algorithm:
- Bucket capacity = configured rate (e.g., 60 tokens for a 60 req/min limit).
- Tokens replenish at
rate / 60per second (e.g., 1 token/sec for 60 req/min). - Each request consumes 1 token.
- When the bucket is empty, requests are rejected with
429.
This allows short bursts (up to the full bucket capacity) while enforcing the average rate over time.
3. Handle 429 responses in senders
Senders should:
- Respect the
Retry-Afterheader (seconds until the next token is available). - Exponentially back off if repeated
429responses occur. - Log rate-limit events for visibility.
Example (Node.js):
async function sendToEndpoint(url, payload) {
const response = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
});
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After');
console.log(`Rate limited. Retry after ${retryAfter} seconds.`);
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
return sendToEndpoint(url, payload); // retry
}
return response;
}4. Monitor rate-limited requests
In Request activity:
- Filter by outcome
RATE_LIMITED_ENDPOINT. - Check the frequency of rate-limited requests.
- If rate limits are hit frequently, consider:
- Increasing the limit.
- Batching requests at the sender.
- Adding sender-side buffering or rate limiting.
Difference from monthly quota
| Feature | Monthly quota | Per-endpoint rate limit |
|---|---|---|
| Scope | Account/org-wide | Per endpoint |
| Unit | Total requests per month | Requests per minute |
| Enforcement | Across all endpoints | Single endpoint |
| Response | 429 (quota exceeded) | 429 with Retry-After |
| Activity outcome | (no specific outcome) | RATE_LIMITED_ENDPOINT |
| Counts against quota | N/A (quota itself) | No |
Monthly quota limits your total monthly usage. Per-endpoint rate limits control burst throughput on individual endpoints.
Expected result and verification checks
- Requests within the configured rate are accepted (
ACCEPTEDoutcome). - Requests exceeding the rate are rejected with
429andRATE_LIMITED_ENDPOINToutcome. - The
Retry-Afterheader provides a hint for when to retry. - Rate-limited requests do not consume monthly quota.
Common issues and fixes
- Frequent 429s: Increase the rate limit within your tier cap or optimize sender batching/rate limiting.
- Unexpected default limit: Blank values inherit your tier default. Set an explicit value if you need a lower cap.
- Value rejected when saving: Use a positive integer no higher than your tier cap;
0is invalid. - Sender ignores
Retry-After: Implement exponential backoff or rate-limit handling in the sender.