Rate Limits
pepe.business applies rate limits to protect the infrastructure and ensure fair service.
Limits by category
| Category | Limit | Window |
|---|---|---|
| Read (GET) | 1,000 req | /min |
| Write (POST/PATCH) | 100 req | /min |
| Media upload | 30 req | /min |
| OAuth connect | 10 req | /min |
| Webhooks send | 50 req | /min |
Response headers
X-Pepe-RateLimit-Limit: 1000
X-Pepe-RateLimit-Remaining: 945
X-Pepe-RateLimit-Reset: 1720864800
On limit exceeded
Response 429 Too Many Requests:
{
"error": "rate_limit_exceeded",
"message": "Rate limit of 1000/min exceeded. Retry in 12s.",
"retryAfter": 12
}
The Retry-After header indicates the wait time in seconds.
Retry strategy
Implement exponential backoff with jitter:
async function withRetry<T>(fn: () => Promise<T>, maxRetries = 5): Promise<T> {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (err: any) {
if (err.status !== 429) throw err;
const delay = Math.pow(2, i) * 1000 + Math.random() * 500;
await new Promise(r => setTimeout(r, delay));
}
}
throw new Error("Max retries exceeded");
}
Increase limits
For Enterprise accounts, limits can be increased on request. Contact enterprise@pepe.business.
Underlying platform limits
Each social platform also has its own limits (Twitter: 300 posts/3h, Instagram: 25 posts/24h). pepe.business handles this in a queue and publishes as soon as possible, but you can be notified of a delay via the post.delayed webhook.