Aller au contenu
Docs

Construisez des workflows à partir de déclencheurs et d’étapes, lancez-les et consultez leurs exécutions.

URL de basehttps://api.emailit.com/v2AuthentificationErreursLimites de débit

Créer une automatisation

Crée une automatisation au statut draft à partir d’un graphe d’étapes et de connexions. Nécessite une clé API de portée full. Les automatisations sont en bêta.

L’automatisation ne fait rien tant que vous ne l’avez pas démarrée. Chaque exécution coûte 3 crédits à son démarrage, et chaque e-mail envoyé par send_email ou forward_email coûte 1 crédit de plus. Dans un espace de travail non vérifié, ces actions ne peuvent envoyer qu’aux adresses e-mail de compte des membres de l’espace de travail.

POST/automations

Paramètres du corps

contextstringobligatoire
Ce sur quoi porte chaque exécution : contact, email ou event. Le contexte détermine les déclencheurs et les actions utilisables, et ne peut pas être modifié par la suite. Consultez Contextes.
namestringobligatoire
Nom de l’automatisation, 191 caractères au maximum.
descriptionstring | null
Description facultative.
settingsobject
Règles d’exécution. Consultez Paramètres.
stepsobject[]obligatoire
Les étapes de déclenchement et d’action, dont au moins un déclencheur. Consultez Étapes.
connectionsobject[]obligatoire
Les liens entre les étapes. Transmettez [] pour un graphe qui ne contient qu’un déclencheur. Consultez Connexions.

Paramètres

on_step_failurestringpar défaut : stop
stop fait passer l’exécution à failed lorsqu’une étape échoue. skip enregistre l’étape en échec et laisse le reste de l’exécution se terminer.
allow_reentrybooleanpar défaut : true
false ignore un déclenchement lorsque le même contact (ou e-mail) a déjà une exécution en cours dans cette automatisation.
max_concurrent_runsintegerpar défaut : 0
Nombre maximal d’exécutions simultanées au statut running. 0 signifie aucune limite.
cooldown_secondsintegerpar défaut : 0
Ignore un déclenchement lorsque le même contact (ou e-mail) a démarré une exécution dans cette automatisation au cours de ce nombre de secondes.

Étapes

keystringobligatoire
Votre identifiant pour l’étape, unique dans l’automatisation, par exemple welcome_email. Les connexions, les statistiques d’étape et les mises à jour désignent les étapes par leur clé.
typestringobligatoire
trigger ou action.
triggerstring
Nom du déclencheur, obligatoire lorsque type vaut trigger. Consultez Déclencheurs.
actionstring
Nom de l’action, obligatoire lorsque type vaut action. Consultez Actions.
configobject
Paramètres du déclencheur ou de l’action.

Connexions

fromstringobligatoire
Clé de l’étape de départ du lien.
tostringobligatoire
Clé de l’étape suivante.
branchstringpar défaut : default
L’issue de l’étape from qui emprunte ce lien. Les étapes condition utilisent yes et no ; les étapes experiment utilisent les clés de variante. Toutes les autres étapes utilisent default.

Contextes

Contexte Une exécution porte sur Déclencheurs Règles
contact Un contact. send_email envoie à ce contact. contact.*, system.* Un ou plusieurs déclencheurs. Ils doivent tous être connectés à la même première action.
email Un e-mail (envoyé ou reçu). email.*, system.* Un ou plusieurs déclencheurs. Ils doivent tous être connectés à la même première action.
event Le payload du déclencheur uniquement. event.*, system.* Exactement un déclencheur.

Chaque action doit être accessible depuis un déclencheur. Une exécution commence à l’action connectée au déclencheur qui s’est activé, puis suit les connexions :

  • condition ne suit que le lien dont la branch vaut yes ou no, selon le résultat.
  • experiment suit les liens de la variante choisie. Lorsque ce chemin se termine, l’exécution continue sur les liens default de l’étape d’expérimentation.
  • wait retarde l’étape suivante.
  • Toutes les autres actions suivent leurs liens default. Une étape qui a plusieurs liens sortants les exécute tous.

Une exécution passe à completed lorsqu’il ne reste plus d’étapes, à failed lorsqu’une étape échoue (avec on_step_failure: "stop"), et à canceled lorsque vous arrêtez l’automatisation.

