Get In Touch

RCS API Rate Limits: What They Are and How to Prevent Account Blocking (2026 Guide)

Learn everything about RCS API rate limits in 2026 — message caps, carrier restrictions, HTTP 429 errors, exponential backoff strategies, and 10 best practices to prevent account blocking. India-focused guide.

Why RCS API Rate Limits Matter for Your Business in 2026

You've built your RCS automation. Your brand is verified. Your message templates are approved. Your campaign is ready to fire. You hit send — and within minutes, your API returns a flood of HTTP 429 errors. Messages stop delivering. Worse: your RCS agent account gets flagged or suspended. Your entire campaign grinds to a halt.

This is the rate limit problem — and it catches more businesses off guard than any other technical challenge in RCS deployment. Unlike WhatsApp, which has well-documented per-conversation pricing limits, RCS Business API (RBM) rate limits are managed across multiple layers: Google's RBM platform, your BSP, carrier-level throttling, and India's TRAI regulatory windows. Each layer has its own rules. Violating any of them can lead to message failures, account flags, or permanent suspension.

This complete guide explains exactly what RCS API rate limits are, where they come from, what happens when you exceed them, and — most importantly — the 10 proven strategies to prevent account blocking so your campaigns run cleanly, at scale, every time.

RCS API Rate Limits — 2026 Key Facts

Limit / Parameter

Value / Detail

Maximum RCS message size (total AgentMessage)

250 KB per message — exceeding causes immediate rejection

Maximum text characters per RCS message

3,072 characters (vs 160 for SMS)

Maximum media file size per RCS message

100 MiB per file — images, video, PDF, audio

HTTP error for rate limit exceeded

HTTP 429 — Too Many Requests

Promotional RCS message window in India (TRAI)

9:00 AM – 9:00 PM only — messages outside window blocked

Undelivered message auto-deletion (Google RBM)

30 days — undelivered messages deleted after 30 days

Auto-retry window after 429 error

Use exponential backoff — minimum 1 second delay, double each retry

Key rotation to bypass rate limits

NOT permitted — may violate BSP terms and trigger suspension

RCS message delivery — charged on

Successfully delivered messages only — failed attempts not billed

Account blocking trigger

Repeated spam complaints, opt-out violations, or rapid burst sending

What Are RCS API Rate Limits — Explained Simply

A rate limit is a cap on how many API requests or messages you can send within a defined time window. When you exceed this cap, the API returns an HTTP 429 error — 'Too Many Requests' — and your message is rejected until the window resets or you implement a delay.

For RCS Business API, rate limits operate at multiple levels simultaneously. Understanding each layer is critical — because exceeding any one of them triggers failures even if you are within the limits of the others.

Layer 1 — Google RBM Platform Limits

Google's RCS for Business platform (RBM API) sets the base rate limits for all agents. These limits apply per RCS agent (your verified brand sender) and are defined in terms of messages per second or requests per minute. Google does not publish a single universal rate limit — limits scale with your agent's verified status, usage history, and BSP tier.

         New agents start with conservative limits — typically 10–30 messages per second

         Established agents with clean history can request higher throughput limits

         All requests return HTTP 429 when platform limits are exceeded

         Google's RBM platform automatically retries undelivered messages for up to 30 days

         Set message expiration for time-sensitive content (OTPs, flash sale offers) to stop stale delivery

Layer 2 — BSP (Business Solution Provider) Limits

Your BSP — Gupshup, Kaleyra, Route Mobile, Tanla, Infobip, or others — applies its own rate limits on top of Google's platform limits. These limits are set per account tier, volume contract, and use case. BSP limits are often stricter than Google's platform limits for new accounts.

         Starter accounts: typically 5–15 messages per second

         Growth accounts: 50–200 messages per second

         Enterprise accounts: 500–1,000+ messages per second (negotiated)

         BSP limits vary by message type: transactional vs promotional vs conversational

         Contact your BSP to understand your exact current throughput limit and how to increase it

