RCS Business Messaging — het knapere broertje van SMS.
Rich cards, suggesties voor antwoorden, branded afzender, leesbevestigingen. Terugval naar SMS in één attribuut. Dezelfde authenticatie, dezelfde idempotentie, dezelfde webhooks als elk ander Bird-kanaal — omdat hetzelfde engineeringteam ze allemaal heeft gebouwd.
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 minuten van npm install tot eerste verzending
Verstuur een rich message vanuit de taal die je al gebruikt.
SDK's in elke grote runtime. De eerste verzending gaat naar het goedgekeurde testnummer (+15005550006) en valt automatisch terug op SMS — zodat de CI-check geen RCS-compatibel toestel vereist.
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();Tien primitieven tussen "tekst" en een echte app-interface.
RCS is een rijker protocol dan SMS. We bieden de rijkdom aan als primitieven, niet als een designer-canvas.
- 01
Rich cards
Titel, ondertitel, hero-afbeelding en tot 4 acties per card. Carrousel met tot 10 cards in één bericht.
- 02
Suggesties voor antwoorden
Tik-om-te-antwoorden-chips die een bekende string terugsturen naar je webhook. Geen NLU-giswerk aan jouw kant.
- 03
Branded afzender
Geverifieerde bedrijfsidentiteit met logo, kleur en korte beschrijving in de chatheader van het toestel.
- 04
Leesbevestigingen en typindicatie
Bezorgd-, gelezen- en "is aan het typen"-statussen als webhooks — dezelfde envelopstructuur als elk ander kanaal.
- 05
Terugval naar SMS in één attribuut
Geef fallback: "sms" mee. Als het toestel niet RCS-compatibel is, versturen we transparant de tekstvariant.
- 06
Interactieve postbacks
Knoptikken komen terug als rcs.replied events met de postback-string die je hebt ingesteld. Koppel aan een state machine.
- 07
Media-bijlagen
Afbeeldingen, video tot 100 MB, audio, PDF, vCard. Wij hosten het bestand en serveren een ondertekende URL met TTL.
- 08
Tweerichtingsgesprek
Inkomende antwoorden van gebruikers komen binnen als HMAC-ondertekende webhooks. Dezelfde structuur als inkomende SMS en WhatsApp.
- 09
Carrier- en apparaatgating
We controleren RCS-compatibiliteit vóór verzending. Als het apparaat offline of niet-RCS is, vallen we automatisch terug.
- 10
Dezelfde authenticatie, dezelfde fout-envelope
Eén API-sleutel voor RCS, SMS, Email, WhatsApp, Voice. Eén foutentype-register voor ze allemaal.
Why we build RCS
Want in 2026 zouden het goedkoopste kanaal en het rijkste kanaal dezelfde verzending moeten zijn.
RCS-toestellen krijgen een rich card; alle anderen krijgen de SMS-variant die we uit dezelfde payload hebben gegenereerd. We draaien SMS al tien jaar via 240 directe carrierverbindingen; RCS is dezelfde routeringslaag met een rijker payloadtype en een terugvalvlag. Eerlijk over dekking: vandaag komt RCS aan bij Amerikaanse carriers (T-Mobile, Verizon, AT&T) en Brazilië; EU en APAC breiden uit in 2026. Buiten dat bereik doet de terugvalvlag het werk.
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..."Elke statuswijziging is een webhook.
HMAC-ondertekende payloads, replay-beveiligd, idempotent. Dezelfde envelope op elk Bird-kanaal — leer er één, en je kent ze allemaal.
{
"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
}
}Herhalingsschema: 5s, 30s, 5m, 30m, 2u, 6u, 12u. Dead-letter na de laatste poging; elk dead-lettered event is opnieuw afspeelbaar vanuit het dashboard of de API.
rcs.queuedGeaccepteerd door de API en in de wachtrij voor verzending.rcs.sentOvergedragen aan de carrier RBM-gateway.rcs.deliveredToestel heeft ontvangst van het rich message bevestigd.rcs.readOntvanger heeft het bericht gelezen (als leesbevestigingen zijn ingeschakeld).rcs.repliedGebruiker heeft op een suggestie-chip getikt of een vrij antwoord gestuurd.rcs.fellbackToestel was niet RCS-compatibel; de SMS-variant is in plaats daarvan verzonden.rcs.failedPermanente fout vóór verzending (ongeldige ontvanger, carrier-weigering).
Als je SMS hebt geïntegreerd, heb je RCS geïntegreerd.
Dezelfde authenticatie, hetzelfde idempotentiecontract, dezelfde fout-envelope, dezelfde webhookstructuur. Het verschil zit in de payload — niet in hoe je het aanroept.
RCS.
await bird.rcs.send({
to: "+15005550006",
card: { title: "Your code", subtitle: `Code: ${code}` },
fallback: "sms",
});Een echte card op RCS-compatibele apparaten. Buiten het bereik routeert de terugvalvlag dezelfde payload via SMS.
SMS.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your code is ${code}.`,
});Adresseer het SMS-pad direct wanneer je het expliciet wilt. Dezelfde authenticatie, dezelfde webhooks, dezelfde idempotentie.
Vanaf $0,005 per bericht + carrierkosten.
Prijs per afgeleverd RCS-bericht. Carrier-kosten voor rich messages worden doorberekend en als regelpost op de factuur getoond. Terugval-SMS-berichten worden gefactureerd tegen het SMS-tarief van het bestemmingsland. Geen platformkosten, geen licentiekosten per gebruiker.