Déclencheurs

Déclencheur Contexte S’active lorsque
contact.added_to_audience contact Un contact s’inscrit à une liste de contacts, y compris lors d’une réinscription.
contact.removed_from_audience contact Un abonné est supprimé d’une liste de contacts.
contact.updated contact Un contact est mis à jour.
contact.loaded_email contact Un destinataire qui est un contact de l’espace de travail ouvre un e-mail.
contact.clicked_in_email contact Un destinataire qui est un contact de l’espace de travail clique sur un lien suivi.
contact.date_anniversary contact Chaque jour à 0 h 00 UTC, pour les contacts dont le champ personnalisé de type date (YYYY-MM-DD) a le même mois et le même jour qu’aujourd’hui.
contact.on_date contact Chaque jour à 0 h 00 UTC, pour les contacts dont le champ personnalisé de type date correspond à la date du jour.
contact.visits_url, contact.on_purchase, contact.on_event contact Acceptés, mais Emailit ne les active pas encore.
email.received email Un e-mail entrant arrive.
email.delivered, email.bounced, email.complained, email.loaded, email.clicked, email.failed, email.suppressed, email.canceled email L’événement e-mail du même nom se produit.
event.<name> event Tout nom qui commence par event.. Emailit n’émet pas encore d’événements event.* ; démarrez les automatisations d’événement avec system.manual.
system.manual tous Vous appelez Déclencher une exécution.
system.schedule tous Accepté, mais Emailit n’active pas encore les déclencheurs programmés.

Champs de config des déclencheurs :

audience_idstring
Pour contact.added_to_audience et contact.removed_from_audience : s’active uniquement pour cette liste de contacts (aud_…).
date_fieldstring
Pour contact.date_anniversary et contact.on_date : la clé du champ personnalisé qui contient la date, par exemple birthday.
filterobject

S’active uniquement lorsque l’événement correspond : { "match": "all", "rules": [{ "field": "subject", "operator": "contains", "value": "Invoice" }] }. match vaut all (par défaut) ou any. field est un chemin à points dans l’object de l’événement, par exemple to ou email.subject ; un préfixe payload. est ignoré.

Opérateurs : equals, not_equals, contains, not_contains, starts_with, ends_with, greater_than, less_than, in, not_in, is_set, is_not_set. Tous les opérateurs sauf is_set et is_not_set nécessitent une value ; in et not_in prennent un tableau.

Actions

Action Contexte Configuration
send_email tous type (obligatoire, template), template_id (obligatoire : un ID tem_ ou l’alias d’un modèle publié), from, subject, reply_to, to
forward_email email, event to (obligatoire), from, subject, email_id
wait tous seconds (obligatoire, de 0 à 2 592 000, soit 30 jours)
condition tous filter (obligatoire, voir ci-dessous)
experiment tous variants (obligatoire), control
call_webhook tous url (obligatoire), method, headers, body
run_automation tous automation_id (obligatoire)
end tous Aucune
add_to_audience contact audience_id (obligatoire)
remove_from_audience contact audience_id (obligatoire)
edit_contact contact fields (obligatoire)
add_to_suppressions email, event type, reason, email
remove_from_suppressions email, event email
create_contact email, event email, first_name, audience_id
  • send_email envoie le modèle. from vaut par défaut l’expéditeur du modèle et doit appartenir à un domaine d’envoi vérifié. subject remplace l’objet du modèle. reply_to est une adresse ou un tableau d’adresses. Dans le contexte contact, l’e-mail est envoyé au contact de l’exécution ; dans les contextes email et event, définissez to.
  • forward_email transfère l’e-mail de l’exécution (ou l’e-mail indiqué dans email_id) à to. from vaut par défaut l’expéditeur d’origine et subject, Fwd: <original subject>.
  • condition prend { "match": "all" | "any", "rules": [...] } avec les mêmes opérateurs que les filtres de déclencheur. Les champs sans préfixe sont résolus par rapport au contact (first_name, custom_fields.plan) ou à l’e-mail (rcpt_to, subject) de l’exécution ; préfixez un champ par contact., email., payload. ou meta. pour être explicite. L’étape continue sur yes ou no.
  • experiment choisit l’une des variants (control compris), chacune de la forme { "key": "a", "weight": 50 }, au hasard selon leur poids, et continue sur la branche qui porte le nom de la clé choisie.
  • call_webhook envoie une requête HTTP (méthode POST par défaut, Content-Type JSON) et enregistre la classe de statut (2xx, 4xx, 5xx), ou timeout ou network_error. Une réponse autre que 2xx ne fait pas échouer l’étape.
  • run_automation démarre une exécution d’une autre automatisation active avec le payload de cette exécution. L’exécution en cours continue.
  • edit_contact prend fields: [{ "key": "first_name", "value": "Ada" }]. Les clés email, first_name, last_name et unsubscribed mettent à jour le contact ; toute autre clé définit un champ personnalisé.
  • add_to_suppressions bloque l’adresse de l’exécution (type par défaut : recipient ; reason par défaut : automation). remove_from_suppressions la retire des adresses bloquées. Dans le contexte event, transmettez email.
  • create_contact crée le contact (ou retrouve le contact existant) et l’inscrit éventuellement à audience_id. Dans le contexte email, email vaut par défaut le destinataire de l’e-mail.

