RCS Messaging API — Rich Business Messaging | BulkSMS.ca
REST API for RCS (Rich Communication Services) messaging. Send rich media, carousel messages, interactive buttons, and verified branded messages.
Base URL: https://api.bulksms.ca
What is the RCS Messaging API?
The RCS Messaging API enables businesses to send Rich Communication Services messages with rich media, interactive buttons, carousels, and verified sender profiles. Unlike SMS, RCS supports images, video, read receipts, typing indicators, and up to 8,000 characters. The API uses REST endpoints with API key authentication and returns JSON responses with delivery status, read receipts, and engagement analytics.
Authentication
Authorization: Bearer YOUR_API_KEY
Content-Type: application/jsonInclude your API key in the Authorization header of every request. API keys are available in your BulkSMS.ca dashboard under Settings > API Keys.
API Endpoints
/v2/rcs/sendSend a basic RCS text message.
Auth: API Key{
"to": "9198XXXXXXXX",
"message": "Hello! Check out our new collection.",
"sender_brand": "MyBrand"
}{
"status": "success",
"message_id": "rcs_msg_001",
"to": "9198XXXXXXXX"
}/v2/rcs/send-richSend RCS message with image and buttons.
Auth: API Key{
"to": "9198XXXXXXXX",
"message": "Check out our summer sale!",
"media": {
"type": "image",
"url": "https://example.com/sale.jpg"
},
"buttons": [
{ "type": "url", "title": "Shop Now", "url": "https://shop.com" },
{ "type": "reply", "title": "Learn More" }
]
}{
"status": "success",
"message_id": "rcs_msg_002"
}/v2/rcs/send-carouselSend a carousel message with multiple cards.
Auth: API Key{
"to": "9198XXXXXXXX",
"cards": [
{
"title": "Product 1",
"description": "₹999",
"image": "https://example.com/p1.jpg",
"buttons": [{ "type": "url", "title": "Buy", "url": "https://shop.com/p1" }]
},
{
"title": "Product 2",
"description": "₹1,499",
"image": "https://example.com/p2.jpg",
"buttons": [{ "type": "url", "title": "Buy", "url": "https://shop.com/p2" }]
}
]
}{
"status": "success",
"message_id": "rcs_msg_003"
}/v2/rcs/status/{message_id}Get RCS message delivery and read status.
Auth: API Key{
"message_id": "rcs_msg_001",
"to": "9198XXXXXXXX",
"delivery_status": "delivered",
"read_status": "read",
"read_at": "2026-06-15T14:32:00+05:30"
}/v2/rcs/analytics/{message_id}Get engagement analytics for an RCS message.
Auth: API Key{
"message_id": "rcs_msg_001",
"delivered": 1,
"read": 1,
"button_clicks": 2,
"media_viewed": true
}SDK Code Examples
curl (built-in)curl -X POST https://api.bulksms.ca/v2/rcs/send-rich \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "9198XXXXXXXX",
"message": "Summer Sale is live!",
"media": {"type": "image", "url": "https://example.com/sale.jpg"},
"buttons": [{"type": "url", "title": "Shop Now", "url": "https://shop.com"}]
}'npm install axiosconst axios = require('axios');
await axios.post('https://api.bulksms.ca/v2/rcs/send-rich', {
to: '9198XXXXXXXX',
message: 'Summer Sale is live!',
media: { type: 'image', url: 'https://example.com/sale.jpg' },
buttons: [{ type: 'url', title: 'Shop Now', url: 'https://shop.com' }]
}, { headers: { Authorization: 'Bearer YOUR_API_KEY' }});pip install requestsimport requests
response = requests.post("https://api.bulksms.ca/v2/rcs/send-rich",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"to": "9198XXXXXXXX",
"message": "Summer Sale is live!",
"media": {"type": "image", "url": "https://example.com/sale.jpg"},
"buttons": [{"type": "url", "title": "Shop Now", "url": "https://shop.com"}]
}
)
print(response.json())composer require guzzlehttp/guzzle$client = new GuzzleHttp\Client();
$response = $client->post('https://api.bulksms.ca/v2/rcs/send-rich', [
'headers' => ['Authorization' => 'Bearer YOUR_API_KEY'],
'json' => [
'to' => '9198XXXXXXXX',
'message' => 'Summer Sale is live!',
'media' => ['type' => 'image', 'url' => 'https://example.com/sale.jpg'],
'buttons' => [['type' => 'url', 'title' => 'Shop Now', 'url' => 'https://shop.com']]
]
]);Webhooks
Configure webhooks in your dashboard to receive real-time event notifications.
Supported Events
{
"event": "rcs.button.clicked",
"message_id": "rcs_msg_002",
"to": "9198XXXXXXXX",
"button_id": "btn_001",
"button_title": "Shop Now",
"timestamp": "2026-06-15T14:35:00+05:30"
}Error Codes
FAQs
What is RCS messaging?
RCS (Rich Communication Services) is the next-generation messaging standard that replaces SMS with rich, interactive experiences. It supports media, buttons, carousels, and verified branding within the native messaging app.
Which devices support RCS?
RCS is supported on Android devices with Google Messages and select carrier messaging apps. iOS support is coming soon. RCS availability depends on the carrier.
How is RCS different from WhatsApp?
RCS works within the native messaging app without requiring app installation. Unlike WhatsApp, it does not require an internet connection for delivery (uses carrier network). RCS also does not require opt-in for business messages.
What is a verified sender profile?
A verified sender profile displays your business name, logo, and verification badge in the messaging app, building trust with recipients.
Can I send carousel messages via RCS?
Yes, the RCS API supports carousel messages that display multiple products or options in a horizontally scrollable format with images and action buttons.