RCS for developers

RCS API and webhooks for your CRM and apps

Send rich cards, carousels and suggested replies from your own software. Get delivered, read, tapped and reply events back in real time, and let MsgClub handle SMS fallback for phones without RCS.

  • REST API with JSON
  • Read, click and reply webhooks
  • SMS fallback in the same request
  • Test phones before launch
JSON request for an RCS rich card with Pay now and Already paid buttons, the resulting card on an Android phone, and a message.read webhook chip

What is an RCS API?

An RCS API lets your software send RCS business messages, such as text, rich cards, carousels and suggested replies, with one HTTP request per message or batch. Webhooks then send events back to your system when a message is delivered, read or tapped, when the customer replies, or when it falls back to SMS.

Updated

RCS API at a glance

Sends
Text, rich cards, carousels, suggested replies and actions
Webhooks
message.sent, delivered, read, clicked, received, failed
Fallback
DLT-approved SMS per number when RCS is not available
Sender
Your verified RCS brand agent with logo and name
Auth
API key sent as a Bearer token
Billing
Per RCS message by type; fallback billed as SMS

How does the RCS API connect to your CRM?

Your system sends the message. MsgClub picks RCS or SMS for each number. Events come back to your system as they happen.

Your systemTriggerNew order, due date, abandoned cart or lead stage in your CRM or app
API request
MsgClubRCS or SMSChecks RCS capability, sends the rich card, or falls back to your SMS template
Webhooks
Your systemRecord updatedDelivered, read, tapped and replied, stored against the customer

What does an RCS API request look like?

One request carries the rich card, its buttons and the SMS fallback.

  • A rich card can have a title, description, image or video and up to 4 buttons
  • Suggested replies return the text the customer tapped
  • Suggested actions open a URL, dial a number or show a location
  • The fallback block names your DLT-approved SMS template
POST {API_BASE_URL}/rcs/messages
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "to": "+9198XXXXXX21",
  "rich_card": {
    "title": "Your EMI of ₹4,250 is due",
    "description": "Due on 10 Dec. Pay in 2 taps.",
    "media_url": "https://example.com/emi.png",
    "suggestions": [
      { "type": "open_url", "text": "Pay now", "url": "https://example.com/pay/8KQ2" },
      { "type": "reply", "text": "Already paid" },
      { "type": "dial", "text": "Call us", "phone": "+9198XXXXXXXX" }
    ]
  },
  "fallback_sms": {
    "sender_id": "MSGCLB",
    "template_id": "1107XXXXXXXXXXXXX",
    "text": "Dear Rahul, EMI of Rs 4250 is due on 10 Dec. Pay: msgc.in/p/8KQ2 -MsgClub"
  },
  "fallback_after_sec": 300,
  "webhook_url": "https://your-crm.example.com/msgclub/rcs"
}

Illustrative example. Exact endpoints and field names are in the API docs, shared when you get API access.

Which webhooks does RCS send?

Each event is a JSON POST to your webhook URL, with the message ID you can match in your database.

RCS webhook events
EventWhen it is sent
message.sentThe message left MsgClub as RCS or SMS
message.deliveredThe phone received it; includes the channel used
message.readThe customer opened the RCS message
message.clickedA button or suggested action was tapped
message.receivedThe customer typed a reply or tapped a suggested reply
message.failedNeither RCS nor the SMS fallback could be delivered
POST https://your-crm.example.com/msgclub/rcs

{
  "event": "message.read",
  "message_id": "rcs_4f8a21",
  "to": "+9198XXXXXX21",
  "channel": "rcs",
  "read_at": "2026-11-15T11:06:12+05:30"
}

Illustrative example. Exact endpoints and field names are in the API docs, shared when you get API access.

How does SMS fallback decide what to send?

Fallback runs per number, so one campaign can reach every customer on the best channel their phone supports.

  1. Capability checkBefore sending, MsgClub checks whether the number can receive RCS from your agent.
  2. RCS if possibleCapable phones get the rich card. The delivered event shows "channel": "rcs".
  3. SMS if notOther phones get your DLT-approved SMS template at once, with your header and short link.
  4. Timeout fallbackIf an RCS message is not delivered within the time you set, for example because the phone is offline, the SMS is sent instead.

The SMS part follows TRAI DLT rules like any other SMS: a registered header, an approved template and, for promotions, the permitted sending hours. Read more in the SMS API guide.

What can you build with the RCS API?

Order and cart flows

Your store sends an order card with Track order. A tap on "Change slot" creates a ticket in your helpdesk through the reply webhook.

Payment reminders

Your loan system sends a Pay now card. "Already paid" replies mark the account for checking; unread reminders can trigger a reminder call from AI Voice.

Lead nurturing

Your CRM sends a carousel of projects or courses. Read and click events update the lead score so sales calls the warmest leads first.

The RCS API works with any CRM that can call an API or receive a webhook, including systems such as Zoho, HubSpot, Salesforce and LeadSquared through their own API features or Zapier. Compare channels in RCS vs SMS vs WhatsApp, go back to the RCS overview, see pricing, or browse the developer docs.

Frequently asked questions

Can I test the RCS API before my agent is launched?

Yes. Until your RCS agent is approved for launch, messages reach only the phones you register as testers. Use these phones to test rich cards, buttons, replies and your webhook handling, then switch to live sending after approval.

How does SMS fallback work in the API?

Add a DLT-approved SMS template to the request. If the number cannot receive RCS, or the RCS message is not delivered within the time you set, MsgClub sends the SMS instead and reports the message as fallen back, so your system knows which channel reached the customer.

Which webhook events does the RCS API send?

MsgClub sends message.sent, message.delivered, message.read, message.clicked and message.failed for each message, and message.received when the customer replies or taps a suggested reply. Exact field names are in the API docs shared when you get API access.

Can I use the RCS API with Zoho, HubSpot or Salesforce?

Yes, through their API or webhook features, or through Zapier. Any CRM that can call an API or receive a webhook can send RCS messages and record events. MsgClub does not claim a native one-click connector for these CRMs.

Is there an SMS API with a public endpoint as well?

Yes. The SMS API has a published send endpoint and returns response code 3001 when a request is accepted. You can use it alongside the RCS API, for example to send OTPs by SMS and alerts by RCS from the same account.

Do I need to handle duplicate webhook events?

It is good practice. Use the message ID in each event to update a record once, and return a 200 response quickly. If your server is down, events may be retried, so your handler should ignore an event it has already processed.

Start sending in minutes

Create a free account to test the panel and API, or talk to our team about volumes, DLT setup and CRM integration.