Les valeurs de type chaîne de toute configuration d’action peuvent contenir des variables qu’Emailit remplace lors de l’exécution de l’étape : {{contact.email}}, {{email.mail_from}}, {{payload.object.subject}} ou {{meta.source_event_id}}, par exemple "to": "{{email.mail_from}}". Les modèles envoyés par send_email affichent aussi directement les champs du contact, comme {{ first_name }}.

Réponse

Renvoie 201 Created avec l’automatisation dans data, y compris l’ID de chaque étape (aus_…) et les connexions. status vaut draft.

La création vérifie la structure du graphe : noms des déclencheurs et des actions pour le contexte, unicité des clés, validité des connexions, accessibilité des étapes, et utilisation d’un domaine d’envoi vérifié pour toute adresse from d’une action send_email. Elle ne vérifie pas que la configuration de chaque action est complète ; Mettre à jour une automatisation le fait. Les erreurs renvoient 400 avec errors indexé par chemin de champ.

POST/automations
Terminal
curl -X POST https://api.emailit.com/v2/automations \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Welcome series",
    "context": "contact",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "settings": { "allow_reentry": false },
    "steps": [
      {
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "key": "welcome_email",
        "type": "action",
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "key": "wait_1_day",
        "type": "action",
        "action": "wait",
        "config": { "seconds": 86400 }
      },
      {
        "key": "is_free_user",
        "type": "action",
        "action": "condition",
        "config": {
          "filter": {
            "match": "all",
            "rules": [{ "field": "custom_fields.plan", "operator": "is_not_set" }]
          }
        }
      },
      {
        "key": "upgrade_tips",
        "type": "action",
        "action": "send_email",
        "config": { "type": "template", "template_id": "getting-started-tips" }
      },
      { "key": "done", "type": "action", "action": "end" }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email" },
      { "from": "welcome_email", "to": "wait_1_day" },
      { "from": "wait_1_day", "to": "is_free_user" },
      { "from": "is_free_user", "to": "upgrade_tips", "branch": "yes" },
      { "from": "is_free_user", "to": "done", "branch": "no" }
    ]
  }'
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "draft",
    "settings": { "allow_reentry": false },
    "last_triggered_at": null,
    "published_at": null,
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-01T09:41:05.318274+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "key": "wait_1_day",
        "type": "action",
        "trigger": null,
        "action": "wait",
        "config": { "seconds": 86400 }
      },
      {
        "id": "aus_3HOgOzxaXBgVRpLFtpvJNo4vd5c",
        "key": "is_free_user",
        "type": "action",
        "trigger": null,
        "action": "condition",
        "config": {
          "filter": {
            "match": "all",
            "rules": [{ "field": "custom_fields.plan", "operator": "is_not_set" }]
          }
        }
      },
      {
        "id": "aus_3gCI5SWMPFVhOSawR6nz8sF55wp",
        "key": "upgrade_tips",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "getting-started-tips" }
      },
      {
        "id": "aus_3Pq7Wd2LxN8cVt5RmK0sHy4BfJe",
        "key": "done",
        "type": "action",
        "trigger": null,
        "action": "end",
        "config": {}
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" },
      { "from": "welcome_email", "to": "wait_1_day", "branch": "default" },
      { "from": "wait_1_day", "to": "is_free_user", "branch": "default" },
      { "from": "is_free_user", "to": "upgrade_tips", "branch": "yes" },
      { "from": "is_free_user", "to": "done", "branch": "no" }
    ]
  },
  "message": "Automation was successfully created.",
  "notify": true
}

