Skip to Content
API ReferenceRate Limits

Rate Limits

The Loopwave API limits each key to a fixed number of requests per minute so a single integration can’t overwhelm your deployment.

The limit

LimitValue
Requests per key120 per minute
WindowFixed 60-second window
ScopePer API key (not per IP)

Each key has its own budget, so issuing separate keys for separate integrations keeps their limits independent.

Response headers

Every response includes how much budget is left, and a 429 tells you when to retry:

HeaderOnMeaning
X-RateLimit-RemainingEvery responseRequests left in the current window.
Retry-After429 onlySeconds to wait before retrying.

Handling 429

When you exceed the limit you receive:

429 Too Many Requests
{ "error": "rate_limited", "message": "Too many requests for this key." }

Respect the Retry-After header and back off before retrying.

Example: respect Retry-After
async function callWithRetry(url, opts) { const res = await fetch(url, opts); if (res.status === 429) { const wait = Number(res.headers.get('Retry-After') || 1) * 1000; await new Promise((r) => setTimeout(r, wait)); return callWithRetry(url, opts); } return res; }

For bulk outreach, don’t loop POST /messages at the limit — use a broadcast instead. Broadcasts are paced server-side with randomized delays and a daily cap, which both stays within limits and protects your number from bans.

Authentication & scopes

Review how keys and scopes work.