Base URL
Send RCS Business Messaging over HTTPS REST at https://api.smstake.com. Authenticate every request with a Bearer token. JSON request and response bodies use Content-Type: application/json. API access, sandbox credentials and production tokens are provided after onboarding.
This page is the public developer reference for the SMSTAKE RCS API on our CPaaS platform. Related docs: Bulk SMS API reference, RCS Business Messaging, the SMSTAKE blog, and the DLR webhook integration guide.
Authentication
Pass your API token in the Authorization header on every call:
Authorization: Bearer <your_api_token>
Content-Type: application/json
- Use HTTPS only. Plain HTTP is not supported.
- Treat tokens like passwords. Store them in a secrets manager or environment variables; do not commit them to source control.
- Rotate tokens from your SMSTAKE account or by contacting support if a token is exposed.
Endpoints
| Method | URL | Purpose |
|---|---|---|
| POST | https://api.smstake.com/v1/rcs/send | Send one RCS message (text or rich card) |
| POST | https://api.smstake.com/v1/rcs/send-batch | Send multiple RCS messages in one request |
Single message dispatch
Send one RCS message with POST https://api.smstake.com/v1/rcs/send.
POST https://api.smstake.com/v1/rcs/send
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"to": "+919876543210",
"agent_id": "your_rcs_agent_id",
"type": "text",
"text": "Your order ORD-2847 has been shipped. Track it in the button below.",
"client_ref": "order_ORD2847",
"suggestions": [
{
"type": "open_url",
"text": "Track order",
"url": "https://example.com/track/ORD-2847",
"postback": "track_order"
},
{
"type": "reply",
"text": "Talk to support",
"postback": "support"
}
]
}
Example success response
{
"status": "accepted",
"message_id": "msg_8f3k2j9x1m",
"channel": "rcs",
"to": "+919876543210",
"client_ref": "order_ORD2847"
}
Rich card media payload
Use type: "card" with a cardMedia object for image or video URLs, plus suggested actions.
POST https://api.smstake.com/v1/rcs/send
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"to": "+919876543210",
"agent_id": "your_rcs_agent_id",
"type": "card",
"client_ref": "promo_diwali_2026",
"card": {
"title": "Festive offers are live",
"description": "Save on selected products this weekend. Tap below to browse.",
"cardMedia": {
"height": "MEDIUM",
"contentInfo": {
"fileUrl": "https://cdn.example.com/rcs/festive-banner.jpg",
"forceRefresh": false
}
},
"suggestions": [
{
"type": "open_url",
"text": "Shop now",
"url": "https://example.com/sale",
"postback": "shop_now"
},
{
"type": "dial",
"text": "Call us",
"phone": "+918885466255",
"postback": "call_support"
}
]
}
}
Media URLs must be publicly reachable over HTTPS. Supported formats and size limits for your account are confirmed during onboarding. Availability of RCS rich cards still depends on the customer's device, network and provider support.
Batch message dispatch
Send several messages in one request with POST https://api.smstake.com/v1/rcs/send-batch. Each item follows the same shape as a single send.
POST https://api.smstake.com/v1/rcs/send-batch
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{
"messages": [
{
"to": "+919876543210",
"agent_id": "your_rcs_agent_id",
"type": "text",
"text": "Hi Ananya, your appointment is confirmed for 4:30 PM.",
"client_ref": "appt_1001"
},
{
"to": "+919812345678",
"agent_id": "your_rcs_agent_id",
"type": "text",
"text": "Hi Rohan, your appointment is confirmed for 5:00 PM.",
"client_ref": "appt_1002"
}
]
}
Example batch response
{
"status": "accepted",
"results": [
{ "client_ref": "appt_1001", "message_id": "msg_a1", "to": "+919876543210", "status": "accepted" },
{ "client_ref": "appt_1002", "message_id": "msg_a2", "to": "+919812345678", "status": "accepted" }
]
}
Delivery report webhooks
Register an HTTPS endpoint in your SMSTAKE account to receive delivery and read events as JSON POSTs. Event names in this reference include message.delivered and message.read. Verify the X-SMSTAKE-Signature header on the raw body before you process the event.
message.delivered
POST https://yourapp.com/webhooks/smstake/dlr
Content-Type: application/json
X-SMSTAKE-Signature: sha256=...
{
"event": "message.delivered",
"message_id": "msg_8f3k2j9x1m",
"channel": "rcs",
"to": "+919876543210",
"agent_id": "your_rcs_agent_id",
"status": "delivered",
"client_ref": "order_ORD2847",
"submitted_at": "2026-10-19T10:15:02+05:30",
"delivered_at": "2026-10-19T10:15:04+05:30"
}
message.read
{
"event": "message.read",
"message_id": "msg_8f3k2j9x1m",
"channel": "rcs",
"to": "+919876543210",
"agent_id": "your_rcs_agent_id",
"status": "read",
"client_ref": "order_ORD2847",
"read_at": "2026-10-19T10:16:11+05:30"
}
Return 200 OK quickly. Deduplicate by message_id + event. Which RCS status events your account receives is confirmed during onboarding. Full webhook setup steps are in the DLR webhook guide.
HTTP response codes
| HTTP status | Meaning |
|---|---|
| 200 / 202 | Request accepted for processing |
| 400 | Invalid JSON or missing required fields |
| 401 | Missing or invalid Bearer token |
| 403 | Token valid but not allowed for this agent or action |
| 429 | Rate limit exceeded; retry with backoff |
| 5xx | Temporary server or upstream issue; safe to retry with backoff |
Next steps
- Request a demo for API onboarding and sandbox access
- Bulk SMS API developer reference
- SMSTAKE blog for DLT, RCS registration and channel guides
- RCS registration guide
- Build a DLR webhook receiver
- RCS Business Messaging service page