Layer 3 — Carrier-Level Throttling (Jio, Airtel, Vi)

In India, individual telecom carriers — Jio, Airtel, and Vi — apply their own throttling rules on RCS message delivery. These carrier-level limits are separate from your BSP limits and are not always publicly documented. They are particularly relevant for high-volume campaigns.

         Carriers throttle burst traffic to protect network infrastructure

         Festival season campaigns (Diwali, Holi) may face increased carrier throttling during peak hours

         Carrier throttling does NOT trigger HTTP 429 at the API level — messages are delayed, not rejected

         Your BSP should manage carrier-level pacing automatically — verify this before launch

         Spreading campaign sends over 2–4 hours reduces carrier throttling significantly

Layer 4 — TRAI Regulatory Windows (India Specific)

India's Telecom Regulatory Authority (TRAI) mandates specific time windows for commercial messaging. Promotional RCS messages sent outside these windows are blocked at the carrier level — regardless of your API rate limits.

         Promotional RCS messages: permitted ONLY between 9:00 AM and 9:00 PM (IST)

         Transactional RCS messages (OTP, order confirmation): allowed 24/7

         Service messages (account alerts, appointment reminders): allowed 24/7

         TRAI DND registry: customers registered on DND must be excluded from all promotional sends

         TRAI violations result in carrier-level blocking — not just message failure

Understanding HTTP 429 Error — The RCS Rate Limit Error

When your RCS API requests exceed the allowed rate, the server returns:

 

HTTP 429 — Too Many Requests

HTTP/1.1 429 Too Many Requests

 

Retry-After: 30

 

{

  "error": {

    "code": 429,

    "message": "Quota exceeded for RCS messaging agent",

    "status": "RESOURCE_EXHAUSTED"

  }

}

The Retry-After header tells you exactly how many seconds to wait before retrying. Always read and respect this header — retrying immediately after a 429 will trigger another 429 and can escalate to a temporary account block.

What to Do When You Get HTTP 429

         STOP retrying immediately — do not loop or retry without a delay

         Read the Retry-After header value — wait exactly this many seconds before next attempt

         If no Retry-After header: implement exponential backoff (see Section 5)

         Log all 429 errors with timestamp and request volume — identify the pattern

         Alert your engineering team if 429 errors exceed 5% of total requests — reduce send rate

         Never use a different API key to bypass the 429 — this violates BSP terms and triggers suspension 

10 Proven Strategies to Prevent RCS Account Blocking

1. Implement Exponential Backoff — The Right Way to Handle 429 Errors

Exponential backoff is the gold-standard strategy for handling rate limit errors. Instead of retrying immediately (which makes the problem worse), you wait progressively longer between each retry attempt.

         Retry 1: Wait 1 second, then retry

         Retry 2: Wait 2 seconds, then retry

         Retry 3: Wait 4 seconds, then retry

         Retry 4: Wait 8 seconds, then retry

         Retry 5: Wait 16 seconds — if still failing, pause and alert engineering

2. Use a Message Queue — Never Send Directly From Application Code

The single most effective architectural decision you can make for RCS at scale is using a message queue (RabbitMQ, AWS SQS, Redis Queue, or Google Pub/Sub) between your application and the RCS API. The queue controls throughput, absorbs spikes, and retries failed messages automatically.

         Application pushes messages to queue — not directly to RCS API

         Queue worker dequeues at a controlled rate — e.g., 20 messages per second

         On 429: message goes back to queue with backoff delay — no message lost

         Queue gives you visibility: how many messages pending, processing, and failed

         Horizontal scaling: multiple queue workers — each respecting rate limits independently

3. Spread Campaign Sends — Never Blast All at Once

