Campagne
Crea campagne, scegli le liste e inviale o programmale.
Crea una campagna
Crea una campagna nello stato draft. Richiede una chiave API con il permesso full. Genera un evento campaign.created.
Una nuova campagna non ha destinatari. Scegli le sue liste con Aggiorna una campagna, poi inviala o programmala. I crediti vengono addebitati quando la campagna viene inviata: 2 crediti per email.
/campaignsParametri del corpo
namestringobbligatoriosubjectstring{{first_name}}.from_emailstringnews@acme.com.from_namestringAcme. Il messaggio viene inviato da Acme <news@acme.com>.reply_tostringfrom_email.htmlstring{{first_name}}, {{last_name}}, {{email}}, {{unsubscribe_url}} e {{cf.<key>}} per i campi personalizzati. Imposta il corpo quando crei la campagna.textstringhtml.preview_textstringhtml un preheader nascosto.contentstringhtml e text, non content.content_typestringpredefinito: htmlcontent: html, text o mjml. Emailit non compila l’MJML; invia l’HTML compilato in html.Restituisce
Restituisce 201 Created con l’oggetto campagna. status è draft. La risposta non riporta html, text né content.
Restituisce 400 se manca name e 403 se la chiave API non ha il permesso full.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "draft",
"subject": "October news for {{first_name}}",
"from_email": "news@acme.com",
"from_name": "Acme",
"reply_to": "support@acme.com",
"preview_text": null,
"content_type": "html",
"created_at": "2026-10-01T09:30:12.482193Z",
"updated_at": "2026-10-01T09:30:12.482193Z"
}{
"error": "Bad Request"
}{
"statusCode": 403,
"error": "Forbidden",
"message": "Permission denied: campaigns:create"
}Recupera una campagna
Recupera una campagna tramite il suo ID o nome. Richiede una chiave API con il permesso full.
/campaigns/{id}Parametri di percorso
idstringobbligatoriocmp_…) o il nome della campagna. Codifica per l’URL i nomi che contengono spazi o caratteri speciali.Restituisce
Restituisce l’oggetto campagna.
objectstringcampaign.idstringcmp_.statusstringdraft, scheduled, queued, sending, sent, canceled o archived. queued indica che una campagna programmata ha raggiunto l’orario di invio ed è in attesa di un worker.namestringsubjectstringfrom_emailstring"" finché non viene impostato.from_namestring"" finché non viene impostato.reply_tostring"" significa che le risposte vanno a from_email.preview_textstring | nullcontent_typestringhtml, text o mjml per le campagne create tramite l’API.scheduled_atstring | nullsent_atstring | nullrecipientsobject[]audience_id (aud_…) ed exclude (true per una lista esclusa).Il corpo (html, text e content) non è incluso nella risposta. Le statistiche di engagement sono disponibili nel pannello in Email MarketingCampaigns.
Restituisce 404 se nessuna campagna del workspace corrisponde a id.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "scheduled",
"subject": "October news for {{first_name}}",
"from_email": "news@acme.com",
"from_name": "Acme",
"reply_to": "support@acme.com",
"preview_text": null,
"content_type": "html",
"sent_at": null,
"scheduled_at": "2026-10-08 09:00:00+00",
"created_at": "2026-10-01 09:30:12.482193+00",
"updated_at": "2026-10-01 10:02:47.118204+00",
"recipients": [
{ "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
{ "audience_id": "aud_3hRmYTSQ4ca6y9tbPI0IQPjVTL9", "exclude": true }
]
}{
"error": "Campaign not found"
}Aggiorna una campagna
Aggiorna i campi che passi e lascia invariati gli altri. Usalo per scegliere le liste della campagna prima di inviarla. Richiede una chiave API con il permesso full. Genera un evento campaign.updated.
Una campagna programmata invia ciò che è salvato al momento dell’invio, quindi puoi modificarla anche dopo averla programmata.
/campaigns/{id}Parametri di percorso
idstringobbligatoriocmp_…) o il nome della campagna.Parametri del corpo
namestringsubjectstringfrom_emailstringfrom_namestringreply_tostringfrom_email.preview_textstringcontentstringcontent_typestringcontent: html, text o mjml.recipientsobject[]Le liste a cui destinare la campagna. Sostituisce l’elenco attuale. Includi almeno una lista con exclude impostato su false.
audience_id(string, obbligatorio): l’ID di una lista (aud_…) di questo workspace.exclude(boolean, predefinitofalse):truesalva la lista come esclusione. Il pannello sottrae le liste escluse dalla stima dei destinatari, ma per ora l’invio vero e proprio non applica le esclusioni, quindi rimuovi quei contatti anche dalle liste incluse.
Gli ID di lista duplicati vengono ignorati. Al momento dell’invio, Emailit invia un’email una sola volta a ogni contatto iscritto alle liste incluse, e salta i contatti disiscritti e gli indirizzi soppressi.
Il corpo HTML e di testo si imposta quando crei la campagna. I campi sconosciuti nel corpo della richiesta vengono ignorati.
Restituisce
Restituisce l’oggetto campagna aggiornato, compreso recipients.
Restituisce 422 se recipients non ha nessuna lista inclusa o fa riferimento a una lista esterna al workspace, e 404 se la campagna non esiste.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "draft",
"subject": "Your October update, {{first_name}}",
"from_email": "news@acme.com",
"from_name": "Acme",
"reply_to": "support@acme.com",
"preview_text": null,
"content_type": "html",
"scheduled_at": null,
"created_at": "2026-10-01 09:30:12.482193+00",
"updated_at": "2026-10-01 10:02:47.118204+00",
"recipients": [
{ "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
{ "audience_id": "aud_3hRmYTSQ4ca6y9tbPI0IQPjVTL9", "exclude": true }
]
}{
"message": "Validation failed.",
"errors": {
"recipients": ["One or more audiences are invalid."]
}
}{
"error": "Campaign not found"
}Elenca le campagne
Restituisce le campagne del workspace, a partire dalla più recente. Richiede una chiave API con il permesso full.
/campaignsParametri di query
pageintegerpredefinito: 1limitintegerpredefinito: 10searchstringstatusstringdraft, scheduled, sending (corrisponde anche a queued), sent, canceled, archived o all.matchstringall (predefinito) richiede che corrispondano tutti i filtri. or richiede che ne corrisponda almeno uno. Vedi Filtri e ordinamento.
orderstringChiave di ordinamento di questo elenco. Vedi le chiavi di ordinamento qui sotto.
directionstringasc o desc.
Chiavi di filtro
I filtri usano parametri di query nella forma key.condition=value, ad esempio status.exact=sent o created_at.after=2026-09-01. Per le condizioni disponibili per ogni tipo, vedi Filtri e ordinamento.
| Chiave | Tipo | Note |
|---|---|---|
name |
string | |
subject |
string | |
status |
enum | draft, scheduled, queued, sending, sent, archived |
created_at |
date | |
sent_at |
date |
Chiavi di ordinamento per order: name, subject, status, created_at, sent_at.
Restituisce
Restituisce una pagina di oggetti campagna senza reply_to, preview_text, content_type e recipients. Per quei campi usa Recupera una campagna.
dataobject[]total_recordsintegernext_page_urlstring | nullnull sull’ultima pagina. Contiene solo page e limit, quindi quando lo segui aggiungi di nuovo la ricerca e i filtri.previous_page_urlstring | nullnull sulla prima pagina.{
"data": [
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "sent",
"subject": "Your October update, {{first_name}}",
"from_email": "news@acme.com",
"from_name": "Acme",
"sent_at": "2026-10-08 09:00:04+00",
"scheduled_at": "2026-10-08 09:00:00+00",
"created_at": "2026-10-01 09:30:12.482193+00",
"updated_at": "2026-10-08 09:00:31+00"
}
],
"total_records": 34,
"next_page_url": "/v2/campaigns?page=2&limit=20",
"previous_page_url": null
}Invia o programma una campagna
Invia subito la campagna, oppure la programma quando passi un scheduled_at futuro. Richiede una chiave API con il permesso full e un workspace verificato: i workspace non verificati non possono inviare campagne e ricevono 403.
Prima di inviare, assicurati che la campagna abbia un from_email su un dominio verificato, un oggetto, un corpo html o text e almeno una lista inclusa (impostata con Aggiorna una campagna). Ogni email costa 2 crediti.
/campaigns/{id}/sendParametri di percorso
idstringobbligatoriocmp_…) o il nome della campagna.Parametri del corpo
scheduled_atstringQuando inviare. Accetta ISO 8601 (2026-10-08T09:00:00Z), un timestamp Unix in secondi o un’espressione in linguaggio naturale come tomorrow at 9am (interpretata in UTC). L’orario deve essere nel futuro e la campagna deve essere draft.
Omettilo per inviare subito. Per inviare in anticipo una campagna programmata, chiama questo endpoint senza scheduled_at.
Restituisce
Invio immediato: lo stato passa a sending ed Emailit genera campaign.sending. Emailit crea poi un’email per ogni destinatario: ogni contatto iscritto alle liste incluse, senza duplicati di indirizzo, esclusi i contatti disiscritti e gli indirizzi soppressi. Quando tutti i destinatari sono stati passati alla pipeline di invio, lo stato diventa sent ed Emailit genera campaign.sent. Segui la consegna nel pannello o con gli eventi delle email.
Programmazione: lo stato passa a scheduled ed Emailit genera campaign.scheduled. All’orario programmato la campagna diventa queued (campaign.queued) e poi viene inviata come descritto sopra.
La risposta contiene object, id, name e il nuovo status, più scheduled_at quando programmi.
| Stato | Quando |
|---|---|
403 |
Il workspace non è verificato, oppure la chiave API non ha il permesso full. |
404 |
Nessuna campagna corrisponde a id. |
422 |
scheduled_at non può essere interpretato o non è nel futuro, oppure hai cercato di programmare una campagna che non è una bozza. |
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "scheduled",
"scheduled_at": "2026-10-08T09:00:00.000000Z"
}{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "sending"
}{
"code": "unverified_workspace_recipient",
"error": "Workspace not verified",
"message": "Unverified workspaces cannot send campaigns. You can send individual emails only to workspace members' account emails."
}{
"error": "Campaign cannot be scheduled",
"message": "Campaign status is 'sent'. Only draft campaigns can be scheduled."
}Annulla una campagna
Imposta lo stato della campagna su canceled e genera un evento campaign.canceled. Richiede una chiave API con il permesso full.
Puoi annullare solo le campagne con stato draft o sending; qualsiasi altro stato restituisce 422. Annullare una campagna in fase di invio non richiama le email già in coda per la consegna.
/campaigns/{id}/cancelParametri di percorso
idstringobbligatoriocmp_…) o il nome della campagna.Restituisce
Restituisce object, id, name e status (canceled).
Restituisce 422 se lo stato della campagna non è draft o sending, e 404 se la campagna non esiste.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "canceled"
}{
"error": "Campaign cannot be canceled",
"message": "Campaign status is 'scheduled'. Only 'draft' or 'sending' campaigns can be canceled."
}{
"error": "Campaign not found"
}Elimina una campagna
Elimina definitivamente una campagna. Richiede una chiave API con il permesso full. Genera un evento campaign.deleted.
L’eliminazione di una campagna non influisce sulle email già inviate o in coda. Per fermare una campagna in fase di invio, prima annullala.
/campaigns/{id}Parametri di percorso
idstringobbligatoriocmp_…) o il nome della campagna.Restituisce
Restituisce object, id, name e deleted: true. Restituisce 404 se la campagna non esiste.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"deleted": true
}{
"error": "Campaign not found"
}