O RCS está a ser atualizado

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

Rich cards, suggested replies, branded sender, read receipts. Fall back to SMS in one attribute. Same auth, same idempotency, same webhooks as every other Bird channel, because the same engineering team built them all.

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 in every major runtime. The first send goes to the sanctioned test number (+15005550006) and falls back to SMS automatically, so the CI check doesn't require an RCS-capable handset.

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

    Delivery, read, and "is typing" states as webhooks, the same envelope shape as every other channel.

  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.

HMAC-signed payloads, replay-protected, idempotent. The same envelope on every Bird channel: learn one, you've learned them all.

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.

Same auth, same idempotency contract, same error envelope, same webhook shape. The difference is the payload, not how you call it.

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}.`,
  category: "authentication",
});

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.

Usa Claude Code, Cursor ou Codex? Copie um prompt de configuração e o seu agente instala o Bird CLI e as skills por si. Escolha o seu:

Cursor