The most common cause of RCS account blocking is a campaign blast — sending hundreds of thousands of messages simultaneously. Even if your per-second rate limit is high, sudden burst traffic triggers carrier throttling, BSP flags, and Google agent suspicion.

         For campaigns over 10,000 messages: spread the send over 2–4 hours minimum

         For campaigns over 100,000 messages: spread over 6–12 hours

         Schedule festival campaigns to start at 9:00 AM IST — not all at once at midnight

         Use your BSP's campaign scheduler — most support rate-limited batch sending natively

         Monitor delivery rates in real time — if delivery drops, pause and investigate

4. Respect TRAI Time Windows — No Promotional Messages Outside 9 AM–9 PM

India's TRAI mandates that promotional messages can only be sent between 9:00 AM and 9:00 PM IST. Sending promotional RCS messages outside this window causes carrier-level blocking — and repeated violations can result in your RCS agent being permanently blacklisted by Indian carriers.

         Hard-code a time-check in your campaign scheduler: block any promotional send before 9 AM or after 9 PM IST

         Set your BSP platform to automatically queue and hold messages until 9 AM if triggered early

         Transactional messages (OTP, order confirmation, delivery alert) are exempt — allowed 24/7

         When in doubt about message type: classify as promotional and apply the 9 AM–9 PM rule

         Review TRAI DND registry monthly — always exclude DND numbers from promotional sends

5. Monitor and Respect Retry-After Headers

Every HTTP 429 response from the RCS API includes (or should include) a Retry-After header specifying exactly how long to wait. Respecting this header is not optional — it is the API's direct instruction on when to safely retry.

         Parse the Retry-After value from every 429 response before any retry logic

         If Retry-After is absent: default to exponential backoff starting at 2 seconds

         Store the Retry-After timestamp — ensure all retry workers respect it, not just the current request

         Alert on Retry-After values over 60 seconds — this indicates serious throttling

         Log Retry-After values over time — a pattern of increasing values signals your send rate is consistently too high

6. Set Message Expiration for Time-Sensitive Content

Google's RBM platform will attempt to deliver undelivered messages for up to 30 days. For time-sensitive content — flash sale offers, OTPs, appointment reminders — this means customers can receive an expired offer days later. Worse: the retried delivery counts against your rate limits when you are already under pressure.

         Set expiration on all promotional messages: 4–12 hours maximum

         Set expiration on OTP messages: 5–10 minutes (OTPs are invalid after this anyway)

         Set expiration on festival sale messages: duration of the sale (e.g., 24 hours for Diwali sale)

         Set expiration on appointment reminders: 1 hour before appointment time

         Messages that expire cleanly free up your delivery queue — preventing backlog buildup

7. Use Batch Endpoints — Reduce API Calls by 10–50x

Sending individual API calls for each message is the most rate-limit-intensive approach possible. Many BSPs provide batch endpoints that allow you to submit 10–1,000 messages in a single API call — dramatically reducing your per-message API overhead and rate limit consumption.

         Check your BSP documentation for batch message submission endpoints

         Batch size: start with 50 messages per API call — increase based on 429 frequency

         Batching reduces API calls by 50x — 50,000 messages in 1,000 API calls vs 50,000 individual calls

         Each batch call is atomic — if it fails, all messages in the batch retry together

         Combine batching with queue architecture for maximum throughput and reliability

8. Manage Opt-Outs Rigorously — The #1 Account Blocking Trigger

The most common cause of RCS account blocking is NOT technical — it is sending messages to users who have opted out. High spam complaint rates and opt-out violations trigger both carrier-level blocks and Google RBM agent suspension. Managing opt-outs rigorously is not just good practice — it is an account survival requirement.

         Process opt-out requests within 24 hours — remove from all send lists immediately

         Include opt-out instruction in every promotional RCS message: 'Reply STOP to unsubscribe'

         Maintain a centralised DND/opt-out registry — sync across all messaging channels

         Never re-add an opted-out contact without explicit new opt-in

         Audit your contact lists monthly — remove contacts who haven't engaged in 6+ months

9. Monitor Rate Limit Headers Proactively — Before You Hit the Wall

