BIRD Realtime

Realtime API für Ihre Apps. Abonnieren, veröffentlichen, skalieren.

Einrichtung in:
Cursor

Live-Chat, Präsenz, In-App-Benachrichtigungen und Echtzeit-Dashboards – ohne die WebSocket-Infrastruktur selbst betreiben zu müssen.

app.ts
connected
import { BirdRealtime } from "@messagebird/realtime";

const bird = new BirdRealtime({
  appKey: APP_KEY,
  region: "us1",
});

const channel = bird.subscribe("orders-42");

channel.bind("order-shipped", (data) => {
  render(data);
});
Order BRD-49217Placed
ETAThursday, May 22

5 Minuten von npm install bis zum ersten Event

Publizieren Sie Ihr erstes Event in der Sprache, die Sie bereits nutzen.

Server-SDKs für Node, Python und Go, ein Browser-Client für die Empfangsseite und einfaches HTTP, wenn Sie lieber keine Abhängigkeit hinzufügen möchten. Ein Channel muss nicht provisioniert werden: Er existiert, sobald etwas ihn abonniert.

1
2
3
4
5
6
const result = await bird.realtime.publish("rap_01krdgeqcxet5s7t44vh8rt9mg", {
  event: "order.updated",
  channels: ["orders", "presence-lobby"],
  data: { order_id: "ord_123", status: "shipped" },
});
console.log(result.data?.length); // one entry per channel

Was Sie mit Realtime entwickeln können

Bringen Sie Live-Updates in jeden Bereich Ihres Produkts – von Chat und Dashboards bis hin zu Tracking und Spielen – alles über eine einzige, einfache API.

  1. 01

    Live-Ergebnisse und Spielstände

    Spielstände, Umfrageergebnisse, Wahlabende: Ein einziger Publish-Aufruf verteilt die neue Zahl gleichzeitig an jeden abonnierten Bildschirm.

  2. 02

    In-App-Chat

    Ein Channel pro Raum, Präsenz für Online-Status und Client-Events für Tipp-Indikatoren – ohne Server-Roundtrip.

  3. 03

    Online-Zusammenarbeit

    Client-Events verteilen Cursorpositionen, Markierungen und Co-Editing-Signale zwischen Teilnehmern über den Channel – ohne Umweg über das Backend.

  4. 04

    Multiplayer-Spiele

    Präsenz füllt die Lobby, Client-Events übertragen die Züge, und ein Channel pro Match hält den Spielstand für jeden Spieler aktuell.

  5. 05

    Live-Charts und Dashboards

    Veröffentlichen Sie Metriken, sobald sie sich ändern. Ein Cache-Channel übergibt den aktuellen Wert an jeden Nachzügler, sodass Charts nie leer gerendert werden.

  6. 06

    Präsenz-Indikatoren

    Präsenz-Channels verfolgen Mitglieder beim Beitreten und Verlassen; Webhooks halten die Teilnehmerliste Ihres Backends synchron.

  7. 07

    Live-Standortverfolgung

    Ein Kurier auf der Karte des Kunden, Freunde, die eine Route teilen, eine Flotte auf dem Disposition-Bildschirm: Veröffentlichen Sie Koordinaten, und jeder Beobachter folgt – mit der letzten bekannten Position im Cache für Nachzügler.

  8. 08

    Bestell- und Lieferstatus

    Ein Cache-Channel pro Bestellung hält den aktuellen Status bereit, sodass das Abonnement gleichzeitig als initialer Statusabruf dient.

  9. 09

    Auktionen und Gebote

    Jedes Gebot erscheint gleichzeitig auf dem Bildschirm aller Bieter, und ein Cache-Channel übergibt das aktuelle Höchstgebot an jeden, der mitten in der Auktion beitritt.

  10. 10

    Benachrichtigungs-Feeds pro Nutzer

    Ein privater Channel pro Nutzer, Abonnements von Ihrem Backend signiert – so kann nur der richtige Client zuhören.

Warum Realtime

Live-UX ist der Teil, der beim Skalieren zuerst ausfällt. Wir betreiben ihn seit über einem Jahrzehnt.

Verbindungsstatus, Präsenz, Fan-out, Reconnection-Backoff und die Kapazität, Lastspitzen abzufangen – das sind die Teile eines Live-Features, die leicht zu prototypisieren, aber schwer zu betreiben sind. Realtime führt sie als Managed Service innerhalb der Bird API aus, sodass ein Live-Channel dieselbe Authentifizierung, Observability und Webhooks nutzt, die Sie bereits für E-Mail und SMS verwenden.

presence.ts
18 members
const room = bird.subscribe("presence-room-42");

room.bind("bird:subscription_succeeded", () => {
  const members = [...room.members.values()];
  render({ me: room.myId, members });
});

room.bind("bird:member_added", (member) => {
  addToRoster(member.member_id);
});

room.bind("bird:member_removed", (member) => {
  removeFromRoster(member.member_id);
});

Jede Statusänderung ist ein Webhook.

Clients kommen und gehen, ohne je Ihr Backend zu berühren. So erfährt es davon: Starten Sie den aufwändigen Job, wenn der erste Subscriber eintrifft, stoppen Sie ihn, wenn der letzte geht, und behalten Sie Ihre eigene Übersicht darüber, wer sich in einem Raum befindet.

POST /webhooks/bird
signed
{
  "type": "realtime.member_added",
  "timestamp": "2026-05-19T15:42:01.221Z",
  "data": {
    "channel": "presence-room-42",
    "member_id": "usr_4hQ2m"
  }
}
  • realtime.channel_occupiedErster Subscriber hat einen zuvor leeren Channel betreten.
  • realtime.channel_vacatedDer letzte Subscriber hat den Channel verlassen; der Channel ist jetzt leer.
  • realtime.member_addedEin Mitglied ist einem Presence-Channel beigetreten.
  • realtime.member_removedEin Mitglied hat einen Presence-Channel verlassen.
  • realtime.connection_countDie Verbindungsanzahl eines Channels hat sich geändert.

Wenn Sie E-Mail integriert haben, haben Sie auch Realtime integriert.

Dieselbe Authentifizierung, derselbe Idempotenz-Vertrag, dasselbe Fehler-Envelope, dasselbe Webhook-Format. Der Unterschied ist der Transport: eine langlebige WebSocket-Verbindung statt eines einmaligen REST-Sends.

Realtime.

realtime
await bird.realtime.members.send(APP_ID, "usr_4hQ2m", {
  event: "order-shipped",
  data:  { status: "shipped" },
});

Erreicht die Person überall dort, wo sie verbunden ist – auf jedem Tab und jedem Gerät gleichzeitig. Kein Channel-Name, keine Verbindung zum Nachverfolgen.

SMS.

sms
await bird.sms.send({
  from:     "Bird",
  to:       "+15005550006",
  text:     `Your order has shipped.`,
  category: "transactional",
});

Derselbe Aufruf, nur ein anderer Kanal. Für den Fall, dass das Update auf einem Telefon statt auf einem verbundenen Client ankommen soll.

Starten Sie mit einem Kanal.
Fügen Sie die anderen hinzu, wenn Sie bereit sind.

Ein Test-API-Key steht Ihnen sofort zur Verfügung. Der Produktivzugang wird freigeschaltet, sobald Sie eine Zahlungsmethode hinzufügen und einen Absender verifizieren.

Sie nutzen Claude Code, Cursor oder Codex? Kopieren Sie einen Setup-Prompt und Ihr Agent installiert die Bird CLI und Skills für Sie. Wählen Sie Ihren:

Cursor