RCS is being upgraded

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.

rcs.ts
200 · 0.6s
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.

1
2
3
4
5
6
7
8
9
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.

  1. 01

    Rich cards

    Titel, ondertitel, hero-afbeelding en tot 4 acties per card. Carrousel met tot 10 cards in één bericht.

  2. 02

    Suggesties voor antwoorden

    Tik-om-te-antwoorden-chips die een bekende string terugsturen naar je webhook. Geen NLU-giswerk aan jouw kant.

  3. 03

    Branded afzender

    Geverifieerde bedrijfsidentiteit met logo, kleur en korte beschrijving in de chatheader van het toestel.

  4. 04

    Leesbevestigingen en typindicatie

    Bezorgd-, gelezen- en "is aan het typen"-statussen als webhooks — dezelfde envelopstructuur als elk ander kanaal.

  5. 05

    Terugval naar SMS in één attribuut

    Geef fallback: "sms" mee. Als het toestel niet RCS-compatibel is, versturen we transparant de tekstvariant.

  6. 06

    Interactieve postbacks

    Knoptikken komen terug als rcs.replied events met de postback-string die je hebt ingesteld. Koppel aan een state machine.

  7. 07

    Media-bijlagen

    Afbeeldingen, video tot 100 MB, audio, PDF, vCard. Wij hosten het bestand en serveren een ondertekende URL met TTL.

  8. 08

    Tweerichtingsgesprek

    Inkomende antwoorden van gebruikers komen binnen als HMAC-ondertekende webhooks. Dezelfde structuur als inkomende SMS en WhatsApp.

  9. 09

    Carrier- en apparaatgating

    We controleren RCS-compatibiliteit vóór verzending. Als het apparaat offline of niet-RCS is, vallen we automatisch terug.

  10. 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.

rcs.ts
200 · 0.6s
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.

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
  }
}

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.

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.

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.

Begin met één kanaal.
Voeg de rest toe wanneer je er klaar voor bent.

Een test-API-key is direct beschikbaar. Productietoegang wordt ontgrendeld zodra je een betaalmethode toevoegt en een afzender verifieert.

Aan de slagLees de docsof

Using Claude Code, Cursor, or Codex? Point it at our MCP server — tools for every channel we expose, with scoped agent keys.

Cursor