Récupérer une automatisation

Récupère une automatisation avec son graphe complet. Nécessite une clé API de portée full.

GET/automations/{id}

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).

Réponse

Renvoie l’automatisation dans data.

idstring
ID de l’automatisation, avec le préfixe aut_.
contextstring
contact, email ou event.
namestring
Nom de l’automatisation.
descriptionstring | null
Description facultative.
statusstring
draft, running, paused, stopped ou archived.
settingsobject
Règles d’exécution : on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Vide si vous n’en avez défini aucune.
last_triggered_atstring | null
Date à laquelle l’automatisation a démarré une exécution pour la dernière fois.
published_atstring | null
Date du premier démarrage de l’automatisation.
stepsobject[]
Pour chaque étape : id (aus_…), key, type, trigger, action et config. Les détails d’exécution désignent les étapes par leur id ; les statistiques, par leur key.
connectionsobject[]
Pour chaque lien : les clés des étapes from et to, et sa branch.

Pour la signification de chaque déclencheur, action et paramètre, consultez Créer une automatisation. Renvoie 404 si l’automatisation n’existe pas ou a été supprimée.

GET/automations/{id}
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "running",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-03T14:12:40.551870+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "key": "wait_1_day",
        "type": "action",
        "trigger": null,
        "action": "wait",
        "config": { "seconds": 86400 }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" },
      { "from": "welcome_email", "to": "wait_1_day", "branch": "default" }
    ]
  }
}

Mettre à jour une automatisation

Met à jour le nom, la description, les paramètres ou le graphe d’une automatisation. Nécessite une clé API de portée full. Le contexte ne peut pas être modifié.

Pour modifier le graphe, envoyez steps et connections ensemble ; ils remplacent le graphe actuel. Les étapes dont la key existe déjà conservent leur ID et leur historique d’exécution, les étapes que vous omettez sont supprimées, et les nouvelles clés sont ajoutées. Contrairement à la création, la mise à jour valide aussi la configuration de chaque action (par exemple, send_email nécessite type et template_id, et wait nécessite seconds).

Mettez l’automatisation en pause avant de modifier le graphe d’une automatisation active, puis démarrez-la de nouveau pour que les nouveaux déclencheurs prennent effet.

POST/automations/{id}

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).

Paramètres du corps

namestring
Nom, 191 caractères au maximum.
descriptionstring
Description.
settingsobject
Remplace tous les paramètres : on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Consultez Paramètres.
stepsobject[]
La liste complète des étapes. Obligatoire lorsque vous envoyez connections. Consultez Étapes.
connectionsobject[]
La liste complète des connexions. Obligatoire lorsque vous envoyez steps. Consultez Connexions.

Réponse

Renvoie l’automatisation mise à jour dans data, avec message et notify. Renvoie 400 avec errors indexé par chemin de champ lorsque la validation échoue, et 404 si l’automatisation n’existe pas.

POST/automations/{id}
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Welcome series (v2)",
    "settings": { "allow_reentry": false, "on_step_failure": "skip" }
  }'
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series (v2)",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "paused",
    "settings": { "allow_reentry": false, "on_step_failure": "skip" },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-04T08:15:22.730115+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully updated.",
  "notify": true
}

Lister les automatisations

Renvoie les automatisations de l’espace de travail, de la plus récente à la plus ancienne, sans leurs étapes ni leurs connexions. Nécessite une clé API de portée full. Les automatisations supprimées ne sont pas listées.

GET/automations

Paramètres de requête

pageintegerpar défaut : 1
Numéro de page, à partir de 1.
per_pageintegerpar défaut : 25
Nombre d’automatisations par page, de 1 à 100.
filter[context]string
Uniquement les automatisations de ce contexte : contact, email ou event.
filter[status]string
Uniquement les automatisations de ce statut : draft, running, paused, stopped ou archived.
filter[name]string
Recherche insensible à la casse sur une partie du nom.
sortstringpar défaut : created_at
Champ de tri : name, created_at, updated_at ou last_triggered_at.
orderstringpar défaut : desc
Sens du tri : asc ou desc.