Every RCS API response includes rate limit information in the response headers — not just when you exceed them. Proactive monitoring of these headers allows you to slow down BEFORE hitting the 429 error, keeping your campaign running smoothly at all times.

         Monitor X-RateLimit-Remaining header: remaining requests in current window

         Monitor X-RateLimit-Reset header: timestamp when the rate limit window resets

         Alert engineering when remaining requests drop below 20% of quota

         Auto-reduce send rate when remaining drops below 10% — preventive throttling

         Build a real-time dashboard showing: requests/second, 429 rate, remaining quota, delivery rate

10. Request Rate Limit Increases Proactively — Not During a Crisis

If your business needs higher throughput than your current rate limits allow — for example, before a major Diwali campaign — the right approach is to request a limit increase from your BSP or Google BEFORE the campaign, not after you start hitting 429 errors during the send.

         Contact your BSP account manager 2–3 weeks before any major campaign

         Provide projected campaign volume: total messages, send window, messages per hour

         Share your clean account history: low spam rate, zero TRAI violations, consistent opt-out compliance

         BSPs and Google grant limit increases based on account health and business case — good history is essential

         After limit increase: test at new rate with a small batch before full campaign launch

RCS API Rate Limits — Complete Reference Table 2026

Limit Type

Value

What Happens If Exceeded

How to Avoid

Max message size

250 KB per AgentMessage

Immediate rejection — message not sent

Check payload size before sending — strip unnecessary metadata

Max text length

3,072 characters

API returns error — message rejected

Truncate text in code — validate before API call

Max media size

100 MiB per file

File rejected — message fails to deliver

Compress media before upload — use optimised image formats

API rate (new agent)

10–30 msg/second

HTTP 429 — Too Many Requests

Use message queue — implement exponential backoff

API rate (enterprise)

500–1,000+ msg/second

HTTP 429 if burst exceeds limit

Request limit increase before major campaigns

Promotional send window (India)

9 AM – 9 PM IST only

Carrier-level block — message not delivered

Time-check in scheduler — classify messages correctly

Opt-out processing SLA

Within 24 hours

Spam complaints — potential account suspension

Automated opt-out sync across all lists

Undelivered message TTL

30 days — then deleted

Message lost if device offline 30+ days

Set expiration on time-sensitive content

DND registry compliance

Mandatory for promotional

TRAI violation — carrier blacklisting

Monthly DND audit — auto-exclude on new uploads

Spam complaint threshold

Below 0.1% — safe zone

Above 0.5% = agent review/suspension

Send only to opted-in, engaged contacts

Step-by-Step: Safe High-Volume RCS Sending Setup

Follow this 5-step technical setup to send RCS campaigns at scale without hitting rate limits or triggering account blocks.

STEP

1

Set Up a Message Queue Between Your App and RCS API

Install RabbitMQ, AWS SQS, Redis Queue, or Google Pub/Sub as your message broker.

Application code pushes all RCS messages to the queue — never directly to RCS API.

Configure a queue worker that dequeues at a safe rate (e.g., 15 messages/second for new accounts).

Worker handles 429 errors by re-queuing the message with an exponential backoff delay.

Monitor queue depth in real time — alert if queue grows faster than it drains.

STEP

2

Implement Exponential Backoff With Jitter

In your queue worker, wrap every RCS API call in a try-catch block.

On HTTP 429: read the Retry-After header value and wait that many seconds minimum.

If no Retry-After header: start backoff at 1 second, double on each retry (1 → 2 → 4 → 8 → 16 sec).

Add random jitter: add 0–1 second random delay to each backoff to prevent thundering herd.

Set a maximum retry limit: after 5 failed retries, move message to dead-letter queue and alert.

STEP

3

Build a TRAI Compliance Layer

Create a message classifier that labels each message: Promotional, Transactional, or Service.

Promotional messages: time-gate to 9 AM–9 PM IST — queue overnight sends to release at 9 AM.

Load TRAI DND registry monthly — store in your database and auto-exclude on all promotional lists.

Log message classification for every send — maintain audit trail for TRAI compliance review.

