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
| Region | Carrier coverage | Status |
|---|---|---|
| United States | T-Mobile, Verizon, AT&T | Live |
| Brazil | Vivo, Claro, TIM, Oi | Live |
| Mexico | Telcel, Movistar | Live |
| United Kingdom | EE, Vodafone, Three, O2 | Live |
| France | Orange, SFR, Bouygues | Live |
| Spain | Movistar, Vodafone, Orange | Live |
| Germany | Deutsche Telekom, Vodafone | Live |
| India | Jio, Airtel, Vi | Beta |
| Indonesia | Telkomsel, Indosat | Beta |
| Other markets | — | Through 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.