IOSOR Learn
API rate limits from pilot to production: backoff without burning prepaid
Pilot and production rate limits, exponential backoff, idempotency, sandbox versus production keys, and a bounded webhook replay window — so retries do not empty the prepaid wallet.
A 429 is not an invitation to hammer the send API until something sticks. On prepaid, a retry storm is a wallet event: duplicate OTP, stacked alerts, unmatched ledger rows. Rate limits exist so product, engineering, and finance share one ceiling. Pilot to production is not “remove the cap” — contracted limits, backoff with idempotency, separate sandbox and production keys, and a webhook replay window that does not double-debit. Pair with idempotency, retries, and money.
IOSOR is white-label prepaid: authenticated calls, correlatable debits, client-safe errors that never dump foreign brand payloads. Catalog live vs in setup is independent of how hard you retry — a corridor in setup does not become Live because the client looped. Near USD 1,000+ monthly usage, retry budgets and key cutover enter commercial review. Keep sandbox vs production cutover and webhook signature and replay window in the same runbook.
Rate limits protect prepaid, they are not a bug
Limits bound how many accepted intents hit the wallet per window — not how many TCP attempts the load balancer made. Document the window (per key, account, destination class), the status code, and Retry-After. A client that treats 429 as “try harder” races finance. Export rate-limit rejects next to successful debits. Catalog live still stops at the published ceiling; in setup is not an unlimited sandbox.
| Signal | Engineering | Wallet |
|---|---|---|
| 429 / Retry-After | Back off, honour the window | Zero extra debit for the same intent |
| 5xx / timeout | Retry inside a budget with the same idempotency key | One debit if the first attempt landed |
| 4xx business reject | Do not retry blindly | No debit, or a named reject row |
Backoff without a second debit: pair limits with idempotency
Exponential backoff without an idempotency key is how a flaky network becomes two OTPs. The key is unique per business intent, not per TCP attempt, and returns the same accepted result inside a clear TTL. User resend is a different product action with its own limit. Stop-on-low-balance still applies: a retry must not punch through an empty wallet.
Pilot limits versus production limits
Pilot keys should be tighter: low volume, fast visibility, cheap mistakes. Production limits are contracted for corridors you actually run. Raising a ceiling is an account change with an owner.
Keys and webhook replay belong in the same cutover
Rate limits on send do not save you if the webhook consumer double-processes DLR.
Red flags
- “Retry until 200” with no idempotency key
- 429 treated as a soft 200
- Production key in a load test or sandbox webhook URL in production
- Replay window measured in weeks, or unsigned callbacks “for the pilot”
- User resend mixed into auto-retry budget
- Client-facing errors dumping raw upstream codes
Start with IOSOR
Write down the limit window — per key, account, or destination class — and the Retry-After you will honour. Force a 429, back off, then retry the same intent with the same Idempotency-Key. The ledger must show one debit. Swap the sandbox key for the production key before you raise any ceiling.
IOSOR takeaway
Do: treat 429 as a pause with Retry-After, not as a soft success. Pair every backoff with the original key so prepaid sees one accepted intent.
Don't: raise production limits on a load-test key, or hammer until 200 without a key until the wallet looks like extra usage.
Was this guide helpful?
Related guides
- Simulating DLR Latency and Errors in Local Testing
Learn how to mock asynchronous delivery receipts, handle DLR latency, and test edge cases locally before promoting your CPaaS integration.
- Balancing Payload Batching and Single Request Throughput
Optimize API concurrency strategies for high-volume notification dispatch while maintaining rate-limit compliance on your white-label CPaaS console.
- Scoping Multi-Tenant API Keys for Platform Security
Secure white-label CPaaS sub-accounts by scoping API tokens to isolate tenant traffic, prevent cross-account message leaks, and enforce financial limits.