Alert immediately if any promotional message is attempted outside the 9 AM–9 PM window.

STEP

4

Set Expiration on All Time-Sensitive Messages

Promotional messages: set expiration to 12 hours from send time — prevents stale delivery.

OTP messages: set expiration to 10 minutes — OTPs are invalid after this window.

Flash sale messages: set expiration to the sale end time — no post-sale deliveries.

Festival campaign messages: set expiration to 24 hours — prevents next-day re-delivery.

Appointment reminders: set expiration to 1 hour before appointment — prevents late delivery.

STEP

5

Monitor, Alert, and Request Limit Increases

Build a real-time monitoring dashboard: requests/second, 429 rate, delivery rate, opt-out rate.

Set alerts: 429 rate > 1% — auto-reduce send speed. Opt-out rate > 0.1% — pause campaign.

Review monitoring data after every major campaign — identify patterns and optimise.

Contact your BSP 2–3 weeks before any campaign over 500,000 messages — request limit increase.

Maintain a clean account history — it is the most powerful tool for getting limit increases approved.

7 Common Mistakes That Lead to RCS Account Blocking

Mistake

Why It Causes Blocking

The Fix

Retrying immediately after HTTP 429

Rapid retries escalate throttling to account flag

Always implement exponential backoff — minimum 1 second wait, doubling each retry

Sending promotional messages at midnight or 6 AM

TRAI violation — carrier blacklisting of sender ID

Hard-code 9 AM–9 PM IST gate in all promotional send logic

Not processing opt-outs within 24 hours

High spam complaint rate — BSP flags account

Automate opt-out processing — sync across all messaging channels within 1 hour

Sending without a message queue — direct API calls

Burst traffic spikes trigger immediate 429 and flags

Use RabbitMQ, SQS, or Redis Queue — control throughput programmatically

Using multiple API keys to bypass limits

Explicit BSP/Google policy violation — permanent suspension

Request legitimate rate limit increase from BSP — never rotate keys to bypass

Sending to DND-registered numbers

TRAI violation — serious regulatory consequences

Load DND registry monthly — auto-exclude on all promotional campaign uploads

No message expiration on OTPs and flash sales

Stale messages delivered days later — customer confusion + spam reports

Set messageExpireTime on all time-sensitive messages before sending

Frequently Asked Questions — RCS API Rate Limits

Q1: What is the exact RCS API rate limit per second in India?

Google does not publish a single universal rate limit for the RCS for Business (RBM) API — limits are set per agent based on verification status, account history, and BSP tier. New agents typically start at 10–30 messages per second. Established agents with clean sending history can request higher limits — up to 500–1,000+ messages per second for enterprise accounts. Contact your BSP to confirm your current limit and request an increase before any major campaign.

Q2: What happens if I send RCS messages outside 9 AM–9 PM in India?

Promotional RCS messages sent outside the 9:00 AM – 9:00 PM IST window (mandated by TRAI) are blocked at the carrier level. The message is not delivered, and no API error is returned to your application — the message silently fails at the carrier. Repeated TRAI timing violations can result in your sender ID being blacklisted by Indian carriers (Jio, Airtel, Vi), making all future RCS messages from your brand non-deliverable.

Q3: How do I fix an HTTP 429 error in my RCS API integration?

When you receive an HTTP 429: (1) Stop retrying immediately, (2) Read the Retry-After response header and wait that number of seconds, (3) If no Retry-After header, implement exponential backoff starting at 1 second (double each retry: 1 → 2 → 4 → 8 → 16 seconds), (4) Add 0–1 second random jitter to prevent concurrent processes from retrying simultaneously, (5) Log all 429 errors with timestamps and volumes to identify the root cause, (6) If 429s persist, reduce your overall send rate or contact your BSP to increase your limit.

Q4: Can I use multiple RCS API keys to send more messages and avoid rate limits?

