Jedno API do każdego
wysłanego e-maila.

Transakcyjne czy marketingowe, jedna wiadomość czy sto — wysyłane przez to samo Email API, z wbudowaną idempotencją, listą blokad i webhookami. Przekaż surowy HTML lub wyrenderuj szablony React Email.

welcome.tsx
200 · 1.2s
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";

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

const { data, error } = await bird.email.send({
  from:    "Bird <hello@bird.com>",
  to:      ["ada@example.com"],
  subject: "Your invite is ready",
  html:    await render(<WelcomeEmail name="Ada" />),
}).safe();

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

Wysyłasz już przez SMTP?

Zachowaj istniejącego klienta SMTP i połącz go z przekaźnikiem Bird. Na stronie konfiguracji SMTP znajdziesz regionalne hosty, porty TLS i uwierzytelnianie. Jeśli Twoja aplikacja musi odbierać i przetwarzać wiadomości, zacznij od poczty przychodzącej.

Wyślij pierwszego e-maila w pięć minut.

Z języka, którego już używasz.

Wysyłanie to rdzeń Bird Email API. Pierwszą wiadomość możesz wysłać na adres sandbox (delivered@messagebird.dev), dzięki czemu przetestujesz całą platformę (wysyłanie, webhooki, listy blokad), zanim zweryfikujesz domenę.

1
2
3
4
5
6
7
const msg = await bird.email.send({
  from: { email: "onboarding@messagebird.dev", name: "Bird" },
  to: ["delivered@messagebird.dev"],
  subject: "Hello from Bird",
  html: "<p>My first Bird email.</p>",
});
console.log(msg.id, msg.status); // "em_…", "accepted"

Pięć rzeczy, których nie musisz budować sam.

Ten sam kontrakt na każdym kanale Bird.

  1. 01

    Transakcyjne + marketingowe.

    Ten sam endpoint wysyła reset hasła albo kampanię. Pole kategorii decyduje, jak działają listy blokad i rezygnacje z subskrypcji.

  2. 02

    Szablony po twojemu.

    Przekaż surowy HTML, wyrenderuj szablony React Email do HTML w swojej aplikacji i wyślij wynik, albo podaj nazwę zapisanego szablonu, a zostanie wyrenderowany za ciebie. Twój toolchain, bez zmian.

  3. 03

    Wyślij do 100 w jednej paczce.

    Do 100 niezależnych wiadomości w jednym wywołaniu, każda z własnym odbiorcą i zmiennymi, walidowana jako jedna całość — nigdy nie wyślesz połowy.

  4. 04

    Idempotencja w kontrakcie.

    Każde wysłanie przyjmuje klucz idempotencji, więc ponowione żądanie po timeoucie zwraca oryginalny wynik zamiast wysyłać wiadomość podwójnie.

  5. 05

    Webhook przy każdej zmianie stanu.

    Zaakceptowana, dostarczona, otwarta, kliknięta, odrzucona, zgłoszona. Każdy webhook podpisany HMAC, chroniony przed powtórzeniem, idempotentny — ta sama struktura na każdym kanale.

Wyślij pierwsze żądanie ze swojej aplikacji.

Utwórz konto i klucz API, a następnie wyślij wiadomość testową zgodnie z instrukcją wysyłki.

Rozpocznij

Wysyłasz już gdzie indziej? Przejdź w jedno popołudnie.

Wywołanie, które już wykonujesz, prawie się nie zmienia: podmień klienta, zachowaj szablony, przekieruj webhooki na jeden endpoint. Przewodniki migracji obejmują SendGrid, Amazon SES, Mailgun i Resend.

sendgrid.ts
SendGrid
import sgMail from "@sendgrid/mail";

sgMail.setApiKey(process.env.SENDGRID_API_KEY!);

await sgMail.send({
  from:    "hello@yourdomain.com",
  to:      "delivered@messagebird.dev",
  subject: "Your invite is ready",
  html:    "<p>Welcome aboard, Ada.</p>",
});
bird.ts
Bird
import { BirdClient } from "@messagebird/sdk";

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

