Skip to content
Splashify Pro
Docs

Rate Limits

Each plan ships with its own request budget. When you exceed it, the API returns 429 Too Many Requests with the message Rate limit exceeded for this resource.

Limits by plan

Public APIs are not available on the Starter plan. Upgrade to Growth or higher to call any endpoint in this section.

We can set a custom limit for your account. The Request limit card in Settings > Developer always shows the limit that applies to you.

Retry strategy

When you receive a 429, retry with exponential backoff:

text
async function callWithRetry(req, attempt = 0) {
  const resp = await fetch(url, req);
  if (resp.status !== 429) return resp;
  if (attempt >= 5) throw new Error('rate-limit retries exhausted');
  const delay = Math.min(1000 * 2 ** attempt, 30000);  // 1s, 2s, 4s, 8s, 16s, max 30s
  await new Promise(r => setTimeout(r, delay));
  return callWithRetry(req, attempt + 1);
}

Tips:

  • Spread bursts — instead of firing 300 requests in the first second of every minute, even out the load.
  • Use broadcasts for one-to-many sends. A 50,000-recipient campaign through /app/broadcasts uses one API call; the same campaign as 50,000 individual /public/message calls will exceed your budget.
  • Persist the message id so retries idempotently reference the same logical message.

What counts toward the limit

Every authenticated request to /api/v1/public/* (and the CAPI endpoint /api/v1/app/meta-ads/capi/send-event) counts. The rate limit is per workspace, not per API key — regenerating a key does not reset the counter.

Extra limits on SMS sends

Two SMS endpoints also have their own limit per account, counted apart from your plan's limit:

Over one, you get 429 with a Retry-After header. See Send SMS and Send bulk SMS.

Beyond the limit

If you genuinely need more than 600 req/min sustained, talk to your account manager about Enterprise. The ceiling there is Meta's WABA messaging cap — typically the messaging tier (TIER_1K → TIER_UNLIMITED) on your phone number.