Vous pouvez aussi utiliser les filtres génériques key.condition=value sur name, status, context et created_at, avec match. Consultez Filtrage et tri.

Réponse

dataobject[]
Les automatisations de cette page : id, context, name, description, status, settings, last_triggered_at, published_at, created_at, updated_at. Dans cette liste, settings est toujours un objet vide ; récupérez l’automatisation pour le lire.
total_recordsinteger
Nombre d’automatisations correspondantes.
per_pageinteger
Taille de page utilisée.
current_pageinteger
Numéro de cette page.
total_pagesinteger
Nombre de pages.
GET/automations
Terminal
curl -G https://api.emailit.com/v2/automations \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  --data-urlencode "filter[status]=running" \
  -d sort=last_triggered_at \
  -d per_page=50
JSON
{
  "data": [
    {
      "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
      "context": "contact",
      "name": "Welcome series",
      "description": "Welcome new subscribers, then nudge free users a day later.",
      "status": "running",
      "settings": {},
      "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
      "published_at": "2026-10-01T10:00:02.204118+00:00",
      "created_at": "2026-10-01T09:41:05.318274+00:00",
      "updated_at": "2026-10-03T14:12:40.551870+00:00"
    }
  ],
  "total_records": 1,
  "per_page": 50,
  "current_page": 1,
  "total_pages": 1
}

Supprimer une automatisation

Supprime une automatisation. Elle disparaît des listes et cesse de réagir aux déclencheurs. Nécessite une clé API de portée full.

Les exécutions déjà en cours ne sont pas annulées. Pour les annuler, arrêtez l’automatisation avant de la supprimer.

DELETE/automations/{id}

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).

Réponse

Renvoie un message qui confirme la suppression. Renvoie 404 si l’automatisation n’existe pas ou a déjà été supprimée.

DELETE/automations/{id}
Terminal
curl -X DELETE https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "message": "Automation was deleted successfully.",
  "notify": true
}

Démarrer une automatisation

Fait passer le statut de l’automatisation à running. À partir de là, les déclencheurs correspondants démarrent des exécutions ; les événements survenus avant le démarrage n’en démarrent pas. Nécessite une clé API de portée full.

Vous pouvez démarrer une automatisation draft, paused ou stopped. Le premier démarrage définit published_at.

Le démarrage ne valide pas de nouveau le graphe. Si vous avez construit l’automatisation avec Créer une automatisation, qui ne vérifie que la structure, assurez-vous que la configuration de chaque action est complète, ou envoyez une fois le graphe via Mettre à jour une automatisation, qui le valide entièrement. Une étape dont la configuration est incomplète échoue lorsqu’une exécution l’atteint.

POST/automations/{id}/start

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).

Réponse

Renvoie l’automatisation dans data avec status défini sur running. Renvoie 404 si l’automatisation n’existe pas.

POST/automations/{id}/start
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/start \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "running",
    "settings": { "allow_reentry": false },
    "last_triggered_at": null,
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-01T10:00:02.204118+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully started.",
  "notify": true
}

Mettre en pause une automatisation

Fait passer le statut de l’automatisation à paused. Ses déclencheurs cessent de démarrer de nouvelles exécutions, mais les exécutions déjà en cours continuent, y compris celles qui attendent sur une étape wait. Nécessite une clé API de portée full.

Pour annuler aussi les exécutions en cours, arrêtez plutôt l’automatisation. Démarrez-la de nouveau pour réactiver ses déclencheurs.

POST/automations/{id}/pause

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).

Réponse

Renvoie l’automatisation dans data avec status défini sur paused. Renvoie 404 si l’automatisation n’existe pas.

POST/automations/{id}/pause
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/pause \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "paused",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-04T08:10:51.004732+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully paused.",
  "notify": true
}

Arrêter une automatisation

Fait passer le statut de l’automatisation à stopped et annule chaque exécution encore running ; ces exécutions prennent le statut canceled et leurs étapes restantes ne sont pas exécutées. Nécessite une clé API de portée full.

L’arrêt n’est disponible que via l’API. Pour laisser les exécutions en cours se poursuivre, mettez plutôt l’automatisation en pause. Vous pouvez démarrer de nouveau une automatisation arrêtée ; les nouvelles exécutions repartent de zéro.

