Send an RCS Rich Card
curl --request POST \
--url https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"phoneNumber": "5551234567",
"webhookUrl": "https://mywebhook.com/recieve",
"rcsPayload": {
"richCard": {
"body": {
"title": "Summer Sale!",
"text": "Save up to 50% on all summer items. Limited time offer!",
"url": "https://example.com/images/summer-sale.mp4",
"thumbnailUrl": "https://example.com/images/summer-sale.jpg",
"isVideo": true
}
}
},
"smsFailover": "Check out our latest offers! https://example.com/summer-sale"
}
'import requests
url = "https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card"
payload = {
"phoneNumber": "5551234567",
"webhookUrl": "https://mywebhook.com/recieve",
"rcsPayload": { "richCard": { "body": {
"title": "Summer Sale!",
"text": "Save up to 50% on all summer items. Limited time offer!",
"url": "https://example.com/images/summer-sale.mp4",
"thumbnailUrl": "https://example.com/images/summer-sale.jpg",
"isVideo": True
} } },
"smsFailover": "Check out our latest offers! https://example.com/summer-sale"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phoneNumber: '5551234567',
webhookUrl: 'https://mywebhook.com/recieve',
rcsPayload: {
richCard: {
body: JSON.stringify({
title: 'Summer Sale!',
text: 'Save up to 50% on all summer items. Limited time offer!',
url: 'https://example.com/images/summer-sale.mp4',
thumbnailUrl: 'https://example.com/images/summer-sale.jpg',
isVideo: true
})
}
},
smsFailover: 'Check out our latest offers! https://example.com/summer-sale'
})
};
fetch('https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'phoneNumber' => '5551234567',
'webhookUrl' => 'https://mywebhook.com/recieve',
'rcsPayload' => [
'richCard' => [
'body' => [
'title' => 'Summer Sale!',
'text' => 'Save up to 50% on all summer items. Limited time offer!',
'url' => 'https://example.com/images/summer-sale.mp4',
'thumbnailUrl' => 'https://example.com/images/summer-sale.jpg',
'isVideo' => true
]
]
],
'smsFailover' => 'Check out our latest offers! https://example.com/summer-sale'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card"
payload := strings.NewReader("{\n \"phoneNumber\": \"5551234567\",\n \"webhookUrl\": \"https://mywebhook.com/recieve\",\n \"rcsPayload\": {\n \"richCard\": {\n \"body\": {\n \"title\": \"Summer Sale!\",\n \"text\": \"Save up to 50% on all summer items. Limited time offer!\",\n \"url\": \"https://example.com/images/summer-sale.mp4\",\n \"thumbnailUrl\": \"https://example.com/images/summer-sale.jpg\",\n \"isVideo\": true\n }\n }\n },\n \"smsFailover\": \"Check out our latest offers! https://example.com/summer-sale\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phoneNumber\": \"5551234567\",\n \"webhookUrl\": \"https://mywebhook.com/recieve\",\n \"rcsPayload\": {\n \"richCard\": {\n \"body\": {\n \"title\": \"Summer Sale!\",\n \"text\": \"Save up to 50% on all summer items. Limited time offer!\",\n \"url\": \"https://example.com/images/summer-sale.mp4\",\n \"thumbnailUrl\": \"https://example.com/images/summer-sale.jpg\",\n \"isVideo\": true\n }\n }\n },\n \"smsFailover\": \"Check out our latest offers! https://example.com/summer-sale\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phoneNumber\": \"5551234567\",\n \"webhookUrl\": \"https://mywebhook.com/recieve\",\n \"rcsPayload\": {\n \"richCard\": {\n \"body\": {\n \"title\": \"Summer Sale!\",\n \"text\": \"Save up to 50% on all summer items. Limited time offer!\",\n \"url\": \"https://example.com/images/summer-sale.mp4\",\n \"thumbnailUrl\": \"https://example.com/images/summer-sale.jpg\",\n \"isVideo\": true\n }\n }\n },\n \"smsFailover\": \"Check out our latest offers! https://example.com/summer-sale\"\n}"
response = http.request(request)
puts response.read_body{
"message": "RCS rich card message sent successfully",
"transactionId": "019687e1-1b54-70f4-a68a-60af7fa776f4"
}{
"$ref": "#/components/examples/PhoneNumberValidationError/value"
}RCS
Send an RCS Rich Card
This endpoint allows you to send an RCS Rich Card message with media to a U.S. phone number. If delivery fails, a fallback SMS message will be sent.
POST
/
transactional_messages
/
send_rcs_rich_card
Send an RCS Rich Card
curl --request POST \
--url https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"phoneNumber": "5551234567",
"webhookUrl": "https://mywebhook.com/recieve",
"rcsPayload": {
"richCard": {
"body": {
"title": "Summer Sale!",
"text": "Save up to 50% on all summer items. Limited time offer!",
"url": "https://example.com/images/summer-sale.mp4",
"thumbnailUrl": "https://example.com/images/summer-sale.jpg",
"isVideo": true
}
}
},
"smsFailover": "Check out our latest offers! https://example.com/summer-sale"
}
'import requests
url = "https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card"
payload = {
"phoneNumber": "5551234567",
"webhookUrl": "https://mywebhook.com/recieve",
"rcsPayload": { "richCard": { "body": {
"title": "Summer Sale!",
"text": "Save up to 50% on all summer items. Limited time offer!",
"url": "https://example.com/images/summer-sale.mp4",
"thumbnailUrl": "https://example.com/images/summer-sale.jpg",
"isVideo": True
} } },
"smsFailover": "Check out our latest offers! https://example.com/summer-sale"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phoneNumber: '5551234567',
webhookUrl: 'https://mywebhook.com/recieve',
rcsPayload: {
richCard: {
body: JSON.stringify({
title: 'Summer Sale!',
text: 'Save up to 50% on all summer items. Limited time offer!',
url: 'https://example.com/images/summer-sale.mp4',
thumbnailUrl: 'https://example.com/images/summer-sale.jpg',
isVideo: true
})
}
},
smsFailover: 'Check out our latest offers! https://example.com/summer-sale'
})
};
fetch('https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'phoneNumber' => '5551234567',
'webhookUrl' => 'https://mywebhook.com/recieve',
'rcsPayload' => [
'richCard' => [
'body' => [
'title' => 'Summer Sale!',
'text' => 'Save up to 50% on all summer items. Limited time offer!',
'url' => 'https://example.com/images/summer-sale.mp4',
'thumbnailUrl' => 'https://example.com/images/summer-sale.jpg',
'isVideo' => true
]
]
],
'smsFailover' => 'Check out our latest offers! https://example.com/summer-sale'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card"
payload := strings.NewReader("{\n \"phoneNumber\": \"5551234567\",\n \"webhookUrl\": \"https://mywebhook.com/recieve\",\n \"rcsPayload\": {\n \"richCard\": {\n \"body\": {\n \"title\": \"Summer Sale!\",\n \"text\": \"Save up to 50% on all summer items. Limited time offer!\",\n \"url\": \"https://example.com/images/summer-sale.mp4\",\n \"thumbnailUrl\": \"https://example.com/images/summer-sale.jpg\",\n \"isVideo\": true\n }\n }\n },\n \"smsFailover\": \"Check out our latest offers! https://example.com/summer-sale\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phoneNumber\": \"5551234567\",\n \"webhookUrl\": \"https://mywebhook.com/recieve\",\n \"rcsPayload\": {\n \"richCard\": {\n \"body\": {\n \"title\": \"Summer Sale!\",\n \"text\": \"Save up to 50% on all summer items. Limited time offer!\",\n \"url\": \"https://example.com/images/summer-sale.mp4\",\n \"thumbnailUrl\": \"https://example.com/images/summer-sale.jpg\",\n \"isVideo\": true\n }\n }\n },\n \"smsFailover\": \"Check out our latest offers! https://example.com/summer-sale\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.v3.tatango.com/transactional_messages/send_rcs_rich_card")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phoneNumber\": \"5551234567\",\n \"webhookUrl\": \"https://mywebhook.com/recieve\",\n \"rcsPayload\": {\n \"richCard\": {\n \"body\": {\n \"title\": \"Summer Sale!\",\n \"text\": \"Save up to 50% on all summer items. Limited time offer!\",\n \"url\": \"https://example.com/images/summer-sale.mp4\",\n \"thumbnailUrl\": \"https://example.com/images/summer-sale.jpg\",\n \"isVideo\": true\n }\n }\n },\n \"smsFailover\": \"Check out our latest offers! https://example.com/summer-sale\"\n}"
response = http.request(request)
puts response.read_body{
"message": "RCS rich card message sent successfully",
"transactionId": "019687e1-1b54-70f4-a68a-60af7fa776f4"
}{
"$ref": "#/components/examples/PhoneNumberValidationError/value"
}RCS Rich Cards provide interactive messaging experiences with media, text, and action buttons.RCS Rich Card Features:
- Media Support: Images and videos with thumbnails
- Rich Text: Rich text features: Bold, italic, underline, strikethrough and emojis
- Fallback: Automatic SMS fallback if RCS delivery fails
Authorizations
Your momoGood Messaging API key. This is required for all requests to the API. You can find your API key in the momoGood Messaging app under My Account -> API -> Create API Key.
Body
application/json
The RCS Rich Card message request with SMS fallback.
The destination phone number. Can be provided in any format (e.g., +1 555-123-4567, (555) 123-4567, 5551234567) but must be a valid U.S. or Canadian phone number.
URL where webhooks will be sent. Must be a valid HTTPS URL.
Maximum string length:
255Show child attributes
Show child attributes
SMS fallback message content used when primary delivery method fails. Must contain only GSM 7-bit characters.
Required string length:
1 - 160⌘I