Une seule API pour chaque
e-mail que vous envoyez.
Transactionnel ou marketing, un message ou cent, envoyés via la même API Email, avec idempotence, suppression et webhooks intégrés. Transmettez du HTML brut ou utilisez vos templates React Email.
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..."
You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.
Vous envoyez déjà via SMTP ?
Conservez votre client SMTP existant et connectez-le au relais de Bird. Consultez la page de configuration SMTP pour les hôtes régionaux, les ports TLS et l'authentification. Si votre application doit recevoir et analyser des messages, commencez par l'e-mail entrant.
Envoyez votre premier e-mail en cinq minutes.
Depuis le langage que vous utilisez déjà.
L'envoi est le cœur de l<hub>Bird Email API</hub>. Votre premier envoi peut être adressé à une adresse sandbox (delivered@messagebird.dev), ce qui vous permet de tester lensemble de la plateforme (envois, webhooks, suppression) avant de vérifier un domaine.
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"Cinq choses que vous n'avez pas à construire vous-même.
Le même contrat sur chaque canal Bird.
- 01
Transactionnel + marketing.
Le même endpoint envoie une réinitialisation de mot de passe ou une campagne. Un champ de catégorie détermine comment la suppression et les désinscriptions s'appliquent.
- 02
Des templates à votre façon.
Transmettez du HTML brut, compilez vos templates React Email en HTML dans votre application et envoyez le résultat, ou nommez un template stocké pour qu'il soit compilé pour vous. Votre chaîne d'outils, inchangée.
- 03
Envoi par lot jusqu'à 100.
Jusqu'à 100 messages indépendants par appel, chacun avec son propre destinataire et ses variables, validés comme une seule unité pour ne jamais envoyer à moitié.
- 04
Idempotent par contrat.
Chaque envoi accepte une clé d'idempotence : une requête relancée après un timeout renvoie le résultat original au lieu de doubler l'envoi.
- 05
Un webhook à chaque changement d'état.
Accepté, délivré, ouvert, cliqué, rebondi, signalé. Chacun signé par HMAC, protégé contre le rejeu, idempotent, la même enveloppe sur chaque canal.
Effectuez la première requête depuis votre application.
Créez un compte et une clé API, puis suivez le guide d'envoi avec un destinataire de test.
Vous envoyez déjà ailleurs ? Migrez en un après-midi.
L'appel que vous faites déjà change à peine : remplacez le client, conservez vos templates, redirigez vos webhooks vers un seul endpoint. Les guides de migration couvrent SendGrid, Amazon SES, Mailgun et Resend.
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>",
});
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>",
});
Un message ou cent, un seul appel.
Regroupez jusqu'à 100 messages indépendants en une seule requête, chacun avec son propre destinataire et ses variables. Le lot est validé comme une unité : un seul message invalide rejette l'appel avec un 422, pour ne jamais envoyer à moitié. Une seule clé d'idempotence rend l'ensemble de la requête sûr à réessayer.
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`);
Associez votre propre contexte à chaque envoi.
Les tags sont une dimension de premier ordre, filtrable : segmentez la délivrabilité et l'engagement par campagne, template ou expérience dans les statistiques de l'API (jusqu'à 20 par message). Les métadonnées sont du JSON arbitraire, jusqu'à 2 Ko, qui fait l'aller-retour intact sur chaque lecture et webhook, pour que vos propres identifiants accompagnent le message.
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" },
});
Suivez chaque message tout au long de son cycle de vie.
Un envoi renvoie 202 immédiatement ; le résultat arrive sous forme de webhook par destinataire. Vérifiez une seule signature, filtrez par type : la même enveloppe que vous gérez déjà pour SMS, la voix et WhatsApp.
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 });
}
Les rebonds définitifs et les plaintes mettent à jour les suppressions de destinataires. Les désabonnements enregistrent une préférence de retrait. Ces enregistrements sont vérifiés lors du traitement des envois suivants.
email.acceptedL'envoi a été accepté et est en cours de préparation pour la livraison.email.processedMis en file d'attente pour le serveur de messagerie du destinataire.email.deliveredLe serveur de messagerie du destinataire a accepté le message.email.deferredRefusé temporairement, une nouvelle tentative sera effectuée.email.bouncedÉchec permanent : type de rebond et code SMTP dans le payload.email.openedLe destinataire a ouvert le message. Peut se déclencher plusieurs fois.email.clickedLe destinataire a cliqué sur un lien suivi.email.complainedLe destinataire a signalé le message comme spam.email.unsubscribedLe destinataire s'est désinscrit via un lien de désinscription suivi.
Testez chaque résultat avant de passer en production.
Dans le sandbox, c'est l'adresse du destinataire qui détermine le résultat, pas l'état de votre compte. Envoyez à delivered@messagebird.dev pour une livraison réussie, ou à bounce@, softbounce@, deferred@, complaint@ et suppressed@ pour simuler chaque scénario d'échec via le vrai pipeline et les vrais webhooks. Aucun domaine à vérifier, aucun risque pour votre réputation. Le passage en production est volontairement contrôlé : vous vérifiez d'abord un domaine, et un nouveau domaine ou une IP dédiée passe par une phase de montée en charge avant de supporter le volume complet.
Approfondissez dans la documentation.
Consultez le guide d'envoi, configurez les événements e-mail et webhooks, ou, si vous migrez depuis un autre fournisseur, suivez un guide de migration depuis SendGrid, SES, Mailgun ou Resend.
Testez le comportement autour de l'envoi.
Un appel d'envoi fonctionnel est le point de départ d'une intégration. Simulez des rebonds et des plaintes, gérez les livraisons de webhooks en double et décidez comment votre application planifie les messages ou reçoit les réponses.
Poursuivez avec le flux dont vous avez besoin
Choisissez le produit ou le guide correspondant à votre prochaine tâche.
161%
Augmentation des taux d'ouverture d'e-mails rapportée dans l'étude de cas Zillow.
Conçu avec Bird
Quand le bon logement apparaît, l'e-mail doit arriver.
Zillow a confié ses alertes immobilières urgentes à Bird, avec la capacité d'absorber les pics d'envoi et les analyses pour comprendre l'engagement. Son équipe a rapporté une augmentation de 161 % des taux d'ouverture dès le premier mois.
Vous préparez une migration ou un envoi à plus fort volume ?
Contacter l’équipe commercialeQuestions sur l'envoi d'e-mails
Puis-je envoyer à la fois des e-mails transactionnels et marketing ?
Que se passe-t-il si une requête expire et que je la réessaie ?
Puis-je planifier un envoi pour plus tard ?
Puis-je joindre des fichiers ?
Connectez l'envoi au reste de votre flux
Contactez notre équipe email
Créez votre prochaine intégration email.
Discutez de vos messages transactionnels, envois en masse et événements de livraison. Nous vous aiderons à planifier votre intégration, votre volume d'envoi et votre migration.
Créez votre compte, puis créez une clé API et envoyez un message de test.
Évoluez sans
perdre le contrôle.
Organisez vos équipes en espaces de travail, contrôlez l'accès à l'API et tracez les modifications via les journaux d'audit.
Audit log
Production- Workspace
- Production
- Resource
- Delivery agent
- ReadRead & write