Rate limits

Per-key request limits in three buckets, the headers that report them, and Meta's separate hourly quota.

Request limits

Every endpoint is rate-limited per API key in a rolling 60-second window. There are three buckets, each counted separately:

BucketApplies toLimit
ReadsEvery GET120 / minute
WritesEvery other operation30 / minute
ExpensivePOST /api/v1/sync, POST /api/v1/history/pull, POST /api/v1/launch-defaults/pull, POST /api/v1/launches, PATCH /api/v1/launches/{launchId}/copy10 / minute

The expensive bucket is for operations that upload every creative to Meta, rebuild every ad's creative, or spend the account's hourly Meta quota, which launches also need.

Headers

Every response carries:

HeaderMeaning
RateLimit-LimitThe bucket's limit.
RateLimit-RemainingRequests left in the window.
RateLimit-ResetSeconds until the window refills.
RateLimit-PolicyThe policy as limit;w=seconds, for example 120;w=60.

Exceeding a limit returns 429 with code rate_limited, a Retry-After header in seconds, and a retry_after_ms field in the body:

{
  "error": {
    "code": "rate_limited",
    "message": "Too many writes requests — retry in 12s.",
    "retry_after_ms": 11840,
    "request_id": "req_8fK2mQ"
  }
}

The limiter is per running instance, so the effective ceiling across a scaled-out deployment is higher than the advertised number and is not enforced globally. Treat the limits as a backstop against runaway loops, not as a quota to pace against.

Meta's quota is separate

Meta limits the calls Win & Scale may make for an ad account each hour, and syncs, history pulls, backfills and launches share that allowance. GET /api/v1/api-usage shows the calls made, the errors, the throttles, the percentage of each allowance used, and the minutes until access returns if throttled.

When the quota is used up:

  • a history pull is scheduled instead and answers with status: queued and retryInMin;
  • a backfill waits and resumes by itself.

MCP

The MCP endpoint has its own per-user limits: 60 reads and 10 writes per minute, in memory per instance. See Connecting.

On this page