| name | instantly-rate-limits |
| description | Implement Instantly.ai rate limiting, backoff, and request throttling patterns.
Use when handling 429 errors, implementing retry logic,
or building high-throughput Instantly integrations.
Trigger with phrases like "instantly rate limit", "instantly 429",
"instantly throttle", "instantly backoff", "instantly retry".
|
| allowed-tools | Read, Write, Edit, Bash(npm:*), Grep |
| version | 1.12.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","instantly","rate-limits","reliability"] |
| compatibility | Designed for Claude Code, also compatible with Codex and OpenClaw |
Instantly Rate Limits
Overview
Handle Instantly API v2 rate limits. The API returns 429 Too Many Requests when limits are exceeded. Most endpoints follow standard limits. The email listing endpoint has a stricter constraint of 20 requests per minute. Failed webhook deliveries are retried up to 3 times within 30 seconds.
Prerequisites
- Completed
instantly-install-auth setup
- Understanding of exponential backoff patterns
Known Rate Limits
| Endpoint | Limit | Notes |
|---|
| Most API endpoints | Standard REST limits | Varies by plan |
GET /emails | 20 req/min | Stricter — email listing |
| Webhook deliveries | 3 retries in 30s | Instantly retries to your endpoint |
| Background jobs | N/A | Async — poll via GET /background-jobs/{id} |
Instructions
Step 1: Exponential Backoff with Jitter
import { InstantlyApiError } from "./src/instantly/client";
interface RetryOptions {
maxRetries: number;
baseDelayMs: number;
maxDelayMs: number;
}
const DEFAULT_RETRY: RetryOptions = {
maxRetries: 5,
baseDelayMs: 1000,
maxDelayMs: 30000,
};
async function withBackoff<T>(
operation: () => Promise<T>,
: <> = {}
): <T> {
{ maxRetries, baseDelayMs, maxDelayMs } = { ..., ...opts };
( attempt = ; attempt <= maxRetries; attempt++) {
{
();
} (err) {
isRetryable =
err &&
(err. === || err. >= );
(!isRetryable || attempt === maxRetries) err;
delay = baseDelayMs * .(, attempt);
delay = .(delay, maxDelayMs);
jitter = delay * ( + .() * );
totalDelay = delay + jitter;
.(
);
( (r, totalDelay));
}
}
();
}