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 3 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 rate limits
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

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