RCS

Bird RCS is the RCS Business Messaging API for developers. Rich cards, suggested replies, branded sender, read receipts — and a one-attribute fallback to SMS for the carriers that don't support it yet.

Concept

RCS is what SMS would look like if it were designed in this decade: rich cards with images and buttons, typing indicators, read receipts, a verified sender brand. The carrier coverage is uneven (full US T-Mobile / Verizon / AT&T support, full Brazil, partial EU / APAC through 2026), so every send accepts a fallback: "sms" attribute — when RCS isn't available, the same request ships as SMS without a second integration.

Quickstart

import { BirdClient } from "@bird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const { data, error } = await bird.rcs.send({
  to: "+15005550006",
  from: "BirdShop",
  card: {
    title: "Your order is on its way",
    description: "Order #1024 — arriving Friday by 6pm.",
    media_url: "https://shop.example.com/orders/1024/preview.jpg",
    suggestions: [
      { type: "open_url", text: "Track order", url: "https://shop.example.com/orders/1024" },
      { type: "reply", text: "Reschedule", postback: "reschedule:1024" },
      { type: "dial", text: "Call support", number: "+18005550100" },
    ],
  },
  fallback: "sms",
});

if (error) throw error;
console.log(data.id, data.fell_back_to_sms);

If the recipient's device isn't on a carrier with RCS support, fell_back_to_sms comes back true and the message is delivered as a plain SMS with the card's title + description concatenated. You pay the SMS rate, not the RCS rate, on those.

Coverage

RegionCarrier coverageStatus
United StatesT-Mobile, Verizon, AT&TLive
BrazilVivo, Claro, TIM, OiLive
MexicoTelcel, MovistarLive
United KingdomEE, Vodafone, Three, O2Live
FranceOrange, SFR, BouyguesLive
SpainMovistar, Vodafone, OrangeLive
GermanyDeutsche Telekom, VodafoneLive
IndiaJio, Airtel, ViBeta
IndonesiaTelkomsel, IndosatBeta
Other marketsThrough 2026; SMS fallback handles the gap

We update the matrix monthly. The lookup.line_type field also surfaces RCS capability when known.

Session-window semantics

RCS messages from a business to a user don't require a session window the way WhatsApp templates do — outbound transactional messages send freely, governed by per-carrier rate limits. Inbound replies (from the user back to your business number) open a 24-hour conversation window in which free-form responses are allowed; outside that window the brand can still send templates and notifications.

Fallback to SMS

fallback: "sms" is the one-attribute migration path off SMS-only. The request is unchanged; we route to RCS when we can and SMS when we can't, billed accordingly. Disable it by omitting the field; you'll get route_unavailable on uncovered carriers instead.

Events

rcs.queued      rcs.sent       rcs.delivered    rcs.read
rcs.failed      rcs.inbound    rcs.suggestion_pressed

rcs.suggestion_pressed carries the postback string from the original card — that's how you wire the "Reschedule" reply back into your app without a second integration.

Pricing

From $0.005 per RCS message + carrier fees. SMS fallbacks bill at the SMS rate for that country. See pricing for the full grid.

Empieza con un canal.
Añade los demás cuando estés listo.

Una clave API de prueba es tuya de inmediato. El acceso a producción se desbloquea cuando añades un método de pago y verificas un remitente.

ComenzarLeer documentacióno

¿Usas Claude Code, Cursor o Codex? Apúntalos a nuestro servidor MCP — 141 herramientas, una por endpoint de API, con claves de agente con permisos limitados.