POST/automations/{id}/stop

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).

Réponse

Renvoie l’automatisation dans data avec status défini sur stopped. Renvoie 404 si l’automatisation n’existe pas.

POST/automations/{id}/stop
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/stop \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "stopped",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-05T16:45:09.882301+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully stopped.",
  "notify": true
}

Déclencher une exécution

Active le déclencheur system.manual avec le payload de votre choix. L’automatisation doit être running et comporter une étape de déclenchement system.manual ; sinon, aucune exécution ne démarre. Nécessite une clé API de portée full. Les déclenchements manuels ne sont disponibles que via l’API.

L’exécution démarre de manière asynchrone et coûte 3 crédits, comme toute autre exécution. Retrouvez-la avec Lister les exécutions.

POST/automations/{id}/trigger

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).

Paramètres du corps

payloadobject

Les données de l’exécution. Emailit y ajoute automation_id et enregistre le résultat comme payload de l’exécution. Les étapes peuvent le lire avec des variables comme {{payload.order_id}} et des conditions comme payload.plan.

Ce sur quoi porte l’exécution dépend du contexte de l’automatisation :

  • contact : transmettez contact_id (con_…). Les actions sur les contacts et send_email utilisent ce contact.
  • email : transmettez email_id (em_…). Les actions sur les e-mails utilisent cet e-mail.
  • event : n’importe quelles données. Définissez to ou email dans la configuration des actions, par exemple "to": "{{payload.customer_email}}".

Réponse

Renvoie 200 avec un message une fois le déclenchement mis en file d’attente. Renvoie 422 si l’automatisation n’est pas running, et 404 si elle n’existe pas.

POST/automations/{id}/trigger
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/trigger \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "payload": {
      "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
      "plan": "pro",
      "order_id": "ord_1042"
    }
  }'
JSON
{
  "message": "Automation trigger dispatched."
}

Lister les exécutions

Renvoie les exécutions d’une automatisation, de la plus récente à la plus ancienne. Chaque exécution est un parcours du graphe, démarré par un déclencheur. Nécessite une clé API de portée full.

GET/automations/{id}/runs

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).

Paramètres de requête

pageintegerpar défaut : 1
Numéro de page, à partir de 1.
per_pageintegerpar défaut : 25
Nombre d’exécutions par page, de 1 à 100.
filter[status]string
Uniquement les exécutions de ce statut : running, completed, failed ou canceled.

Vous pouvez aussi filtrer avec key.condition=value sur status, event et created_at (par exemple created_at.after=2026-10-01), et trier avec order et direction sur les mêmes clés. Consultez Filtrage et tri.

Réponse

dataobject[]
Les exécutions de cette page. Leurs champs sont détaillés ci-dessous.
total_records, per_page, current_page, total_pagesinteger
Informations de pagination.

Chaque exécution comporte :

idstring
ID de l’exécution, avec le préfixe aur_.
automation_idstring
L’automatisation (aut_…).
contact_idstring | null
Le contact de l’exécution (con_…) dans le contexte contact.
email_idstring | null
L’e-mail de l’exécution (em_…) dans le contexte email.
event_idstring | null
ID de l’événement source, lorsque le payload du déclencheur en contient un.
eventstring
Le déclencheur qui a démarré l’exécution, par exemple contact.added_to_audience ou system.manual.
payloadobject
Toujours un objet vide dans cette liste. Récupérez l’exécution pour lire le payload de son déclencheur.
metaobject
Toujours un objet vide dans cette liste. Récupérez l’exécution pour lire ses métadonnées, comme failure_reason.
statusstring
running, completed, failed ou canceled (l’automatisation a été arrêtée).
started_at, completed_at, created_at, updated_atstring | null
Horodatages en UTC.
GET/automations/{id}/runs
Terminal
curl -G https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/runs \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  --data-urlencode "filter[status]=failed"
JSON
{
  "data": [
    {
      "id": "aur_3q6GdFk2eRSG093grI0v9e6REu8",
      "automation_id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
      "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
      "email_id": null,
      "event_id": null,
      "event": "contact.added_to_audience",
      "payload": {},
      "meta": {},
      "status": "failed",
      "started_at": "2026-10-03T14:12:40.551870+00:00",
      "completed_at": "2026-10-03T14:12:41.093355+00:00",
      "created_at": "2026-10-03T14:12:40.551870+00:00",
      "updated_at": "2026-10-03T14:12:41.093355+00:00"
    }
  ],
  "total_records": 1,
  "per_page": 25,
  "current_page": 1,
  "total_pages": 1
}

