Template
Crea versioni dei template, pubblicane una per alias e usale per inviare.
Crea un template
Crea una versione di un template. Le versioni che condividono un alias appartengono allo stesso template, e per ogni alias è pubblicata una sola versione alla volta. Quando invii un’email con template impostato su un alias, Emailit usa la versione pubblicata. Richiede una chiave API con il permesso full.
/templatesCorpo della richiesta
namestringObbligatorioNome del template mostrato nel pannello. Fino a 191 caratteri.
aliasstringObbligatorioIdentificatore che raggruppa le versioni di un template. Fino a 191 caratteri; solo lettere minuscole, numeri, trattini bassi e trattini (^[a-z0-9_-]+$).
Se nessun template usa ancora questo alias, la nuova versione viene pubblicata subito. Se l’alias esiste già, la nuova versione viene creata non pubblicata (published_at è null) e la pubblichi con Pubblica un template.
fromstringMittente predefinito, ad esempio Acme <hello@acme.com>. Fino a 191 caratteri.
subjectstringRiga dell’oggetto predefinita. Fino a 191 caratteri. Può contenere variabili Temple come {{ first_name }}.
reply_tostring | string[]Indirizzo di risposta (Reply-To), oppure un array di indirizzi. Ogni valore deve essere un indirizzo email valido.
htmlstringCorpo HTML.
textstringCorpo in testo semplice.
sourcestringDocumento sorgente dell’editor, ad esempio il JSON Dragit di un template creato nell’editor drag and drop. Viene salvato così com’è. Con editor: "mjml", contiene l’MJML: Emailit lo convalida, lo memorizza come documento MJML e lo compila in html.
editorstringEditor a cui appartiene il template: html (predefinito), text, dragit o tiptap. mjml è in alpha e aperto solo al team di Emailit; le altre richieste ricevono 403 con error: "mjml_alpha". Vedi Editor e API MJML.
Restituisce
Restituisce 201 Created con il template in data e un message di conferma. Il template include html, text e source. Emailit invia anche un evento webhook template.created.
I template MJML restituiscono anche un oggetto mjml con le versioni del documento. Un MJML non valido restituisce 422 con errors.source e diagnostics; vedi Convalida.
Se un campo non supera la convalida, la risposta è 400 con message: "Validation failed" e un oggetto errors organizzato per campo, ad esempio per un alias con lettere maiuscole o un indirizzo reply_to non valido. Se invece mancano name o alias, o se il valore di editor non è consentito, viene restituito l’errore di convalida standard 400 con un array details. Vedi Errori.
{
"data": {
"id": "tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a",
"name": "Welcome email",
"alias": "welcome-email",
"from": null,
"subject": "Welcome to Acme, {{ first_name }}",
"reply_to": null,
"html": "<h1>Welcome, {{ first_name }}</h1>",
"text": null,
"source": null,
"editor": "html",
"published_at": "2026-09-30T10:30:00.482119Z",
"preview_url": null,
"created_at": "2026-09-30T10:30:00.482119Z",
"updated_at": "2026-09-30T10:30:00.482119Z"
},
"message": "Template was successfully created."
}{
"message": "Validation failed",
"errors": {
"alias": ["Alias must contain only lowercase letters (a-z), numbers (0-9), underscores (_), and hyphens (-)"]
}
}Recupera un template
Restituisce una versione di un template, compreso il contenuto, ed elenca le altre versioni dello stesso alias in versions. I template si cercano solo per ID, non per alias. Richiede una chiave API con il permesso full.
/templates/:idParametri di percorso
idstringObbligatorioID del template, ad esempio tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a.
Restituisce
Restituisce 200 OK con il template in data. Oltre ai campi del template, la risposta contiene un array versions con id, name, published_at, created_at e updated_at di tutte le altre versioni che condividono l’alias, a partire dalla più recente. La versione pubblicata è quella con published_at diverso da null.
Restituisce 404 con message: "Template not found" se l’ID non esiste nel workspace.
{
"data": {
"id": "tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a",
"name": "Welcome email",
"alias": "welcome-email",
"from": "Acme <hello@acme.com>",
"subject": "Welcome to Acme, {{ first_name }}",
"reply_to": ["support@acme.com"],
"html": "<h1>Welcome, {{ first_name }}</h1>",
"text": "Welcome, {{ first_name }}",
"source": null,
"editor": "html",
"published_at": "2026-09-30T10:30:00.482119Z",
"preview_url": null,
"created_at": "2026-09-28T08:12:45.103882Z",
"updated_at": "2026-09-30T10:30:00.482119Z",
"versions": [
{
"id": "tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f",
"name": "Welcome email (October)",
"published_at": null,
"created_at": "2026-09-30T14:02:11.550731Z",
"updated_at": "2026-09-30T14:02:11.550731Z"
}
]
}
}{
"message": "Template not found"
}Aggiorna un template
Aggiorna una versione di un template. Invia solo i campi che vuoi modificare. La versione mantiene il suo stato di pubblicazione: una versione pubblicata resta pubblicata e una bozza resta una bozza. Richiede una chiave API con il permesso full.
/templates/:idParametri di percorso
idstringObbligatorioID del template, ad esempio tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a.
Corpo della richiesta
namestringNome del template. Fino a 191 caratteri.
aliasstringNuovo alias. Fino a 191 caratteri; solo lettere minuscole, numeri, trattini bassi e trattini. Non può essere un alias già usato da un altro template.
fromstringMittente predefinito, ad esempio Acme <hello@acme.com>. Fino a 191 caratteri. Invia una stringa vuota per cancellarlo.
subjectstringRiga dell’oggetto predefinita. Fino a 191 caratteri. Invia una stringa vuota per cancellarla.
reply_tostring | string[]Indirizzo di risposta (Reply-To) o array di indirizzi. Invia una stringa vuota per cancellarlo.
htmlstringCorpo HTML.
textstringCorpo in testo semplice.
sourcestringDocumento sorgente dell’editor, ad esempio il JSON Dragit. Per un template MJML, l’MJML completo: Emailit lo convalida e ricompila html, e qualsiasi html che invii viene ignorato.
editorstringhtml, text, dragit o tiptap. mjml è in alpha e aperto solo al team di Emailit; senza accesso a MJML, modificare il contenuto di un template MJML restituisce 403 con error: "mjml_alpha". Rinominarlo o pubblicarlo funziona per tutti. Vedi Editor e API MJML.
Restituisce
Restituisce 200 OK con il template aggiornato in data e un message di conferma. Emailit invia anche un evento webhook template.updated.
Restituisce 400 con message: "Validation failed" e un oggetto errors quando un valore non è valido, ad esempio "Alias already exists". I valori più lunghi di 191 caratteri o un editor sconosciuto restituiscono l’errore di convalida standard 400. Restituisce 404 se il template non esiste.
Per fare in modo che questa versione sia quella usata per gli invii, chiama Pubblica un template.
{
"data": {
"id": "tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a",
"name": "Welcome email",
"alias": "welcome-email",
"from": "Acme <hello@acme.com>",
"subject": "Welcome aboard, {{ first_name }}",
"reply_to": ["support@acme.com"],
"html": "<h1>Welcome, {{ first_name }}</h1>",
"text": "Welcome, {{ first_name }}",
"source": null,
"editor": "html",
"published_at": "2026-09-30T10:30:00.482119Z",
"preview_url": null,
"created_at": "2026-09-28T08:12:45.103882Z",
"updated_at": "2026-10-01T09:15:27.640000Z"
},
"message": "Template was successfully updated."
}{
"message": "Validation failed",
"errors": {
"alias": ["Alias already exists"]
}
}{
"message": "Template not found"
}Elenca i template
Restituisce la versione pubblicata di ogni template, a partire dalla più recente. Le versioni non pubblicate non sono elencate; recupera un template per vedere tutte le versioni del suo alias. Richiede una chiave API con il permesso full.
/templatesParametri di query
pageintegerNumero di pagina, a partire da 1. Il valore predefinito è 1.
per_pageintegerTemplate per pagina, da 1 a 100. Il valore predefinito è 25.
include_contentbooleanImpostalo su true per includere html, text e source in ogni template. Per impostazione predefinita sono omessi, per mantenere leggere le risposte.
filter[name]stringCorrispondenza parziale sul nome o sull’alias del template, senza distinzione tra maiuscole e minuscole.
filter[alias]stringAlias esatto.
filter[editor]stringEditor: html, text, dragit, tiptap o mjml (alpha).
matchstringall (predefinito) richiede che corrispondano tutti i filtri key.condition. Con or basta che ne corrisponda uno. Vedi Filtri e ordinamento.
sortstringChiave di ordinamento: name, alias, created_at (predefinito), updated_at o published_at.
orderstringDirezione dell’ordinamento: asc o desc (predefinito).
Filtri
I filtri degli elenchi sono un unico livello di parametri di query key.condition=value. Vedi Filtri e ordinamento per match, order, direction e l’elenco delle condizioni per tipo.
Chiavi di filtro
| Chiave | Tipo | Condizioni | Note |
|---|---|---|---|
name | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
alias | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
editor | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
subject | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
created_at | date | exact, before, after, empty, not_empty |
Chiavi di ordinamento
Questo endpoint ordina con sort impostato su una di queste chiavi e order impostato su asc o desc (qui order=<key> restituisce 400): name, alias, editor, subject, created_at
In questo endpoint, order accetta solo asc o desc. Passa la chiave di ordinamento in sort, ad esempio sort=name&order=asc.
Restituisce
Restituisce 200 OK con i template in data e i campi di paginazione total_records, per_page, current_page e total_pages. Ogni template include total_versions, il numero di versioni che condividono il suo alias.
{
"data": [
{
"id": "tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a",
"name": "Welcome email",
"alias": "welcome-email",
"from": "Acme <hello@acme.com>",
"subject": "Welcome to Acme, {{ first_name }}",
"reply_to": ["support@acme.com"],
"editor": "html",
"published_at": "2026-09-30T10:30:00.482119Z",
"preview_url": null,
"total_versions": 3,
"created_at": "2026-09-28T08:12:45.103882Z",
"updated_at": "2026-09-30T10:30:00.482119Z"
}
],
"total_records": 1,
"per_page": 25,
"current_page": 1,
"total_pages": 1
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Invalid API key"
}Pubblica un template
Pubblica una versione di un template e ritira tutte le altre versioni con lo stesso alias, in un’unica transazione. Usalo per mettere in produzione una nuova bozza o per tornare a una versione precedente. Richiede una chiave API con il permesso full.
/templates/:id/publishParametri di percorso
idstringObbligatorioID della versione da pubblicare, ad esempio tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f.
Corpo della richiesta
Nessun corpo. Pubblicare una versione già pubblicata imposta un nuovo published_at.
Restituisce
Restituisce 200 OK con il template pubblicato in data e un message di conferma. Restituisce 404 se il template non esiste.
Emailit invia un evento webhook template.updated per la versione che hai pubblicato e uno per ogni versione ritirata.
{
"data": {
"id": "tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f",
"name": "Welcome email (October)",
"alias": "welcome-email",
"from": "Acme <hello@acme.com>",
"subject": "Welcome to Acme, {{ first_name }}",
"reply_to": ["support@acme.com"],
"html": "<h1>Welcome, {{ first_name }}</h1><p>Here is your October guide.</p>",
"text": "Welcome, {{ first_name }}. Here is your October guide.",
"source": null,
"editor": "html",
"published_at": "2026-10-01T09:20:04.118502Z",
"preview_url": null,
"created_at": "2026-09-30T14:02:11.550731Z",
"updated_at": "2026-10-01T09:20:04.118000Z"
},
"message": "Template was successfully published."
}{
"message": "Template not found"
}Elimina un template
Elimina definitivamente una versione di un template. Le altre versioni dello stesso alias vengono mantenute. Richiede una chiave API con il permesso full.
/templates/:idParametri di percorso
idstringObbligatorioID del template, ad esempio tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a.
Restituisce
Restituisce 200 OK con data: null e un message di conferma. Emailit invia un evento webhook template.deleted con la versione eliminata. Restituisce 404 se il template non esiste.
Se elimini la versione pubblicata, nessuna versione di quell’alias risulta pubblicata finché non ne pubblichi un’altra, e gli invii con quell’alias non riescono. L’eliminazione di una bozza non influisce sulla versione pubblicata. L’eliminazione non si può annullare.
{
"data": null,
"message": "Template was successfully deleted."
}{
"message": "Template not found"
}