RCS is being upgraded

RCS Business Messaging — o irmão mais bonito do SMS.

Rich cards, respostas sugeridas, remetente com marca, confirmações de leitura. Fallback para SMS num único atributo. Mesma autenticação, mesma idempotência, mesmos webhooks de qualquer outro canal Bird — porque a mesma equipa de engenharia construiu todos.

rcs.ts
200 · 0.6s
import { BirdClient } from "@messagebird/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 do npm install ao primeiro envio

Envie uma mensagem rica na linguagem que já utiliza.

SDKs em todos os principais runtimes. O primeiro envio vai para o número de teste autorizado (+15005550006) e faz fallback para SMS automaticamente — para que o check de CI não exija um dispositivo compatível com RCS.

1
2
3
4
5
6
7
8
9
import { BirdClient } from "@messagebird/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();

Dez primitivas entre "text" e uma verdadeira superfície de aplicação.

O RCS é um protocolo mais rico que o SMS. Expomos essa riqueza como primitivas, não como um canvas de design.

  1. 01

    Rich cards

    Título, subtítulo, imagem hero e até 4 ações por card. Carrossel de até 10 cards numa única mensagem.

  2. 02

    Respostas sugeridas

    Chips de toque para responder que enviam uma string conhecida de volta ao seu webhook. Sem adivinhação de NLU do seu lado.

  3. 03

    Remetente com marca

    Identidade empresarial verificada com logótipo, cor e descrição curta no cabeçalho do chat do dispositivo.

  4. 04

    Confirmações de leitura e digitação

    Estados de entrega, leitura e "a digitar" como webhooks — o mesmo formato de envelope de qualquer outro canal.

  5. 05

    Fallback para SMS num único atributo

    Passe fallback: "sms". Se o dispositivo não for compatível com RCS, enviamos de forma transparente a variante de texto.

  6. 06

    Postbacks interativos

    Toques em botões retornam como eventos rcs.replied com a string de postback que definiu. Ligue a uma máquina de estados.

  7. 07

    Anexos de média

    Imagens, vídeo até 100 MB, áudio, PDF, vCard. Nós alojamos o recurso e servimos um URL assinado com TTL.

  8. 08

    Conversa bidirecional

    As respostas de utilizadores chegam como webhooks assinados com HMAC. Mesmo formato que SMS e WhatsApp de entrada.

  9. 09

    Filtragem por operadora e dispositivo

    Verificamos a compatibilidade RCS antes do envio. Se o dispositivo estiver offline ou não for RCS, fazemos fallback automaticamente.

  10. 10

    Mesma autenticação, mesmo envelope de erro

    Uma chave API para RCS, SMS, Email, WhatsApp, Voice. Um único registo de tipos de erro para todos.

Por que desenvolvemos RCS

Porque em 2026 o canal mais barato e o mais rico devem ser o mesmo envio.

Dispositivos RCS recebem um rich card; todos os outros recebem a variante SMS que gerámos a partir do mesmo payload. Operamos SMS há dez anos em 240 ligações diretas a operadoras; o RCS é a mesma camada de encaminhamento com um tipo de payload mais rico e uma flag de fallback. Honestos quanto à cobertura: hoje o RCS funciona em operadoras dos EUA (T-Mobile, Verizon, AT&T) e Brasil; UE e APAC expandem ao longo de 2026. Fora dessa cobertura, a flag de fallback faz o trabalho.

rcs.ts
200 · 0.6s
import { BirdClient } from "@messagebird/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 mudança de estado é um webhook.

Payloads assinados com HMAC, protegidos contra replay, idempotentes. O mesmo envelope em todos os canais Bird — aprenda um e aprendeu todos.

POST /webhooks/bird
signed
{
  "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
  }
}

Agenda de tentativas: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter após a última tentativa; cada evento em dead-letter pode ser reenviado a partir do dashboard ou API.

  • rcs.queuedAceite pela API e em fila para envio.
  • rcs.sentEntregue ao gateway RBM da operadora.
  • rcs.deliveredDispositivo confirmou a receção da mensagem rica.
  • rcs.readDestinatário leu a mensagem (se as confirmações de leitura estiverem ativadas).
  • rcs.repliedUtilizador tocou num chip de resposta sugerida ou enviou uma resposta livre.
  • rcs.fellbackDispositivo não era compatível com RCS; a variante SMS foi enviada em vez disso.
  • rcs.failedFalha permanente antes do envio (destinatário inválido, rejeição da operadora).

Se já integrou SMS, já integrou RCS.

Mesma autenticação, mesmo contrato de idempotência, mesmo envelope de erro, mesmo formato de webhook. A diferença está no payload — não na forma como o chama.

RCS.

rcs
await bird.rcs.send({
  to:       "+15005550006",
  card:     { title: "Your code", subtitle: `Code: ${code}` },
  fallback: "sms",
});

Um verdadeiro card em dispositivos compatíveis com RCS. Fora da cobertura, a flag de fallback encaminha o mesmo payload via SMS.

SMS.

sms
await bird.sms.send({
  from: "Bird",
  to:   "+15005550006",
  text: `Your code is ${code}.`,
});

Dirija-se ao caminho SMS diretamente quando quiser ser explícito. Mesma autenticação, mesmos webhooks, mesma idempotência.

A partir de $0,005 por mensagem + taxas de operadora.

Preço por mensagem RCS entregue. As taxas de mensagem rica da operadora são repassadas e apresentadas como item discriminado na fatura. Envios de fallback SMS são cobrados à tarifa SMS do país de destino. Sem taxa de plataforma, sem taxa por utilizador.

Comece com um canal.
Adicione os outros quando estiver pronto.

Uma chave API de teste é sua imediatamente. A produção é desbloqueada quando você adiciona um método de pagamento e verifica um remetente.

Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours: