GETList templates/api/v1/templatesGETGet a template/api/v1/templates/{templateId}POSTCreate a template/api/v1/templatesPATCHUpdate a template/api/v1/templates/{templateId}DELETEDelete a template/api/v1/templates/{templateId}POSTTest a template/api/v1/templates/{templateId}/test-sendGETBrowse the gallery/api/v1/template-galleryGETGet a gallery design/api/v1/template-gallery/{galleryTemplateId}POSTRender without sending/api/v1/render
Ce qu'est un modèle, en HTTP
Un modèle est un fichier HTML. Il n'y a aucune mise en page autour : ce que vous envoyez est ce que reçoivent les destinataires, ce qui veut aussi dire que le lien de désabonnement doit se trouver dans votre propre balisage — voir Aide-mémoire des balises de fusion.Le catalogue de modèles
Écrire 150 lignes de HTML d'e-mail à la main, correctement, est une mauvaise façon d'employer le temps de quiconque — le vôtre ou celui d'un agent. Le catalogue est un petit ensemble de modèles que nous maintenons : ils portent leur lien de désabonnement, leurs zones modifiables, et ils ont été vérifiés sur les clients de messagerie qui comptent. Vous en lisez un, vous le copiez, vous modifiez votre copie. Lecture seule. Il n'existe aucun endpoint pour ajouter, modifier ou supprimer un modèle du catalogue : le catalogue appartient au produit, pas à une organisation. Il est le même pour toutes les clés. Seuls les modèles publiés sont visibles. Un brouillon répond404, exactement comme un identifiant qui n'existe pas — impossible de distinguer les deux, et c'est voulu.
Une clé d'API reste obligatoire, comme sur chaque route /api/v1. Elle ne sert ici à rien filtrer : le catalogue est commun à toutes les organisations, il n'y a donc rien à restreindre.
Créer un modèle à partir du catalogue
POST /api/v1/templates prend galleryTemplateId à la place de content. Le serveur lit le modèle publié et copie son HTML, si bien que vous ne faites jamais transiter 150 lignes par votre propre processus.
| Champ | Où | Obligatoire | Description |
|---|---|---|---|
name | corps | oui | De 1 à 100 caractères |
galleryTemplateId | corps | oui* | Le modèle du catalogue à copier. Remplace content |
defaultSubject | corps | non | Reprend l'objet du modèle du catalogue si vous l'omettez |
galleryTemplateId, soit content — voir ci-dessous.
bash
curl -X POST -H "x-api-key: $AGENTMAIL_API_KEY" -H "content-type: application/json" \
-d '{"name": "August newsletter", "galleryTemplateId": "'"$GALLERY_TEMPLATE_ID"'"}' \
"https://www.agentsmail.io/api/v1/templates"C'est une copie, pas un héritage. Votre modèle détient son propre HTML dès sa création. Améliorez le modèle du catalogue demain, et rien du vôtre ne change ; modifiez votre modèle, et le catalogue n'est pas touché. Plus rien ne les relie ensuite — il n'existe pas d'endpoint « mettre à jour depuis le modèle », et nous n'avons aucun moyen de changer ce que vous avez déjà.
| Condition | Réponse |
|---|---|
galleryTemplateId seul | 201 — le HTML du modèle du catalogue est copié |
content seul | 201 — votre HTML, balises de fusion converties |
| les deux ensemble | 400 — deux documents différents, choisissez-en un |
| aucun des deux | 400 — un modèle a besoin d'un document |
galleryTemplateId inconnu, ou non publié | 400 — le message nomme le paramètre |
unsupportedTags, y compris celles que nous traduirions autrement : elles sont restées brutes dans votre document et ne seront pas interprétées au rendu de l'e-mail. Les modèles du catalogue sont normalement écrits dans notre propre vocabulaire {{...}}, donc cette liste est généralement vide — mais on vous prévient quand elle ne l'est pas, plutôt que de vous laisser le découvrir dans une boîte de réception.