No — this is explicitly prohibited. Most BSPs and Google's RBM policies forbid using multiple API keys to circumvent rate limits. Detection results in immediate account suspension — not just continued throttling. The correct approach is to request a legitimate rate limit increase from your BSP by providing your campaign requirements, projected volume, and clean account history.

Q5: What triggers RCS account blocking — and can it be reversed?

RCS account blocking is typically triggered by: spam complaint rate above 0.3–0.5%, sending to opted-out contacts, TRAI timing violations, or repeated rate limit violations. Minor violations result in temporary throttling. Serious or repeated violations result in agent suspension. Account restoration requires submitting a formal appeal to your BSP with documentation of corrective actions taken. Prevention is significantly easier than recovery — a single suspension can take 2–6 weeks to resolve.

Q6: Does RCS have different rate limits for transactional vs promotional messages?

Rate limits are generally applied at the API level (per second/minute), not per message type. However, message classification (transactional vs promotional vs service) affects TRAI timing compliance, carrier routing, and BSP policy — not the raw API rate limit. Transactional messages can be sent 24/7, while promotional messages are restricted to 9 AM–9 PM IST. Your BSP may also have different throughput SLAs for transactional vs promotional traffic — verify this with your account manager.

Q7: How do I calculate the right message queue rate for my RCS campaigns?

Formula: Safe Send Rate = (Your BSP Rate Limit in msg/second) x 0.75. The 0.75 factor (75% of limit) provides headroom for carrier throttling, occasional spikes, and burst traffic without hitting the 429 threshold. Example: if your BSP limit is 100 msg/second, configure your queue worker to dequeue at 75 msg/second maximum. For festival campaigns, use 60% of your limit to account for increased carrier throttling during peak periods.

Q8: Should I enable SMS fallback and does it count against RCS rate limits?

Yes — always enable SMS fallback. When an RCS message cannot be delivered (device not RCS-capable, network issue, or recipient offline), SMS fallback ensures the customer still receives the message. SMS fallback messages are delivered via your SMS API — they do not count against your RCS API rate limits. They are billed separately as standard SMS messages. Confirm with your BSP that automatic fallback is active before any campaign launch.

RCS Rate Limit Quick Reference Card

Scenario

Safe Action

What to Avoid

HTTP 429 received

Stop sending — read Retry-After — implement exponential backoff

Retrying immediately — escalates to account block

Festival campaign (Diwali, Holi)

Spread over 6–8 hours starting 9 AM IST — use queue

Midnight blast or single-burst send

OTP or time-sensitive message

Set expiration to 5–10 minutes — use transactional type

No expiry — customer receives expired OTP days later

New RCS agent account

Start at 10 msg/second — increase gradually over 30 days

Full-speed campaign on Day 1 — triggers immediate block

Rate limit approaching

Auto-reduce send rate to 60% of quota — alert team

Wait for 429 — proactive monitoring prevents the error

Opt-out request received

Remove from all lists within 1 hour — sync to all channels

Batch processing weekly — violates opt-out SLA

Large campaign (100k+ messages)

Request BSP limit increase 2–3 weeks before — document volume

Launch without limit increase — 429s throughout campaign

Promotional message at 8:55 PM

Queue and hold — deliver from 9 AM next day

Send at 8:55 PM — carrier may block entire batch

Conclusion

RCS API rate limits are not obstacles — they are guardrails. They exist to protect carrier infrastructure, ensure fair access across all businesses, and prevent spam abuse that would degrade the channel for everyone. Understanding and working within these limits — rather than trying to bypass them — is what separates professional RCS implementations from amateur ones.

The 10 strategies in this guide — from exponential backoff and message queues to TRAI compliance and proactive monitoring — give you everything you need to send RCS campaigns at any volume without hitting rate limits or risking account blocking. Implement them before your first major campaign, not after your first suspension.

Maintain your account health consistently. Honour opt-outs immediately. Respect TRAI windows. Monitor your 429 rate proactively. Request rate limit increases well in advance. Do these things, and your RCS channel will be a reliable, high-performance asset for your business for years to come.