await bird.email.send({
  from:    "hello@yourdomain.com",
  to:      ["delivered@messagebird.dev"],
  subject: "Your invite is ready",
  html:    "<p>Welcome aboard, Ada.</p>",
});

Jedna wiadomość albo sto, jedno wywołanie.

Wyślij do 100 niezależnych wiadomości w jednym żądaniu, każdą z własnym odbiorcą i zmiennymi. Paczka jest walidowana jako całość: jedna błędna wiadomość odrzuca wywołanie z kodem 422, więc nigdy nie wyślesz połowy. Jeden klucz idempotencji sprawia, że całe żądanie można bezpiecznie ponowić.

digest.ts
202 · batch
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { Digest } from "./emails/digest";

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

const messages = await Promise.all(
  users.map(async (u) => ({
    from:    "Acme <hello@yourdomain.com>",
    to:      [u.email],
    subject: "Your weekly digest",
    html:    await render(<Digest user={u} />),
  })),
);

const { data: batch, error } = await bird.email
  .sendBatch(messages)
  .safe();

if (error) throw error;
console.log(`queued ${batch.data.length} messages`);

Dołącz własny kontekst do każdego wysłania.

Tagi to pełnoprawny, filtrowalny wymiar: podziel dane o dostarczaniu i zaangażowaniu według kampanii, szablonu lub eksperymentu w statystykach API (do 20 na wiadomość). Metadane to dowolny JSON, do 2 KB, który wraca nietknięty przy każdym odczycie i webhooku, dzięki czemu twoje własne identyfikatory podróżują razem z wiadomością.

tagged.ts
await bird.email.send({
  from:     "Acme <hello@yourdomain.com>",
  to:       ["delivered@messagebird.dev"],
  subject:  "Your invite is ready",
  html:     "<p>Welcome aboard, Ada.</p>",
  tags:     [{ name: "campaign", value: "spring-2026" }],
  metadata: { user_id: "u_2bX91", order_id: "ord_5512" },
});

Śledź każdą wiadomość przez cały jej cykl życia.

Wysłanie zwraca 202 natychmiast; wynik dociera jako webhook per odbiorca. Zweryfikuj jeden podpis, rozróżnij po typie: ta sama struktura, którą już obsługujesz dla SMS, głosu i WhatsApp.

app/api/webhooks/bird/route.ts
signed
import { bird } from "@/lib/bird";

export async function POST(req: Request) {
  const event = bird.webhooks.unwrap(
    await req.text(),
    Object.fromEntries(req.headers),
  );

  switch (event.type) {
    case "email.delivered":
      await markDelivered(event.data.email_id);
      break;
    case "email.bounced":
      await flag(event.data.recipient, event.data.bounce_type);
      break;
  }

  return new Response(null, { status: 204 });
}

Twarde odbicia i skargi aktualizują listę blokad odbiorców. Wypisania rejestrują rezygnację. Te wpisy są sprawdzane przy przetwarzaniu kolejnych wysyłek.

  • email.acceptedWiadomość została zaakceptowana i jest przygotowywana do dostarczenia.
  • email.processedW kolejce do serwera pocztowego odbiorcy.
  • email.deliveredSerwer pocztowy odbiorcy zaakceptował wiadomość.
  • email.deferredTymczasowo odrzucona, ponowimy próbę.
  • email.bouncedTrwałe niepowodzenie: typ odrzucenia i kod SMTP w ładunku.
  • email.openedOdbiorca otworzył wiadomość. Może wystąpić więcej niż raz.
  • email.clickedOdbiorca kliknął śledzony link.
  • email.complainedOdbiorca zgłosił wiadomość jako spam.
  • email.unsubscribedOdbiorca zrezygnował z subskrypcji przez śledzony link rezygnacji.

Przetestuj każdy scenariusz, zanim wdrożysz na produkcję.

W sandboxie adres odbiorcy decyduje o wyniku, więc stan twojego konta nie musi. Wyślij na delivered@messagebird.dev, aby uzyskać czyste dostarczenie, lub na bounce@, softbounce@, deferred@, complaint@ i suppressed@, aby przeprowadzić każdą ścieżkę błędu przez prawdziwy pipeline i prawdziwe webhooki. Bez domeny do weryfikacji, bez ryzyka dla twojej reputacji. Produkcja jest celowo ograniczona: najpierw weryfikujesz domenę, a nowa domena lub dedykowany IP przechodzi warmup, zanim przejmie pełny wolumen.

