RÉFÉRENCE API

Envoyer un email

POST /v1/emails accepte l'envoi et répond immédiatement : la distribution effective est traitée en file d'attente, avec relances automatiques en cas d'échec temporaire.

POST/v1/emails— authentifié par clé API (Authorization: Bearer zd_live_…)

Paramètres du corps

NomTypeRequisDescription
fromstringOuiExpéditeur. « adresse@domaine » ou « Nom <adresse@domaine> ». Le domaine doit être un domaine vérifié de votre compte.
tostringOuiDestinataire — une seule adresse nue (« client@exemple.gn »), sans nom affiché. Pas de liste ni de séparateur en v1.
subjectstringOuiSujet de l'email. Entre 1 et 300 caractères.
htmlstringNon*Corps HTML de l'email. Limité à 500 Ko (mesurés en octets UTF-8).
textstringNon*Corps texte brut de l'email. Limité à 500 Ko (mesurés en octets UTF-8).

* Au moins l’un des deux champs html ou text est obligatoire.

Exemple de requête

curl
curl -X POST https://api.zendou.dev/v1/emails \
  -H "Authorization: Bearer zd_live_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Boutique Awa <no-reply@boutique-awa.gn>",
    "to": "cliente@exemple.gn",
    "subject": "Votre commande est confirmée",
    "html": "<p>Merci pour votre commande, elle est en préparation.</p>"
  }'

Exemple de réponse

Toute requête acceptée répond 202 Accepted — y compris quand le destinataire est bloqué : l’email est alors tracé avec le statut suppressed, sans être mis en file ni facturé.

202 Accepted — mis en file
{
  "id": "e_7f3a91c2b8d1",
  "status": "queued"
}
202 Accepted — adresse supprimée
{
  "id": "e_1a2b3c4d5e6f",
  "status": "suppressed"
}

Codes d’erreur

CodeCasMessage renvoyéMarche à suivre
400Adresse d'expédition illisible« L'adresse d'expédition est invalide : utilisez « adresse@domaine » ou « Nom <adresse@domaine> ». »Corrigez le format du champ from.
400Adresse destinataire illisible« L'adresse du destinataire est invalide : indiquez une seule adresse comme « client@exemple.gn ». »Le champ to n'accepte qu'une seule adresse nue, sans nom affiché.
400Sujet vide ou trop long« Le sujet est obligatoire et ne doit pas dépasser 300 caractères. »Renseignez subject avec 1 à 300 caractères.
400Ni html ni text fourni« Fournissez au moins un contenu : « html » ou « text ». »Ajoutez au moins l'un des deux champs dans le corps de la requête.
400Contenu trop volumineux« Chaque contenu (« html », « text ») est limité à 500 Ko. »Réduisez la taille du contenu — par exemple en hébergeant les images à part plutôt qu'en base64 inline.
401Clé API absente, inconnue ou révoquée« Clé API invalide ou révoquée »Vérifiez l'en-tête Authorization: Bearer zd_live_…. Générez une nouvelle clé si nécessaire.
402Solde de crédits insuffisant« Crédits insuffisants : rechargez votre compte pour continuer à envoyer. »Rechargez votre solde (voir Facturation).
403Domaine d'envoi non vérifié« Le domaine d'envoi n'est pas vérifié : ajoutez-le à votre compte et validez ses enregistrements DNS avant d'envoyer. »Suivez le guide de vérification de domaine avant de réessayer.
403Compte suspendu« Ce compte est suspendu »Le compte a été suspendu automatiquement pour protéger la réputation d'envoi (taux de rebonds ou de plaintes trop élevé). Contactez le support.
429Limite journalière atteinte« Limite journalière atteinte : réessayez demain ou demandez une augmentation de quota. »Réessayez le lendemain (minuit UTC) — la limite augmente automatiquement avec l'ancienneté et le volume du compte.

Voir Erreurs pour la référence complète de tous les codes HTTP de l’API, toutes routes confondues.

Statuts d’un email

Un envoi accepté suit normalement le cycle QUEUED SENT DELIVERED. Les statuts suivants marquent une sortie de ce cycle :

StatutSignification
QUEUEDL'email a été accepté et débité d'un crédit. Il attend d'être traité par la file d'envoi.
SENTL'email a été remis à Amazon SES pour distribution.
DELIVEREDLe serveur du destinataire a confirmé la réception. Fin normale du cycle.
BOUNCEDLe message a rebondi. Un rebond dur (adresse inexistante) ajoute automatiquement l'adresse à votre liste de suppression ; un rebond transitoire (boîte pleine, serveur indisponible) est seulement enregistré.
COMPLAINEDLe destinataire a signalé l'email comme spam. L'adresse est ajoutée automatiquement à la liste de suppression.
SUPPRESSEDL'envoi a été bloqué avant la mise en file car l'adresse est sur une liste de suppression (la vôtre ou globale à la plateforme). Non facturé.
REJECTED / FAILEDL'email n'a pas pu être délivré : message rejeté par Amazon SES, ou abandon après plusieurs tentatives d'envoi.

Effet sur la réputation

Les rebonds durs et les plaintes alimentent le taux de rebond et de plainte de votre compte, surveillé en continu. Au-delà des seuils tolérés, le compte est suspendu automatiquement pour protéger la délivrabilité de tous les clients Zendou — mieux vaut nettoyer régulièrement ses listes de diffusion que d’atteindre ce seuil.