429 Too Many Requests response — back off and respect the Retry-After header.
429 response shape
When rate-limited, the API returns the standard error envelope withcode: "RATE_LIMITED" and includes IETF-standard rate limit headers (draft-7):
General limits
These are baseline limits. Per-account quotas are tier-based and may differ
from the per-IP defaults shown above. If you hit
RATE_LIMITED consistently
during normal operation, contact
support@scope3.com for a higher-tier quota.Recommended polling cadences
Several v2 endpoints expose long-running async work (discovery, ADCP comply checks, media-buy execution). Don’t tight-loop these — pick a cadence that matches the typical latency of the underlying operation.Polling pattern
Themedia-buy-status endpoint returns one entry per media buy under data.media_buys[] (each with internal_status and adcp_status). Poll until every media buy reaches a terminal state.
Backoff strategy
When you receive a 429 (or a transientINTERNAL_ERROR / SERVICE_UNAVAILABLE):
- Honor
Retry-After. It’s the source of truth for when to retry. - Add jitter. If many clients retry at the same moment you’ll thunder onto a recovering server. Add ±25% random jitter to the wait.
- Cap retries. After 3–5 attempts, surface the error to the user rather than retrying silently.
- Be careful retrying mutations. Retrying
POST /campaignsafter a 5xx may create duplicates — for creates, prefer to surface the error to the user rather than auto-retry.