RCS Business Messaging — el hermano mejor vestido de SMS.
Tarjetas enriquecidas, respuestas sugeridas, remitente con marca, confirmaciones de lectura. Fallback a SMS con un solo atributo. Misma autenticación, misma idempotencia, mismos webhooks que cualquier otro canal de Bird — porque el mismo equipo de ingeniería los construyó todos.
import { BirdClient } from "@bird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.rcs.send({
to: "+15005550006",
card: {
title: "Your order has shipped",
subtitle: "Arriving Friday, May 22",
image: "https://cdn.example.com/orders/2891.jpg",
buttons: [
{ type: "url", label: "Track package", url: "https://example.com/track/2891" },
{ type: "reply", label: "Reschedule", postback: "reschedule_2891" },
],
},
fallback: "sms",
}).safe();
if (error) throw error;
console.log(data.id);
// → "rcs_4mP82wQ9..."5 minutos desde npm install hasta el primer envío
Envíe un mensaje enriquecido desde el lenguaje que ya usa.
SDKs en todos los runtimes principales. El primer envío va al número de prueba autorizado (+15005550006) y recurre automáticamente a SMS — así el check de CI no requiere un dispositivo compatible con RCS.
import { BirdClient } from "@bird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.rcs.send({
to: "+15005550006",
card: { title: "Hello", subtitle: "From Bird RCS" },
fallback: "sms",
}).safe();Diez primitivas entre "text" y una verdadera superficie de aplicación.
RCS es un protocolo más rico que SMS. Exponemos esa riqueza como primitivas, no como un lienzo de diseño.
- 01
Tarjetas enriquecidas
Título, subtítulo, imagen principal y hasta 4 acciones por tarjeta. Carrusel de hasta 10 tarjetas en un solo mensaje.
- 02
Respuestas sugeridas
Chips de respuesta con un toque que envían una cadena conocida a su webhook. Sin adivinanzas de NLU de su parte.
- 03
Remitente con marca
Identidad empresarial verificada con logo, color y descripción breve en la cabecera del chat del dispositivo.
- 04
Confirmaciones de lectura y escritura
Estados de entrega, lectura y "está escribiendo" como webhooks — la misma estructura de sobre que en cualquier otro canal.
- 05
Fallback a SMS con un solo atributo
Pase fallback: "sms". Si el dispositivo no es compatible con RCS, enviamos la variante de texto de forma transparente.
- 06
Postbacks interactivos
Los toques en botones regresan como eventos rcs.replied con la cadena de postback que usted definió. Conéctelo a una máquina de estados.
- 07
Archivos multimedia adjuntos
Imágenes, video de hasta 100 MB, audio, PDF, vCard. Alojamos el recurso y servimos una URL firmada con TTL.
- 08
Conversación bidireccional
Las respuestas entrantes del usuario llegan como webhooks firmados con HMAC. Misma estructura que SMS entrante y WhatsApp.
- 09
Filtrado por operador y dispositivo
Verificamos la compatibilidad con RCS antes de enviar. Si el dispositivo está sin conexión o no es compatible con RCS, el fallback es automático.
- 10
Misma autenticación, mismo sobre de errores
Una sola clave API para RCS, SMS, Email, WhatsApp, Voice. Un solo registro de tipos de error para todos.
Why we build RCS
Porque en 2026 el canal más barato y el más rico deberían ser el mismo envío.
Los dispositivos RCS reciben una tarjeta enriquecida; el resto recibe la variante SMS que generamos desde el mismo payload. Llevamos diez años operando SMS a través de 240 conexiones directas con operadores; RCS es la misma capa de enrutamiento con un tipo de payload más rico y una bandera de fallback. Honestos sobre la cobertura: hoy RCS llega a operadores de EE. UU. (T-Mobile, Verizon, AT&T) y Brasil; la UE y APAC se expanden a lo largo de 2026. Fuera de esa cobertura, la bandera de fallback hace el trabajo.
import { BirdClient } from "@bird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.rcs.send({
to: "+15005550006",
card: {
title: "Your order has shipped",
subtitle: "Arriving Friday, May 22",
image: "https://cdn.example.com/orders/2891.jpg",
buttons: [
{ type: "url", label: "Track package", url: "https://example.com/track/2891" },
{ type: "reply", label: "Reschedule", postback: "reschedule_2891" },
],
},
fallback: "sms",
}).safe();
if (error) throw error;
console.log(data.id);
// → "rcs_4mP82wQ9..."Cada cambio de estado es un webhook.
Payloads firmados con HMAC, protegidos contra replay, idempotentes. El mismo sobre en cada canal de Bird — aprenda uno y los habrá aprendido todos.
{
"type": "rcs.delivered",
"id": "evt_7nT91x...",
"created_at": "2026-05-19T15:42:01.221Z",
"data": {
"rcs_id": "rcs_4mP82wQ9",
"to": "+15005550006",
"carrier": "T-Mobile USA",
"rich": true,
"latency_ms": 612
}
}Programa de reintentos: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter tras el intento final; cada evento en dead-letter se puede reproducir desde el dashboard o la API.
rcs.queuedAceptado por la API y en cola para envío.rcs.sentEntregado al gateway RBM del operador.rcs.deliveredEl dispositivo confirmó la recepción del mensaje enriquecido.rcs.readEl destinatario leyó el mensaje (si las confirmaciones de lectura están habilitadas).rcs.repliedEl usuario tocó un chip de respuesta sugerida o envió una respuesta libre.rcs.fellbackEl dispositivo no era compatible con RCS; se envió la variante SMS en su lugar.rcs.failedFallo permanente antes del envío (destinatario inválido, rechazo del operador).
Si ya integró SMS, ya integró RCS.
Misma autenticación, mismo contrato de idempotencia, mismo sobre de errores, misma estructura de webhooks. La diferencia está en el payload — no en cómo lo llama.
RCS.
await bird.rcs.send({
to: "+15005550006",
card: { title: "Your code", subtitle: `Code: ${code}` },
fallback: "sms",
});Una tarjeta real en dispositivos compatibles con RCS. Fuera de la cobertura, la bandera de fallback enruta el mismo payload por SMS.
SMS.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your code is ${code}.`,
});Direccione la ruta SMS directamente cuando lo quiera explícito. Misma autenticación, mismos webhooks, misma idempotencia.
Desde $0.005 por mensaje + tarifas del operador.
Precio por mensaje RCS entregado. Las tarifas de mensajes enriquecidos del operador se transfieren directamente y se muestran como línea individual en la factura. Los envíos de fallback por SMS se facturan a la tarifa SMS del país de destino. Sin tarifa de plataforma, sin tarifa por puesto.