API d’envoi d’e-mails
Envoyez depuis votre code, une seule fois.

Un appel envoie un message ou un lot de cent. Chaque envoi a un identifiant avant de partir, et une nouvelle tentative rejoue le résultat au lieu de renvoyer.

En bref

Qu’est-ce qu’une API d’e-mails transactionnels ?

C’est ainsi qu’une app envoie son propre courrier, comme des reçus, des liens de connexion et des alertes, par une requête HTTP plutôt que par quelqu’un qui clique sur Envoyer.

100

messages dans un appel groupé

365

jours d’avance possibles pour planifier un envoi

900

secondes pour annuler un envoi immédiat

Comment ça marche

Un lot qui n’est jamais tout ou rien

Jusqu’à 100 messages par appel, chacun vérifié à part. Une mauvaise adresse fait échouer cet élément, et le reste part quand même.

Maintenant, plus tard ou avec un délai d’annulation

Planifiez jusqu’à un an à l’avance, ou retenez un envoi immédiat jusqu’à 15 minutes. Annulez ou replanifiez tant qu’il n’est pas parti.

Une trace pour chaque message

Chaque envoi reçoit tout de suite un identifiant msg_. Lisez son statut, les événements de chaque destinataire, ses ouvertures et ses clics.

Envoyer un lot

Le SDK TypeScript, ou le même JSON en HTTP tout simple.

Réessayer avec la même clé rejoue ce qui est déjà parti et n’envoie que le reste.
import { init, openemail } from '@openemail/sdk' init({ apiKey: process.env.OPENEMAIL_API_KEY }) const result = await openemail.emails.sendBatch(  [    { from: '[email protected]', to: '[email protected]', subject: 'Order AC-4192 has shipped', text: 'It is on its way.' },    { from: '[email protected]', to: '[email protected]', subject: 'Order AC-4193 has shipped', text: 'It is on its way.' },  ],  { idempotencyKey: 'shipments:2026-09-23' },) console.log(result.sent, result.failed)

Ce que vous obtenez

Déjà dans le produit

Modèles par identifiant

Envoyez un modèle enregistré et figez la version que vous avez testée.

Dans leur langue

Ajoutez translate et chaque destinataire le lit dans la sienne, ou rien n’est envoyé.

Au format Resend aussi

Pointez le SDK Resend vers /compat/resend et gardez votre code.

Bonnes pratiques

En tirer le meilleur parti

  1. 01

    Dérivez la clé d’idempotence

    Partez de ce qui a causé l’envoi, comme un numéro de commande, jamais d’un horodatage.

  2. 02

    Lisez le statut

    202 veut dire en file ou planifié. Vérifiez status avant de le dire livré.

  3. 03

    Étiquetez vos envois

    Jusqu’à 10 tags par message, renvoyés à chaque lecture.

Où en est-on

Bon à savoir

Pas de mode test
Toutes les clés sont réelles, donc chaque envoi est vraiment livré.
Pas de statut de rebond sur un envoi
Un rebond arrive dans le fil et dans le webhook email.bounced, pas dans GET /emails.
Les envois de l’éditeur n’y figurent pas
Le courrier envoyé depuis l’app n’apparaît pas dans GET /emails.

Questions

On nous demande souvent

Pour aller plus loin

Fonctionne bien avec

Clés API

Une clé par tâche, limitée aux droits et aux expéditeurs dont elle a besoin, avec chaque appel journalisé.

Webhooks

Prévient votre endpoint quand du courrier arrive, au lieu de vous obliger à l'interroger.

Modèles

Un corps écrit une fois, versionné, et envoyé maintes fois : depuis le compositeur, depuis votre propre code ou par un agent.

Commencer

Votre domaine,
votre courrier.

Pointez un domaine vers OpenEmail et lisez son courrier dans une boîte mail pensée pour lui. Le forfait gratuit couvre un domaine.

Votre boîte de réception,
à vos conditions.

L’infrastructure e-mail pour les entreprises, l’IA, les agents et le courrier personnel. Conçue pour l’échelle, la confidentialité et le contrôle. Tout ce que l’e-mail aurait dû avoir dès le premier jour.

OpenEmail

L’infrastructure e-mail pour les entreprises, l’IA, les agents et le courrier personnel. Conçue pour l’échelle, la confidentialité et le contrôle. Tout ce que l’e-mail aurait dû avoir dès le premier jour.

© 2026 OpenEmail. Tous droits réservés.