MJML (alpha)
Validez du MJML, effectuez-en le rendu et consultez la référence MJML. En alpha, réservé à l’équipe Emailit.
Valider du MJML
Vérifie du MJML comme le fait l’enregistrement d’un modèle (syntaxe XML, structure MJML, types d’attribut et syntaxe Temple) et le compile avec MJML 5.4.1. Rien n’est enregistré. Un MJML invalide renvoie quand même 200, avec valid: false et les diagnostics. Nécessite la portée full.
Pour le détail de chaque contrôle, consultez Validation.
/mjml/validateParamètres du corps
sourcestring | objectObligatoireLe MJML à vérifier : du balisage MJML (<mjml>…</mjml>), du MJML JSON ou un document MJML Emailit, comme le source enregistré d’un modèle. Consultez Formats de source. 2 Mo au maximum.
Réponse
Renvoie 200 OK avec le résultat, même quand le MJML est invalide :
| Champ | Type | Description |
|---|---|---|
valid |
boolean | true quand il n’y a aucun diagnostic d’erreur : un modèle avec cette source peut donc être enregistré. |
mjml_version |
string | La version de MJML avec laquelle Emailit compile. |
format |
string ou null | La façon dont la source a été lue : markup ou json. null quand elle n’a pas pu être lue. |
diagnostics |
array | Tous les diagnostics d’erreur, d’avertissement et d’information. |
valid: true signifie qu’un modèle avec cette source serait accepté. Corrigez aussi les avertissements : ils signalent généralement de vrais problèmes, comme une balise <mj-title> manquante. Pour obtenir le HTML, utilisez Effectuer le rendu de MJML.
Renvoie 422 avec message: "Validation failed" quand source est absent ou vide, et 403 avec error: "mjml_alpha" sans accès à MJML.
Objet diagnostic
Les champs qui ne s’appliquent pas sont omis.
| Champ | Type | Description |
|---|---|---|
severity |
string | error, warning ou info. Seules les erreurs rendent valid faux. |
code |
string | Un code stable, par exemple mjml.invalid-child, xml.unclosed-tag ou temple.unclosed-if. Voir Codes de diagnostic. |
message |
string | Une explication lisible. |
line |
integer | Ligne dans le balisage, à partir de 1. Sources en balisage uniquement. |
column |
integer | Colonne dans le balisage, à partir de 1. Sources en balisage uniquement. |
tag |
string | L’élément concerné par le diagnostic. |
attribute |
string | L’attribut concerné par le diagnostic. |
path |
integer[] | Chemin d’indices d’enfants depuis la racine <mjml>. |
{
"valid": false,
"mjml_version": "5.4.1",
"format": "markup",
"diagnostics": [
{
"severity": "error",
"code": "mjml.invalid-child",
"message": "<mj-column> cannot be placed inside <mj-body>. Allowed parents: <mj-group>, <mj-section>.",
"line": 3,
"column": 6,
"tag": "mj-column",
"path": [0, 0]
},
{
"severity": "error",
"code": "mjml.unknown-attribute",
"message": "<mj-text> has no attribute colour. Did you mean color?",
"line": 4,
"column": 16,
"tag": "mj-text",
"attribute": "colour",
"path": [0, 0, 0]
},
{
"severity": "warning",
"code": "mjml.missing-title",
"message": "Add an <mj-title> to <mj-head>; clients and screen readers use it.",
"line": 1,
"column": 2,
"tag": "mjml",
"path": []
},
{
"severity": "info",
"code": "mjml.missing-preview",
"message": "Add an <mj-preview> to control the inbox preview text.",
"line": 1,
"column": 2,
"tag": "mjml",
"path": []
}
]
}{
"valid": true,
"mjml_version": "5.4.1",
"format": "markup",
"diagnostics": []
}{
"valid": false,
"mjml_version": "5.4.1",
"format": null,
"diagnostics": [
{
"severity": "error",
"code": "document.unrecognized",
"message": "Expected MJML markup (<mjml>…), MJML JSON or an Emailit MJML document."
}
]
}{
"message": "Validation failed",
"errors": {
"source": ["The source field is required."]
}
}{
"error": "mjml_alpha",
"message": "MJML is in alpha and available only to Emailit platform admins."
}Effectuer le rendu de MJML
Compile du MJML en HTML tel qu’Emailit l’envoie, avec MJML 5.4.1. Avec variables, la réponse inclut aussi rendered_html : le HTML après application de Temple, tel qu’un destinataire le recevrait. Rien n’est enregistré ni envoyé. Nécessite la portée full.
Cet endpoint est limité à 120 requêtes par minute.
/mjml/renderParamètres du corps
sourcestring | objectObligatoireLe MJML à compiler : du balisage MJML (<mjml>…</mjml>), du MJML JSON ou un document MJML Emailit, comme le source enregistré d’un modèle. Consultez Formats de source. 2 Mo au maximum.
variablesobjectVariables Temple pour rendered_html, comme first_name, ou un objet cf avec les champs personnalisés de campagne. Rien n’est rempli automatiquement : transmettez les variables que le canal d’envoi fournirait. Consultez Variables par canal. Doit être un objet ; toute autre valeur renvoie 400.
Réponse
Renvoie 200 OK avec le résultat, même quand le MJML est invalide :
| Champ | Type | Description |
|---|---|---|
valid |
boolean | true quand il n’y a aucun diagnostic d’erreur. |
mjml_version |
string | La version de MJML avec laquelle Emailit compile. |
html |
string ou null | Le HTML compilé, avec les balises Temple laissées en place, tel qu’Emailit l’enregistre pour un modèle. null quand le MJML contient des erreurs. |
html_bytes |
integer | Taille de html en UTF-8. Gmail tronque les messages de plus de 102 Ko environ. 0 quand html vaut null. |
diagnostics |
array | Tous les diagnostics d’erreur, d’avertissement et d’information. Voir Valider du MJML. |
rendered_html |
string ou null | html avec les variables appliquées par Temple. Présent uniquement si vous envoyez variables, et null quand le MJML contient des erreurs. |
Un MJML invalide renvoie 200 avec valid: false, html: null et les diagnostics. rendered_html utilise exactement les variables que vous envoyez : les variables manquantes donnent une chaîne vide ou leur valeur par défaut, si bien que {{first_name|"there"}} donne there. Le texte brut n’est pas généré à partir du MJML.
Renvoie 422 avec message: "Validation failed" quand source est absent ou vide, 400 quand variables n’est pas un objet, et 403 avec error: "mjml_alpha" sans accès à MJML.
{
"valid": true,
"mjml_version": "5.4.1",
"html": "<!doctype html>\n<html lang=\"und\" dir=\"auto\" …>…Hi {{first_name|\"there\"}}, welcome aboard.…<a href=\"{{activation_url}}\" …>…</html>\n",
"html_bytes": 5267,
"diagnostics": [],
"rendered_html": "<!doctype html>\n<html lang=\"und\" dir=\"auto\" …>…Hi Ada, welcome aboard.…<a href=\"https://example.com/activate?token=abc123\" …>…</html>\n"
}{
"valid": false,
"mjml_version": "5.4.1",
"html": null,
"html_bytes": 0,
"diagnostics": [
{
"severity": "error",
"code": "mjml.invalid-child",
"message": "<mj-column> cannot be placed inside <mj-body>. Allowed parents: <mj-group>, <mj-section>.",
"line": 3,
"column": 6,
"tag": "mj-column",
"path": [0, 0]
},
{
"severity": "error",
"code": "mjml.unknown-attribute",
"message": "<mj-text> has no attribute colour. Did you mean color?",
"line": 4,
"column": 16,
"tag": "mj-text",
"attribute": "colour",
"path": [0, 0, 0]
},
{
"severity": "warning",
"code": "mjml.missing-title",
"message": "Add an <mj-title> to <mj-head>; clients and screen readers use it.",
"line": 1,
"column": 2,
"tag": "mjml",
"path": []
},
{
"severity": "info",
"code": "mjml.missing-preview",
"message": "Add an <mj-preview> to control the inbox preview text.",
"line": 1,
"column": 2,
"tag": "mjml",
"path": []
}
],
"rendered_html": null
}{
"message": "Validation failed",
"errors": {
"source": ["The source field is required."]
}
}{
"error": "mjml_alpha",
"message": "MJML is in alpha and available only to Emailit platform admins."
}Récupérer la référence MJML
Récupère chaque composant et chaque attribut de la version de MJML avec laquelle Emailit compile, les versions actuelles des éditeurs, le guide Temple et les règles d’écriture. Utilisez-la pour créer des outils ou pour fournir à un modèle d’IA ce dont il a besoin pour écrire des modèles MJML valides. Nécessite la portée full.
La même référence est disponible pour les agents IA sous la forme de l’outil MCP get-mjml-reference. Consultez MJML pour les agents IA.
/mjml/referenceRéponse
Renvoie 200 OK avec la référence. L’exemple ci-dessus est abrégé : components liste les 36 composants avec tous leurs attributs.
| Champ | Type | Description |
|---|---|---|
mjml_version |
string | La version de MJML avec laquelle Emailit compile. |
document_schema_version |
integer | Le schema_version actuel du document MJML enregistré. |
editors |
object | La version actuelle et le stade (alpha, beta ou stable) de mjml-code et de mjml-visual. |
components |
array | Tous les composants MJML. Voir ci-dessous. |
temple_guide |
string | Le fonctionnement de Temple dans MJML : variables, valeurs par défaut, conditions et variables de campagne. |
rules |
string | Les règles d’écriture du MJML : structure, attributs autorisés et accessibilité. |
reference_text |
string | Toute la référence des composants sous forme de texte brut compact, pour les prompts. |
Renvoie 403 avec error: "mjml_alpha" sans accès à MJML.
Objet composant
| Champ | Type | Description |
|---|---|---|
tag |
string | Nom de la balise, par exemple mj-button. |
label |
string | Nom affiché. |
description |
string | Ce que fait le composant. |
category |
string | root, head, layout, content, interactive, child ou advanced. |
ending_tag |
boolean | true quand le contenu est du HTML brut ou du texte (mj-text, mj-button, mj-raw, …). |
parents |
string[] | Les éléments dans lesquels ce composant peut être placé. |
children |
string[] | Les éléments que ce composant peut contenir. ["*"] signifie n’importe quel composant (mj-attributes). |
attributes |
array | Les attributs, chacun avec name, type (un type MJML comme color, unit(px,%){1,4} ou enum(left,center,right)) et default (null s’il n’y en a pas). |
{
"mjml_version": "5.4.1",
"document_schema_version": 1,
"editors": {
"mjml-code": { "version": "0.2.0", "stage": "alpha" },
"mjml-visual": { "version": "0.2.0", "stage": "alpha" }
},
"components": [
{
"tag": "mj-body",
"label": "Body",
"description": "The visible email. Holds sections, wrappers and heroes.",
"category": "root",
"ending_tag": false,
"parents": ["mjml"],
"children": ["mj-raw", "mj-section", "mj-wrapper", "mj-hero"],
"attributes": [
{ "name": "width", "type": "unit(px)", "default": "600px" },
{ "name": "background-color", "type": "color", "default": null },
{ "name": "id", "type": "string", "default": null },
{ "name": "mj-class", "type": "string", "default": null },
{ "name": "css-class", "type": "string", "default": null }
]
},
{
"tag": "mj-button",
"label": "Button",
"description": "A bulletproof call-to-action button. Content is the label.",
"category": "content",
"ending_tag": true,
"parents": ["mj-column", "mj-hero"],
"children": [],
"attributes": [
{ "name": "align", "type": "enum(left,center,right)", "default": "center" },
{ "name": "background-color", "type": "color", "default": "#414141" },
{ "name": "href", "type": "string", "default": null },
{ "name": "inner-padding", "type": "unit(px,%){1,4}", "default": "10px 25px" }
]
}
],
"temple_guide": "Temple is Emailit's templating language, evaluated per recipient at send time on the final HTML:\n- {{first_name}} inserts a variable; …",
"rules": "MJML rules:\n- Structure: <mjml> > <mj-head> (optional) + <mj-body>. …",
"reference_text": "MJML 5.4.1 component reference. Format: name=type[default]. …"
}{
"error": "mjml_alpha",
"message": "MJML is in alpha and available only to Emailit platform admins."
}