Dowiedz się więcej w dokumentacji.

Przeczytaj przewodnik wysyłania, skonfiguruj zdarzenia e-mail i webhooki lub, jeśli przechodzisz od innego dostawcy, skorzystaj z przewodnika migracji z SendGrid, SES, Mailgun lub Resend.

Przetestuj zachowanie związane z wysyłką.

Działające wywołanie wysyłki to początek integracji. Przećwicz obsługę odbić i skarg, obsłuż zduplikowane dostarczenia webhooków i zdecyduj, jak Twoja aplikacja planuje wiadomości lub odbiera odpowiedzi.

161%

Wzrost wskaźnika otwarć e-maili opisany w historii klienta Zillow.

Przeczytaj historię Zillow

Zbudowane z Bird

Gdy pojawia się właściwy dom, e-mail musi dotrzeć na czas.

Zillow przeniósł czasowo wrażliwe powiadomienia o nieruchomościach do Bird, zyskując możliwość obsługi nagłych wzrostów wysyłki i analitykę do analizy zaangażowania. Zespół odnotował 161% wzrost wskaźnika otwarć w pierwszym miesiącu.

Planujesz migrację lub wysyłkę na większą skalę?

Skontaktuj się z działem sprzedaży

Pytania o wysyłkę e-mail

Czy mogę wysyłać zarówno e-maile transakcyjne, jak i marketingowe?
Tak, oba rodzaje przechodzą przez to samo API wysyłki. Jedyna różnica to pole category, które decyduje o tym, jak stosowane są wyciszenia (suppressions) i rezygnacje z subskrypcji. Wybierz transactional dla resetowania haseł i potwierdzeń, a marketing dla kampanii.
Co się stanie, jeśli żądanie przekroczy limit czasu i ponowię je?
Wysyłaj nagłówek Idempotency-Key z każdym logicznym wysłaniem. Jeśli pierwsze żądanie zakończyło się sukcesem, ale nie otrzymałeś odpowiedzi, ponowienie z tym samym kluczem zwróci oryginalny wynik z nagłówkiem Idempotency-Replay, zamiast wysyłać e-mail po raz drugi.
Czy mogę zaplanować wysyłkę na później?
Ustaw scheduled_at na dowolny czas od 30 sekund do 30 dni w przyszłości. Wysyłka natychmiast otrzymuje status accepted i pozostaje zaplanowana do momentu realizacji, więc możesz ją anulować w dowolnym momencie przed wysłaniem.
Czy mogę załączać pliki?
Tak, jako base64 w tablicy attachments. Aby wyświetlić obraz inline, nadaj mu content_id i odwołaj się do niego w kodzie HTML za pomocą cid:. Pliki źródłowe powinny mieć maksymalnie 15 MB, aby po zakodowaniu wiadomość mieściła się w limicie 20 MB. Typy zawartości wykonywalnej i skryptowej są odrzucane przed wysłaniem.

Porozmawiaj z naszym zespołem e-mail

Zbuduj swoją kolejną integrację e-mail.

Omów wiadomości transakcyjne, wysyłki masowe i zdarzenia dostarczania. Pomożemy Ci zaplanować integrację, wolumen wysyłki i migrację.

Utwórz konto, następnie utwórz klucz API i wyślij wiadomość testową.

Twoje dane

Produkty, które Cię interesują

Opcjonalne

Skaluj bez
utraty kontroli.

Organizuj zespoły w obszarach roboczych, kontroluj dostęp do API i śledź zmiany w logach audytu.

BirdHarborOrganization
WorkspacesProductionSandbox

Delivery agent

API key · Customer operations team
Active
PermissionsAccess
EmailRead & write
SMSRead & write
ALAlex Lee AdminPermissions updated

Audit log

Production
Workspace
Production
Resource
Delivery agent
WhatsApp
ReadRead & write
Succeeded

Zacznij z Email.
Twórz na wielu kanałach z Bird.

Twój kolejny pomysł.
Gotowy do połączenia.