Récupérer une exécution

Récupère une exécution d’une automatisation, y compris les étapes qu’elle a exécutées. Nécessite une clé API de portée full.

GET/automations/{id}/runs/{run_id}

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).
run_idstringobligatoire
L’ID de l’exécution (aur_…).

Réponse

Renvoie l’exécution dans data avec les champs décrits dans Lister les exécutions, ainsi que les payload et meta complets et un tableau run_steps.

payloadobject | null
Le payload du déclencheur : les données de l’événement ({ "object": { … } }) ou le payload que vous avez transmis à Déclencher une exécution, complété par automation_id.
metaobject | null
source_event_id relie l’exécution à l’événement qui l’a démarrée. Les exécutions en échec peuvent avoir un failure_reason : insufficient_credits (les 3 crédits de l’exécution n’ont pas pu être débités) ou run_timeout (l’exécution était toujours running au bout de 72 heures sans étape en attente).
run_stepsobject[]

Une entrée par étape atteinte par l’exécution :

  • step_id : l’ID de l’étape (aus_…). Faites-le correspondre à steps[].id renvoyé par Récupérer une automatisation.
  • status : running, waiting (une étape wait dont le délai n’est pas écoulé), completed ou failed.
  • data : le résultat de l’étape. Par exemple, send_email renvoie { "result": "email_queued", "email_oid": "em_…", "to": "…" }, condition renvoie { "result": true, "branch": "yes" }, et les étapes en échec renvoient { "error": "…" }.
  • started_at, completed_at, created_at.

Renvoie 404 si l’automatisation ou l’exécution n’existe pas.

GET/automations/{id}/runs/{run_id}
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/runs/aur_3q6GdFk2eRSG093grI0v9e6REu8 \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aur_3q6GdFk2eRSG093grI0v9e6REu8",
    "automation_id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
    "email_id": null,
    "event_id": null,
    "event": "contact.added_to_audience",
    "payload": {
      "object": {
        "id": "sub_3Fh2pQx9LmZr4Wt7Nc0bVd8KsYe",
        "object": "subscriber",
        "subscribed": true,
        "audience": { "id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "name": "Newsletter" },
        "contact": { "id": "con_3munwNLaXKUARc6ff9wPtxKVq4A", "email": "ada@example.com" }
      }
    },
    "meta": { "source_event_id": "evt_3Kd8sWq1NzXc5Vb7Mt2LpRy0HgA" },
    "status": "running",
    "started_at": "2026-10-03T14:12:40.551870+00:00",
    "completed_at": null,
    "created_at": "2026-10-03T14:12:40.551870+00:00",
    "updated_at": "2026-10-03T14:12:40.551870+00:00",
    "run_steps": [
      {
        "step_id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "status": "completed",
        "data": {
          "result": "email_queued",
          "outcome": "accepted",
          "email_oid": "em_3Cp8cMgPskzB8tIlgUyNJkpDp9O",
          "to": "ada@example.com"
        },
        "started_at": "2026-10-03T14:12:40.702113+00:00",
        "completed_at": "2026-10-03T14:12:40.918540+00:00",
        "created_at": "2026-10-03T14:12:40.702113+00:00"
      },
      {
        "step_id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "status": "waiting",
        "data": { "status": "waiting", "delayMs": 86400000, "seconds": 86400 },
        "started_at": "2026-10-03T14:12:41.004221+00:00",
        "completed_at": null,
        "created_at": "2026-10-03T14:12:41.004221+00:00"
      }
    ]
  }
}

Récupérer les statistiques

Renvoie des décomptes pour chaque étape d’une automatisation, indexés par clé d’étape. Nécessite une clé API de portée full.

GET/automations/{id}/stats

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).

Paramètres de requête

