O Realtime está a ser atualizado

Pub/sub hospedado sobre WebSocket. Subscreva, publique, escale.

Chat ao vivo, presença, notificações in-app, dashboards em tempo real — sem gerir a infraestrutura WebSocket. Construído com a mesma tecnologia que sustentou o Pusher Channels durante uma década. A mesma autenticação, a mesma idempotência, o mesmo contrato de webhooks de qualquer outro canal 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 minutos do npm install ao primeiro evento

Publique o seu primeiro evento na linguagem que já utiliza.

SDKs em todos os principais runtimes. O primeiro publish chega a um canal de teste autorizado (bird-test:realtime) para que possa validar num CI check antes de provisionar um canal de produção.

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();

Dez passos entre "o seu servidor publica" e "o seu cliente recebe o evento."

Primitivas pub/sub hospedadas, nomeadas e auditáveis. Sem infraestrutura WebSocket para gerir.

  1. 01

    Subscreva canais nomeados

    Os clientes abrem uma conexão, subscrevem um ou mais canais e recebem eventos à medida que são publicados.

  2. 02

    Publique de qualquer lugar

    Do seu backend, da sua CLI, do seu CI ou de um agente compatível com MCP — a mesma chamada bird.realtime.publish.

  3. 03

    Canais de presença

    Saiba quem está num canal, quem entrou, quem saiu. Eventos de webhook em cada alteração.

  4. 04

    Canais privados com autenticação

    Handshake de autenticação no cliente; o seu backend assina o pedido de subscrição.

  5. 05

    Canais encriptados

    Encriptação ponta a ponta para canais que transportam dados sensíveis.

  6. 06

    Recuperação de estado da conexão

    Os clientes reconectam e reproduzem eventos perdidos durante a desconexão, até uma janela configurável.

  7. 07

    Rate limits ao nível do canal

    Limites de publicação configuráveis por canal. O dashboard mostra o limite e a taxa atual.

  8. 08

    Encaminhamento entre regiões

    As conexões são encaminhadas automaticamente para o nó edge mais próximo. As latências mantêm-se baixas em qualquer região.

  9. 09

    Webhooks sobre o estado do canal

    realtime.channel.occupied, realtime.channel.vacated, realtime.member.added, realtime.member.removed. O mesmo envelope HMAC de qualquer outro canal Bird.

  10. 10

    A mesma autenticação, o mesmo envelope de erro

    Uma API key para Realtime, SMS, Email, WhatsApp, Voice. Um único registo de tipos de erro para todos.

Porque construímos o Realtime

A UX em tempo real é a primeira coisa que falha quando se escala. Gerimo-la há uma década.

Bird Realtime é a infraestrutura WebSocket que sustentou o Pusher Channels — o serviço com o qual muitos de vocês já trabalham há anos. Estamos a integrá-lo na nova API Bird para que partilhe autenticação, observabilidade e faturação com tudo o resto que fazem no Bird. Se já utilizam o Pusher, o vosso serviço continua a correr nos mesmos canais; o novo SDK é a mudança visível para o programador.

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

Cada mudança de estado é um webhook.

Payloads assinados com HMAC, protegidos contra replay, idempotentes. O mesmo envelope em todos os canais Bird — aprenda um, aprendeu todos.

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

Agenda de retentativas: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter após a tentativa final; cada evento em dead-letter pode ser reenviado pelo painel ou API.

  • realtime.channel.occupiedO primeiro subscritor juntou-se a um canal anteriormente vazio.
  • realtime.channel.vacatedO último subscritor saiu; o canal está agora vazio.
  • realtime.member.addedUm membro juntou-se a um canal de presença.
  • realtime.member.removedUm membro saiu de um canal de presença.
  • realtime.message.publishedUm evento foi publicado num canal.

Se você já integrou e-mail, já integrou o Realtime.

Mesma autenticação, mesmo contrato de idempotência, mesmo envelope de erro, mesmo formato de webhook. A diferença é o transporte — uma conexão WebSocket persistente em vez de um envio REST pontual.

Realtime.

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

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

Abra uma conexão, inscreva-se em um canal e receba eventos em tempo real. Mesma autenticação dos seus envios transacionais.

SMS.

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

Mesmo envelope, mesma idempotência. Para quando o evento precisa chegar a um telefone, não a um cliente conectado.

Preços em breve.

Os preços do Realtime estão sendo finalizados. Se você já é cliente do Pusher Channels, seu serviço permanece no plano atual. Para um orçamento do novo Bird Realtime SDK, entre em contato.

Entrar na lista de espera

Comece com um canal.
Adicione os outros quando estiver pronto.

Uma chave API de teste é sua imediatamente. A produção é desbloqueada quando você adiciona um método de pagamento e verifica um remetente.

Usa Claude Code, Cursor ou Codex? Copie um prompt de configuração e o seu agente instala o Bird CLI e as skills por si. Escolha o seu:

Cursor