automation // REST APILAB
429 + Retry-After Exponential Backoff
Back off when SFMC rate-limits a route instead of hammering it with immediate retries.
api429retry-afterbackoff
Trust & provenanceLAB
Evidence tierLABOfficial sources1Other sources0Last verified2026-10-05
Evidence tier describes my hands-on relationship with the content. Official sources describe platform contracts/documentation. Production observations should not automatically be treated as official limits.
External integrations calling REST endpoints at meaningful volume.
async function callWithBackoff(request, maxRetries = 5) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const res = await request();
if (res.status !== 429) return res;
const retryAfter = Number(res.headers.get('retry-after'));
const delayMs = Number.isFinite(retryAfter)
? retryAfter * 1000
: Math.min(30_000, 1000 * (2 ** attempt));
await new Promise(r => setTimeout(r, delayMs));
}
throw new Error('Rate limit retry budget exhausted');
}Salesforce recommends honoring HTTP 429 and Retry-After while applying exponential backoff.
Add jitter in distributed systems so many workers do not retry on the same boundary.
Prefer batch routes when available.