sincestring
Ne compte que les exécutions d’étapes créées à cette date ou après. Date-heure RFC 3339, par exemple 2026-10-01T00:00:00Z.
untilstring
Ne compte que les exécutions d’étapes créées à cette date ou avant. Date-heure RFC 3339.
run_ids[]string
Ne compte que ces exécutions (aur_…). Répétez le paramètre pour plusieurs exécutions.

Réponse

Renvoie data, un objet qui contient une entrée par clé d’étape. Les étapes qu’aucune exécution n’a atteintes ont un total de 0.

totalinteger
Nombre de fois où des exécutions ont atteint l’étape.
by_statusobject
Décomptes par statut d’étape : running, waiting, completed, failed.
by_outcomeobject
Décomptes par issue. send_email et forward_email : accepted, puis le dernier état de l’e-mail (delivered, loaded, clicked, bounced, failed, complained, unsubscribed, canceled). condition : matched, not_matched. experiment : la clé de la variante choisie. call_webhook : 2xx, 4xx, 5xx, timeout, network_error. Étapes en échec : error.
funnelobject
Uniquement pour les étapes send_email. Décomptes cumulés : accepted inclut tous les e-mails qui sont allés plus loin, delivered inclut les e-mails chargés et cliqués, et loaded inclut les e-mails cliqués. bounced, failed, complained et unsubscribed sont des décomptes simples.
GET/automations/{id}/stats
Terminal
curl -G https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/stats \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -d since=2026-10-01T00:00:00Z
JSON
{
  "data": {
    "joined": { "total": 0, "by_status": {}, "by_outcome": {} },
    "welcome_email": {
      "total": 412,
      "by_status": { "completed": 409, "failed": 3 },
      "by_outcome": { "delivered": 251, "loaded": 98, "clicked": 41, "bounced": 19, "error": 3 },
      "funnel": {
        "accepted": 390,
        "delivered": 390,
        "loaded": 139,
        "clicked": 41,
        "bounced": 19,
        "failed": 0,
        "complained": 0,
        "unsubscribed": 0
      }
    },
    "wait_1_day": {
      "total": 409,
      "by_status": { "completed": 352, "waiting": 57 },
      "by_outcome": {}
    },
    "is_free_user": {
      "total": 352,
      "by_status": { "completed": 352 },
      "by_outcome": { "matched": 270, "not_matched": 82 }
    },
    "upgrade_tips": {
      "total": 270,
      "by_status": { "completed": 270 },
      "by_outcome": { "accepted": 12, "delivered": 180, "loaded": 61, "clicked": 17 },
      "funnel": {
        "accepted": 270,
        "delivered": 258,
        "loaded": 78,
        "clicked": 17,
        "bounced": 0,
        "failed": 0,
        "complained": 0,
        "unsubscribed": 0
      }
    },
    "done": {
      "total": 82,
      "by_status": { "completed": 82 },
      "by_outcome": {}
    }
  }
}

Récupérer les statistiques d’une étape

Renvoie les décomptes d’une étape d’une automatisation. Nécessite une clé API de portée full. Les champs sont les mêmes que dans Récupérer les statistiques.

GET/automations/{id}/steps/{step_key}/stats

Paramètres de chemin

idstringobligatoire
L’ID de l’automatisation (aut_…).
step_keystringobligatoire
La key de l’étape, par exemple welcome_email.

Paramètres de requête

sincestring
Ne compte que les exécutions d’étapes créées à cette date ou après. Date-heure RFC 3339.
untilstring
Ne compte que les exécutions d’étapes créées à cette date ou avant. Date-heure RFC 3339.

Réponse

Renvoie data avec total, by_status, by_outcome et, pour les étapes send_email, funnel. Renvoie 404 si l’automatisation ou la clé d’étape n’existe pas.

GET/automations/{id}/steps/{step_key}/stats
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/steps/welcome_email/stats \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "total": 412,
    "by_status": { "completed": 409, "failed": 3 },
    "by_outcome": { "delivered": 251, "loaded": 98, "clicked": 41, "bounced": 19, "error": 3 },
    "funnel": {
      "accepted": 390,
      "delivered": 390,
      "loaded": 139,
      "clicked": 41,
      "bounced": 19,
      "failed": 0,
      "complained": 0,
      "unsubscribed": 0
    }
  }
}

Cette page vous a-t-elle été utile ?

Merci pour votre retour.

Merci, nous lisons chaque message.