RCS API

RCS per REST API

Integrate interactive RCS messages into your applications. Rich Cards, carousels, buttons and SMS fallback - all via a simple REST API.

Message Types

9 message formats for every use case

From simple text messages to interactive carousels - the API supports all RCS formats.

textBasic

Max. 160 characters, SMS-like with verified sender

text

Up to 3,072 characters + 11 suggestion chips

richCard

Image/video + title + description + 4 buttons

carousel

Up to 10 cards, horizontally scrollable

image

JPEG, PNG, GIF - directly in the messaging app

video

MP4, 3GP for dynamic content

audio

MP3 for voice messages and podcasts

file

PDFs, documents for invoices & tickets

media

Generic media type + suggestion chips

"suggestions": [
  {
    "reply": {
      "text": "Book appointment",
      "postbackData": "book_apt",
      "webhookUrl": "https://..."
    }
  },
  {
    "action": {
      "text": "Call",
      "type": "dial",
      "dialAction": {
        "phoneNumber": "+44..."
      }
    }
  }
]
Interactive

7 button types for every interaction

Create interactive messages with up to 11 suggestion chips and 4 card actions per card.

  • postback - Webhook callback with custom data
  • openUrl - Open external links in browser
  • openUrlInWebview - Display links within the messaging app
  • dial - Initiate a direct call
  • createCalendarEvent - Add event to calendar
  • viewLocation - Show location in Google Maps
  • shareLocation - Request recipient's location
Batch Sending

Up to 10,000 recipients per request

Send the same message to thousands of recipients with a single API call. Ideal for campaigns and mass communication.

  • Automatic filtering of deactivated contacts
  • Test numbers are not charged
  • Progress-Tracking via Job-ID
  • Configurable batch size and delay
  • Campaign names for tracking and reporting
10.000
Recipients per request
POST /send-batch
RCS
Not available?
SMS
SMS Fallback

Automatic SMS fallback

When RCS is not available, an SMS is sent automatically. Define an SMS fallback text for each message.

  • Automatic detection of RCS capability
  • Separate SMS sender configurable
  • Up to 1,530 characters SMS text
  • Fallback reason in API response
Scheduling

Timezone-aware scheduling

Schedule messages for a specific time in the future. With IANA timezone support, you always reach your recipients at the right moment.

  • IANA timezone support (Europe/London, etc.)
  • Validation before sending via /validate-schedule-time
  • Schedulable batch messages
  • Cancellable jobs via DELETE /batch/{jobId}
{
  "scheduleAt": "2024-02-15T09:00:00",
  "timeZone": "Europe/London"
}
{
  "event": "rcs_button_clicked",
  "timestamp": "2024-01-15T10:30:00Z",
  "interaction": {
    "type": "button_click",
    "buttonText": "Buy now",
    "postbackData": "product_123",
    ...
  },
  "message": {
    "id": "...",
    "campaignName": "Summer Sale",
    ...
  },
  "contact": {
    "phone": "+4412345678",
    "name": "John Smith",
    ...
  }
}
Webhooks

Real-time button callbacks

Receive instant notifications when recipients click buttons. Connect your backend systems for automated workflows.

  • Real-time notifications on button clicks
  • Custom postbackData for context
  • Contact information in payload
  • Per-button webhook URLs supported
Code Examples

Simple integration

Send your first RCS message with just a few lines of code.

Request

# Send a Rich Card with button
curl -X POST https://api.sendrcs.eu/api/rcs/send \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phoneNumber": "+4412345678",
    "messageType": "richCard",
    "sendernameId": "your-sender-id",
    "content": {
      "title": "Welcome!",
      "description": "Discover our offers",
      "media": {
        "height": "MEDIUM",
        "contentInfo": {
          "fileUrl": "https://example.com/image.jpg"
        }
      },
      "cardActions": [{
        "text": "Learn more",
        "type": "openUrl",
        "openUrlAction": {
          "url": "https://example.com"
        }
      }]
    }
  }'

Response

{
  "success": true,
  "messageId": "msg_abc123def456",
  "method": "rcs",
  "creditsUsed": 1,
  "hasInteractiveButtons": true,
  "conversation": {
    "conversationId": "conv_xyz",
    "status": "ACTIVE",
    "remainingTime": "23:59:00",
    "chargedMessage": true,
    "messageCount": {
      "total": 1,
      "outbound": 1,
      "inbound": 0
    }
  }
}

API Endpoints

Overview of all available endpoints

Method Endpoint Description
POST /send Send a single message
POST /send-batch Batch messages (up to 10,000 recipients)
POST /validate Validate message before sending
GET /timezones Retrieve available timezones
POST /validate-schedule-time Validate scheduled time
GET /batch/{jobId}/status Check batch job status
DELETE /batch/{jobId} Cancel batch job
GET /limits Retrieve message limits and constraints
GET /button-guidelines Button guidelines and limits
GET /conversations List active conversations
GET /status Check service status
Authentication

Simple API key authentication

All API requests require an API key in the header. Generate your key in the dashboard.

X-API-Key: your-api-key-here

You can find your API keys under Settings → API Keys in your dashboard.

Conversation Billing

24-hour conversation window

Within a 24-hour window, send unlimited messages for the price of one conversation. Optimise your costs with high message volumes.

  • 24-hour window from first message
  • Billing preview before sending via API
  • Analytics endpoint for conversation metrics
  • Cost optimisation for follow-up messages
24h
Conversation window
Unlimited messages at a fixed price
FAQ

RCS API, answered

How do I send an RCS message via the API?

Send a POST request to https://api.sendrcs.eu/api/rcs/send with your API key in the X-API-Key header and a JSON body containing the sender ID, the recipient and the message content - for example a Rich Card with title, description, image and a button. The response returns a message ID and status. Full examples for every format are in the API documentation.

How do I authenticate API requests?

Every request needs an API key in the X-API-Key header. You generate and manage your keys in the SendRCS dashboard under Settings and API Keys.

Which message formats does the API support?

Nine formats: Basic Text (up to 160 characters), Rich Text (up to 3,072 characters and 11 suggestion chips), Rich Card, Carousel (up to 10 cards), image, video, audio, file (PDFs and documents) and generic media with suggestion chips. Seven button types are available: postback, openUrl, openUrlInWebview, dial, createCalendarEvent, viewLocation and shareLocation.

Can I send to many recipients with one request?

Yes. The batch endpoint sends the same message to up to 10,000 recipients in a single API call. Deactivated contacts are filtered automatically, batch size and delay are configurable, and a campaign name lets you track and report on the send.

How does SMS fallback work in the API?

Define an SMS fallback text for each message. The API detects automatically whether the recipient can receive RCS and otherwise sends the SMS instead, with a separately configurable SMS sender and up to 1,530 characters of text. The API response tells you when and why a fallback was used.

Can I schedule messages via the API?

Yes. Pass a scheduleAt time with IANA timezone support, such as Europe/London, and the message is sent at that moment in the recipient's local time. You can validate a time in advance via the validate-schedule-time endpoint and cancel a scheduled job with DELETE /batch/{jobId}.

How do I get notified when a recipient clicks a button?

Via webhooks. SendRCS calls your backend in real time on every button click, with the custom postbackData you defined and the contact information in the payload. Webhook URLs can be set per button, so you can trigger automated workflows in your own systems.

Ready to get started with the RCS API?

Create your free account and get your API key in minutes.

  • No subscription
  • No commitment
  • Pay as you go
  • Free trial