Realtime est en cours de mise à niveau

Pub/sub hébergé via WebSocket. Abonnez-vous, publiez, passez à l'échelle.

Chat en direct, présence, notifications in-app, tableaux de bord en temps réel — sans gérer l'infrastructure WebSocket vous-même. Basé sur la même technologie qui a fait tourner Pusher Channels pendant une décennie. Même authentification, même idempotence, même contrat de webhooks que tous les autres canaux Bird.

realtime.ts
200 · 0.2s
import { BirdClient } from "@messagebird/sdk";

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

// On your server: publish an event to a channel.
const { data, error } = await bird.realtime.publish({
  channel: "orders:BRD-49217",
  event:   "order.shipped",
  data:    { status: "shipped", eta: "Thursday, May 22" },
}).safe();

// In your client: subscribe and receive it live.
const channel = bird.realtime.subscribe("orders:BRD-49217");
channel.on("order.shipped", (event) => render(event.data));

if (error) throw error;
console.log(data.id);
// → "evt_2nQ81oP3..."

5 minutes entre npm install et le premier événement

Publiez votre premier événement dans le langage que vous utilisez déjà.

SDK dans tous les principaux environnements d'exécution. Le premier publish atterrit sur un canal de test dédié (bird-test:realtime) pour que vous puissiez intégrer un check CI avant de provisionner un canal de production.

1
2
3
4
5
6
7
8
9
import { BirdClient } from "@messagebird/sdk";

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

const { data, error } = await bird.realtime.publish({
  channel: "bird-test:realtime",
  event:   "ping",
  data:    { hello: "world" },
}).safe();

Dix étapes entre « votre serveur publie » et « votre client reçoit l'événement ».

Primitives pub/sub hébergées, nommées et auditables. Aucune infrastructure WebSocket à gérer vous-même.

  1. 01

    Abonnez-vous à des canaux nommés

    Les clients ouvrent une connexion, s'abonnent à un ou plusieurs canaux et reçoivent les événements dès leur publication.

  2. 02

    Publiez depuis n'importe où

    Depuis votre backend, votre CLI, votre CI ou un agent compatible MCP — le même appel bird.realtime.publish.

  3. 03

    Canaux de présence

    Sachez qui est dans un canal, qui a rejoint, qui est parti. Événements webhook à chaque changement.

  4. 04

    Canaux privés avec authentification

    Handshake d'authentification côté client ; votre backend signe la demande d'abonnement.

  5. 05

    Canaux chiffrés

    Chiffrement de bout en bout pour les canaux transportant des données sensibles.

  6. 06

    Récupération de l'état de connexion

    Les clients se reconnectent et rejouent les événements manqués pendant la déconnexion, dans une fenêtre configurable.

  7. 07

    Limites de débit par canal

    Plafonds de publication configurables par canal. Le tableau de bord affiche la limite et le débit actuel.

  8. 08

    Routage inter-régions

    Les connexions sont automatiquement routées vers le nœud edge le plus proche. La latence reste faible dans toutes les régions.

  9. 09

    Webhooks sur l'état des canaux

    realtime.channel.occupied, realtime.channel.vacated, realtime.member.added, realtime.member.removed. Même enveloppe HMAC que tous les autres canaux Bird.

  10. 10

    Même authentification, même format d'erreur

    Une seule clé API pour Realtime, SMS, Email, WhatsApp, Voice. Un seul registre de types d'erreur pour tous.

Pourquoi nous développons Realtime

L'expérience utilisateur en temps réel est la première à casser quand vous passez à l'échelle. Nous la gérons depuis une décennie.

Bird Realtime est l'infrastructure WebSocket qui faisait tourner Pusher Channels — le service contre lequel nombre d'entre vous développent depuis des années. Nous l'intégrons à la nouvelle API Bird afin qu'il partage l'authentification, l'observabilité et la facturation avec tout ce que vous faites sur Bird. Si vous êtes déjà sur Pusher aujourd'hui, votre service continue de fonctionner sur les mêmes infrastructures ; le nouveau SDK est le changement côté développeur.

realtime.ts
200 · 0.2s
import { BirdClient } from "@messagebird/sdk";

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

// On your server: publish an event to a channel.
const { data, error } = await bird.realtime.publish({
  channel: "orders:BRD-49217",
  event:   "order.shipped",
  data:    { status: "shipped", eta: "Thursday, May 22" },
}).safe();

// In your client: subscribe and receive it live.
const channel = bird.realtime.subscribe("orders:BRD-49217");
channel.on("order.shipped", (event) => render(event.data));

if (error) throw error;
console.log(data.id);
// → "evt_2nQ81oP3..."

Chaque changement d'état est un webhook.

Payloads signés par HMAC, protégés contre le rejeu, idempotents. La même enveloppe sur tous les canaux Bird — apprenez-en un, vous les connaissez tous.

POST /webhooks/bird
signed
{
  "type": "realtime.member.added",
  "id":   "evt_3pX1g7t...",
  "created_at": "2026-05-19T15:42:01.221Z",
  "data": {
    "channel":   "presence:room-42",
    "member_id": "usr_4hQ2m",
    "members":   18,
    "region":    "us-east"
  }
}

Calendrier de réessai : 5s, 30s, 5m, 30m, 2h, 6h, 12h. Mise en file d'attente morte après la dernière tentative ; chaque événement en file d'attente morte est rejouable depuis le tableau de bord ou l'API.

  • realtime.channel.occupiedLe premier abonné a rejoint un canal précédemment vide.
  • realtime.channel.vacatedLe dernier abonné est parti ; le canal est désormais vide.
  • realtime.member.addedUn membre a rejoint un canal de présence.
  • realtime.member.removedUn membre a quitté un canal de présence.
  • realtime.message.publishedUn événement a été publié sur un canal.

Si vous avez intégré l'e-mail, vous avez intégré Realtime.

Même authentification, même contrat d'idempotence, même enveloppe d'erreur, même format de webhook. La différence, c'est le transport — une connexion WebSocket persistante au lieu d'un envoi REST ponctuel.

Realtime.

realtime
const channel = bird.realtime.subscribe("orders:BRD-49217");

channel.on("order.shipped", (event) => {
  render(event.data);
});

Ouvrez une connexion, abonnez-vous à un canal, recevez les événements en temps réel. Même authentification que vos envois transactionnels.

SMS.

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

Même enveloppe, même idempotence. Pour quand l'événement doit arriver sur un téléphone, pas dans un client connecté.

Tarifs bientôt annoncés.

Les tarifs de Realtime sont en cours de finalisation. Si vous êtes déjà client Pusher Channels, votre service reste sur son offre actuelle. Pour un devis sur le nouveau SDK Bird Realtime, contactez-nous.

Rejoindre la liste d'attente

Commencez avec un seul canal.
Ajoutez les autres quand vous êtes prêt.

Une clé API de test est disponible immédiatement. L'accès production se débloque dès que vous ajoutez un moyen de paiement et vérifiez un expéditeur.

Vous utilisez Claude Code, Cursor ou Codex ? Copiez un prompt de configuration et votre agent installe la CLI Bird et les compétences pour vous. Choisissez le vôtre :

Cursor