Pular para o conteúdo
Docs

Monte fluxos com gatilhos e etapas, execute-os e inspecione as execuções.

URL basehttps://api.emailit.com/v2AutenticaçãoErrosLimites de requisições

Criar uma automação

Cria uma automação com status draft a partir de um grafo de etapas e conexões. Requer uma chave de API com escopo full. As automações estão em beta.

A automação não faz nada até você iniciá-la. Cada execução custa 3 créditos ao começar, e cada e-mail enviado por send_email ou forward_email custa mais 1 crédito. Em um workspace não verificado, essas ações só podem enviar para os e-mails das contas dos membros do workspace.

POST/automations

Parâmetros do corpo

contextstringobrigatório
A que cada execução se refere: contact, email ou event. O contexto define quais gatilhos e ações você pode usar e não pode ser alterado depois. Consulte Contextos.
namestringobrigatório
Nome da automação, com até 191 caracteres.
descriptionstring | null
Descrição opcional.
settingsobject
Regras de execução. Consulte Configurações.
stepsobject[]obrigatório
As etapas de gatilho e de ação, com pelo menos um gatilho. Consulte Etapas.
connectionsobject[]obrigatório
As arestas entre as etapas. Passe [] para um grafo que só tem um gatilho. Consulte Conexões.

Configurações

exit_conditionsobject[]

Cancela a execução de um contato assim que um destes itens corresponde (contexto contact, até 20). Cada item é um critério de evento, o nome do gatilho em event mais os campos de configuração dele, como { "event": "contact.tag_added", "tag": "customer" } ou { "event": "contact.on_event", "event_name": "purchase" }, ou uma condição sobre o contato, { "condition": { "match": "all", "rules": [...] } }, com as regras da ação condition. Os critérios aceitam todos os gatilhos de contato, exceto os gatilhos de data e contact.visits_url, e um filter opcional, como nas configurações dos gatilhos. Os eventos de segmento (segment_id obrigatório) e os eventos de e-commerce estão em alfa, como os gatilhos correspondentes. Os critérios contact.on_event, aqui e nas etapas goal e wait_until, exigem um plano Pro, Business ou Custom. Consulte Condições de saída e metas.

exit_on_audience_removalbooleanpadrão: false
true cancela uma execução iniciada por contact.added_to_audience quando o contato é removido dessa lista de contatos, se descadastra dela ou se descadastra de todos os e-mails de marketing.
on_step_failurestringpadrão: stop
stop marca a execução como failed quando uma etapa falha. skip registra a etapa com falha e continua pelas arestas default dela (ou por no depois de uma condition com falha).
allow_reentrybooleanpadrão: true
false ignora um gatilho quando o mesmo contato (ou e-mail) já tem uma execução em andamento nesta automação.
max_concurrent_runsintegerpadrão: 0
Número máximo de execuções com status running ao mesmo tempo. 0 significa sem limite.
cooldown_secondsintegerpadrão: 0
Ignora um gatilho quando o mesmo contato (ou e-mail) iniciou uma execução nesta automação dentro desse número de segundos.

Etapas

keystringobrigatório
O seu identificador da etapa, único dentro da automação, por exemplo welcome_email. As conexões, as estatísticas das etapas e as atualizações se referem às etapas pela chave.
typestringobrigatório
trigger ou action.
triggerstring
Nome do gatilho, obrigatório quando type é trigger. Consulte Gatilhos.
actionstring
Nome da ação, obrigatório quando type é action. Consulte Ações.
configobject
Configurações do gatilho ou da ação.

Conexões

fromstringobrigatório
Chave da etapa em que a aresta começa.
tostringobrigatório
Chave da próxima etapa.
branchstringpadrão: default
Qual resultado da etapa from segue esta aresta. Etapas condition usam yes e no; etapas wait_until usam matched e timeout (eventos e condições) ou default e passed (datas); etapas experiment usam as chaves das variantes. Todas as outras etapas usam default.

Contextos

Contexto Uma execução se refere a Gatilhos Regras
contact Um contato. send_email envia para esse contato. contact.*, system.* Um ou mais gatilhos. Todos devem se conectar à mesma primeira ação.
email Um e-mail (enviado ou recebido). email.*, system.* Um ou mais gatilhos. Todos devem se conectar à mesma primeira ação.
event Apenas o payload do gatilho. event.*, system.* Exatamente um gatilho.

Toda ação deve ser alcançável a partir de um gatilho. Uma execução começa na ação conectada ao gatilho que disparou e segue as conexões:

  • condition segue apenas a aresta cujo branch é yes ou no, conforme o resultado.
  • wait_until segue apenas matched ou timeout (eventos e condições), ou default ou passed (datas).
  • experiment segue as arestas da variante escolhida. Quando esse caminho termina, a execução continua pelas arestas default da etapa de experimento.
  • wait adia a próxima etapa.
  • Todas as outras ações seguem as arestas default delas. Uma etapa com várias arestas de saída executa todas elas.
  • Uma etapa goal também pode ser alcançada fora de ordem: quando o contato atinge a meta, a execução pula para ela e continua depois dela.

Uma execução fica completed quando não restam etapas ou uma etapa end_run é executada, failed quando uma etapa falha (com on_step_failure: "stop") e canceled quando uma condição de saída corresponde, a execução é cancelada ou você interrompe a automação.

Gatilhos

Gatilho Contexto Dispara quando
contact.added_to_audience contact Um contato se inscreve em uma lista de contatos, incluindo reinscrições.
contact.removed_from_audience contact Um inscrito é excluído de uma lista de contatos.
contact.added_to_segment contact Um contato entra em um segmento rastreado. Não dispara para alterações causadas pela edição do segmento. Alfa: apenas a equipe do Emailit pode adicionar gatilhos de segmento; as outras requisições retornam 403 com error: "segments_alpha".
contact.removed_from_segment contact Um contato sai de um segmento rastreado. Não dispara para alterações causadas pela edição do segmento. Alfa, como contact.added_to_segment.
contact.created contact Um contato é criado.
contact.updated contact Um contato é atualizado, incluindo as tags e a pontuação.
contact.tag_added, contact.tag_removed contact Uma tag é adicionada ao contato ou removida dele.
contact.score_changed contact A pontuação de lead do contato muda.
contact.unsubscribed contact O contato se descadastra de uma lista de contatos ou de todos os e-mails de marketing.
contact.loaded_email contact Um destinatário que é contato no workspace abre um e-mail.
contact.clicked_in_email contact Um destinatário que é contato no workspace clica em um link rastreado.
contact.on_date contact Chega a data de um campo personalizado de data, opcionalmente deslocada em dias ou semanas, em um horário do dia em um fuso horário. Uma vez, ou todo ano com repeat: "yearly".
contact.date_anniversary contact Todo ano, no mês e no dia de um campo personalizado de data, com as mesmas opções.
contact.on_event contact Um evento personalizado (c:) ou um evento do workspace (w:) do contato. Planos Business e Custom: os outros planos recebem 403 com error: "plan_required" e required_plan: "business".
form.submitted contact Um formulário é enviado com um endereço de e-mail.
contact.on_purchase contact Um contato faz um novo pedido. Alfa: apenas a equipe do Emailit pode adicionar gatilhos de e-commerce; as outras requisições retornam 403 com error: "commerce_alpha".
contact.abandoned_cart contact O carrinho de um contato é abandonado. Alfa, como contact.on_purchase.
contact.visits_url contact Aceito, mas o Emailit ainda não o dispara.
email.received email Chega um e-mail recebido.
email.delivered, email.bounced, email.complained, email.loaded, email.clicked, email.failed, email.suppressed, email.canceled email Ocorre o evento de e-mail de mesmo nome.
event.<name> event Qualquer nome que comece com event.. O Emailit ainda não emite eventos event.*; inicie as automações de evento com system.manual.
system.manual todos Você chama Disparar uma execução.
system.schedule todos Aceito, mas o Emailit ainda não dispara gatilhos agendados.

Campos de config dos gatilhos:

audience_idstring
Para contact.added_to_audience e contact.removed_from_audience: dispara apenas para esta lista de contatos (aud_…).
segment_idstring
Para contact.added_to_segment e contact.removed_from_segment: o segmento rastreado (seg_…). Opcional ao criar a automação, obrigatório ao atualizar as etapas dela. Um segmento que não existe ou não é rastreado retorna 400.
include_current_membersbooleanpadrão: false
Para contact.added_to_segment: no primeiro início da automação, inicia também uma execução para cada contato que já está no segmento. As configurações de reentrada continuam valendo.
date_fieldstring
Para contact.date_anniversary e contact.on_date: a chave do campo personalizado que guarda a data, por exemplo birthday.
offset, time, timezone, repeatobject, string, string, string
Para os gatilhos de data: offset é { "amount": 3, "unit": "days", "direction": "before" } (unit days ou weeks), time é HH:MM (padrão 00:00), timezone é um nome IANA (padrão UTC), e repeat é once ou yearly para contact.on_date.
tagstring
Para contact.tag_added e contact.tag_removed: apenas esta tag.
threshold, directionnumber, string
Para contact.score_changed: apenas quando a pontuação ultrapassa threshold, subindo (up, padrão) ou descendo (down).
fieldstring
Para contact.updated: apenas quando este campo mudou, por exemplo custom_fields.purchased, tags ou score.
event_namestring
Para contact.on_event: o nome do evento, como purchase (corresponde a c:purchase e a w:purchase) ou w:webinar.attended. Omita-o para aceitar qualquer evento do workspace ou personalizado. Filtre pelas propriedades do evento com filter, por exemplo properties.total.
form_idstring
Para form.submitted: apenas este formulário.
filterobject

Dispara apenas quando o evento corresponde: { "match": "all", "rules": [{ "field": "subject", "operator": "contains", "value": "Invoice" }] }. match é all (padrão) ou any. field é um caminho com pontos dentro do object do evento, por exemplo to ou email.subject; um payload. inicial é ignorado.

Operadores: equals, not_equals, contains, not_contains, starts_with, ends_with, greater_than, less_than, in, not_in, is_set, is_not_set. Todos os operadores, exceto is_set e is_not_set, precisam de um value; in e not_in recebem um array.

Ações

Ação Contexto Configuração
send_email todos type (obrigatório, template), template_id (obrigatório: um ID tem_ ou o alias de um template publicado), from, subject, reply_to, to, email_type, tracking
forward_email email, event to (obrigatório), from, subject, email_id
wait todos seconds (obrigatório, de 0 a 2.592.000, ou seja, 30 dias)
wait_until todos (modos event e condition: contact) mode (date, event ou condition) e os campos desse modo
condition todos filter (obrigatório, consulte Condições)
goal contact event ou condition, if_not_met
experiment todos variants (obrigatório), control
call_webhook todos url (obrigatório), method, headers, body, secret, fail_on_error
run_automation todos automation_id (obrigatório), exit_current
exit_automation contact automation_ids ou all: true
end_run todos Nenhuma
end todos Nenhuma
add_tag, remove_tag contact tags (obrigatório)
update_score contact operation (add, subtract ou set), value (obrigatório)
add_to_audience contact audience_id (obrigatório), emit_events
remove_from_audience contact audience_id (obrigatório), mode (remove ou unsubscribe), emit_events
update_subscription contact action (subscribe ou unsubscribe, obrigatório), scope (audience, all_audiences ou global), audience_id
edit_contact contact fields (obrigatório), emit_events
add_to_suppressions email, event type, reason, email
remove_from_suppressions email, event email
create_contact email, event email, first_name, audience_id, emit_events
  • send_email envia o template. Por padrão, from é o remetente do template e deve estar em um domínio de envio verificado. subject substitui o assunto do template. reply_to é um endereço ou um array de endereços e pode ser uma variável. No contexto contact, o e-mail vai para o contato da execução; nos contextos email e event, defina to. email_type é marketing (padrão no contexto contact: ignorado para contatos descadastrados, com link de descadastro e cabeçalhos List-Unsubscribe) ou transactional. tracking: { "loads": true, "clicks": true } substitui as configurações de rastreamento do domínio, e tracking: {} volta a usá-las.
  • wait_until espera por uma data: { "mode": "date", "date": { "type": "global", "key": "webinar_date" }, "offset": { "amount": 1, "unit": "days", "direction": "before" }, "time": "09:00", "timezone": "Europe/Prague", "if_passed": "continue" }, em que date.type é contact (com field), global (com key), fixed (com value) ou payload (com path), e if_passed é continue ou branch. Por um evento: { "mode": "event", "event": { "event": "contact.clicked_in_email" }, "timeout": { "amount": 2, "unit": "days" } }. Por uma condição: { "mode": "condition", "condition": { ... }, "timeout": ... }. As esperas duram até 365 dias. Consulte Wait until.
  • goal recebe um critério de evento em event (como em exit_conditions) ou uma condition. Quando o contato atinge a meta, a execução pula para ela. if_not_met (continue, wait ou end) decide o que acontece quando uma execução chega à meta antes de atingi-la. As etapas de meta exigem um plano Pro, Business ou Custom.
  • forward_email encaminha o e-mail da execução (ou o e-mail em email_id) para to. Por padrão, from é o remetente original e subject é Fwd: <original subject>.
  • condition recebe { "match": "all" | "any", "rules": [...] }. Consulte Condições. A etapa continua em yes ou no.
  • experiment escolhe aleatoriamente, de acordo com o peso, uma das variants (ou control), cada uma no formato { "key": "a", "weight": 50 }, e continua na ramificação com o nome da chave escolhida.
  • call_webhook envia uma requisição HTTP (método padrão POST, Content-Type JSON) e registra a classe do status (2xx, 4xx, 5xx), timeout ou network_error. Sem body, ela envia a automação, a execução, o contato e o payload como JSON. Com secret, o corpo é assinado em X-Emailit-Signature. Uma resposta diferente de 2xx não faz a etapa falhar, a menos que fail_on_error seja true. Endereços privados são bloqueados.
  • run_automation inicia uma execução de outra automação em andamento para o mesmo contato, com o payload desta execução. A execução atual continua, ou termina com exit_current: true.
  • exit_automation cancela as execuções em andamento do contato nas automações de automation_ids, ou em todas as outras automações com all: true.
  • end_run encerra a execução, incluindo as outras ramificações. end encerra apenas a própria ramificação.
  • add_tag e remove_tag alteram as tags do contato. update_score altera a pontuação de lead.
  • update_subscription inscreve ou descadastra o contato de uma lista de contatos, de todas as listas (apenas unsubscribe) ou de todos os e-mails de marketing (global).
  • remove_from_audience exclui a participação do contato na lista (mode: "remove", o padrão) ou o mantém na lista como descadastrado (mode: "unsubscribe").
  • emit_events (padrão true) em add_to_audience, remove_from_audience, create_contact e edit_contact envia os eventos subscriber.* e contact.* de sempre, para que os webhooks os recebam e outras automações sejam iniciadas. As etapas salvas antes de 2026-10-20 têm emit_events: false, e as etapas remove_from_audience delas têm mode: "unsubscribe".
  • edit_contact recebe fields: [{ "key": "first_name", "value": "Ada" }]. As chaves email, first_name, last_name e unsubscribed atualizam o contato; qualquer outra chave (com ou sem custom_fields.) define um campo personalizado, convertido para o tipo dele. operation é set (padrão), clear, increment ou decrement.
  • add_to_suppressions suprime o endereço da execução (type padrão recipient, reason padrão automation). remove_from_suppressions remove a supressão. No contexto event, passe email.
  • create_contact cria o contato (ou encontra o existente) e, opcionalmente, o inscreve em audience_id. No contexto email, o padrão de email é o destinatário do e-mail.

Os valores de string em qualquer configuração de ação podem usar variáveis que o Emailit preenche quando a etapa é executada: {{contact.email}}, {{cf.plan}}, {{global.webinar_link}}, {{email.mail_from}}, {{payload.object.subject}} ou {{meta.source_event_id}}, por exemplo "to": "{{email.mail_from}}". Os templates enviados por send_email, e o subject dela, são renderizados com o Temple e também têm diretamente os campos do contato, como {{ first_name }}, {{tags}} e {{score}}.

Condições

Um filtro condition (e também as condições de wait_until e goal e as exit_conditions) é { "match": "all" | "any", "rules": [...] }. Uma regra é { "field", "operator", "value" }, ou um grupo aninhado { "match", "rules" }, com até 3 níveis e 50 regras.

field operator value
Campos do contato (email, first_name, last_name, created_at, unsubscribed, score), subscribed, custom_fields.<key>, global.<key>, payload.<path>, meta.<path>, contact.<path>, email.<path> equals, not_equals, contains, not_contains, starts_with, ends_with, in, not_in, is_set, is_not_set, greater_than, less_than, greater_or_equal, less_or_equal, is_true, is_false, before, after, on, is_past, is_future, within_last, within_next, more_than_ago, more_than_from_now O valor. Os operadores de dias recebem dias ou { "amount", "unit" }. Não é necessário para is_set, is_not_set, is_true, is_false, is_past, is_future.
tags contains, not_contains, in, not_in, is_set, is_not_set Uma tag, ou um array para in e not_in.
audience is_subscribed, is_not_subscribed, is_member, is_not_member Um ID de lista de contatos (aud_…).
engagement opened, not_opened, clicked, not_clicked "run", "automation", { "scope": "step", "step": "<key>" }, { "scope": "any", "days": 30 } ou { "scope": "campaign", "campaign_id": "cmp_…" }.
segment is_member, is_not_member Um ID de segmento (seg_…), rastreado ou não. Alfa.
commerce.<field> Os operadores de segmento do campo, exceto cinco que usam os nomes desta tabela: greater_or_equal, less_or_equal, within_last, within_next e more_than_ago O valor que a regra de segmento recebe. Alfa. Veja abaixo.

Campos sem prefixo são resolvidos no contato (first_name, custom_fields.plan) ou no e-mail (rcpt_to, subject) da execução. subscribed é true quando o contato pode receber e-mails de marketing.

As regras commerce.<field> usam os campos de e-commerce dos segmentos, avaliados da mesma forma: orders_count, total_spent, average_order_value, first_order_at, last_order_at, expected_next_order_at, last_active_at, churn_risk, purchased, viewed_product, used_coupon e cart, por exemplo { "field": "commerce.purchased", "operator": "has", "value": { "days": 30, "product_ids": ["sku-1"] } }. As regras de segmento e de e-commerce estão em alfa: as outras requisições que as adicionam retornam 403 com error segments_alpha ou commerce_alpha. As automações que já as têm continuam funcionando para todos.

Retorno

Retorna 201 Created com a automação em data, incluindo o ID de cada etapa (aus_…) e as conexões. status é draft.

A criação verifica a estrutura do grafo: nomes de gatilhos e ações válidos para o contexto, chaves únicas, conexões e ramificações válidas, alcançabilidade, as settings e se todo endereço from de send_email usa um domínio de envio verificado. Ela não verifica se a configuração de cada ação está completa; Atualizar uma automação verifica. Os erros retornam 400 com errors organizados pelo caminho do campo.

Os recursos que o plano do workspace não inclui retornam 403 com error: "plan_required", o plano mais básico que os tem em required_plan e uma message. As etapas goal e os critérios contact.on_event em exit_conditions, goal e wait_until exigem pro, e o gatilho contact.on_event exige business.

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
}

Obter uma automação

Obtém uma automação com o grafo completo. Requer uma chave de API com escopo full.

GET/automations/{id}

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).

Retorno

Retorna a automação em data.

idstring
ID da automação, com o prefixo aut_.
contextstring
contact, email ou event.
namestring
Nome da automação.
descriptionstring | null
Descrição opcional.
statusstring
draft, running, paused, stopped ou archived.
settingsobject
Regras de execução: on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Vazio quando você não definiu nenhuma.
last_triggered_atstring | null
Quando a automação iniciou uma execução pela última vez.
published_atstring | null
Quando a automação foi iniciada pela primeira vez.
stepsobject[]
O id (aus_…), a key, o type, o trigger, a action e a config de cada etapa. Os detalhes de uma execução se referem às etapas pelo id; as estatísticas, pela key.
connectionsobject[]
As chaves das etapas from e to de cada aresta e o branch dela.

Consulte Criar uma automação para saber o significado de cada gatilho, ação e configuração. Retorna 404 se a automação não existir ou tiver sido excluída.

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" }
    ]
  }
}

Atualizar uma automação

Atualiza o nome, a descrição, as configurações ou o grafo de uma automação. Requer uma chave de API com escopo full. O contexto não pode ser alterado.

Para alterar o grafo, envie steps e connections juntos; eles substituem o grafo atual. As etapas cuja key já existe mantêm o ID e o histórico de execuções, as etapas que você deixar de fora são excluídas e as novas chaves são adicionadas. Ao contrário da criação, a atualização também valida a configuração de cada ação (por exemplo, send_email precisa de type e template_id, e wait precisa de seconds). Quando uma etapa mantém a key e a ação, as configurações que você deixar de fora da config dela mantêm os valores salvos: email_type e tracking em send_email, emit_events nas etapas de contato e mode em remove_from_audience. Envie uma configuração para alterá-la; tracking: {} volta a usar as configurações de rastreamento do domínio.

Pause a automação antes de alterar o grafo de uma automação em andamento e depois inicie-a de novo para que os novos gatilhos entrem em vigor.

POST/automations/{id}

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).

Parâmetros do corpo

namestring
Nome, com até 191 caracteres.
descriptionstring
Descrição.
settingsobject
Substitui todas as configurações: exit_conditions, exit_on_audience_removal, on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Consulte Configurações. As novas condições de saída valem para as execuções em andamento, também em automações em execução.
stepsobject[]
A lista completa de etapas. Obrigatório quando você envia connections. Consulte Etapas.
connectionsobject[]
A lista completa de conexões. Obrigatório quando você envia steps. Consulte Conexões.

Retorno

Retorna a automação atualizada em data, com message e notify. Retorna 400 com errors organizados pelo caminho do campo quando a validação falha, 403 com error: "plan_required" quando a atualização adiciona uma etapa, um gatilho ou uma condição de saída que o plano não inclui (consulte Criar uma automação), e 404 se a automação não existir. O que a automação já tem continua permitido depois de um downgrade.

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
}

Listar automações

Retorna as automações do workspace, das mais recentes para as mais antigas, sem as etapas e as conexões. Requer uma chave de API com escopo full. Automações excluídas não são listadas.

GET/automations

Parâmetros de consulta

pageintegerpadrão: 1
Número da página, a partir de 1.
per_pageintegerpadrão: 25
Automações por página, de 1 a 100.
filter[context]string
Apenas automações com este contexto: contact, email ou event.
filter[status]string
Apenas automações com este status: draft, running, paused, stopped ou archived.
filter[name]string
Busca sem diferenciar maiúsculas de minúsculas em parte do nome.
sortstringpadrão: created_at
Campo de ordenação: name, created_at, updated_at ou last_triggered_at.
orderstringpadrão: desc
Direção da ordenação: asc ou desc.

Você também pode usar os filtros genéricos key.condition=value em name, status, context e created_at, com match. Consulte Filtragem.

Retorno

dataobject[]
As automações desta página: id, context, name, description, status, settings, last_triggered_at, published_at, created_at, updated_at. Nesta listagem, settings é sempre um objeto vazio; obtenha a automação para lê-lo.
total_recordsinteger
Número de automações que correspondem.
per_pageinteger
Tamanho de página usado.
current_pageinteger
O número desta página.
total_pagesinteger
Número de páginas.
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
}

Excluir uma automação

Exclui uma automação. Ela desaparece das listagens e para de reagir aos gatilhos. Requer uma chave de API com escopo full.

As execuções que já estão em andamento não são canceladas. Para cancelá-las, interrompa a automação antes de excluí-la.

DELETE/automations/{id}

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).

Retorno

Retorna uma message confirmando a exclusão. Retorna 404 se a automação não existir ou já tiver sido excluída.

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
}

Iniciar uma automação

Define o status da automação como running. A partir desse momento, os gatilhos correspondentes iniciam execuções; os eventos que aconteceram antes de você iniciá-la, não. Requer uma chave de API com escopo full.

Você pode iniciar uma automação draft, paused ou stopped. O primeiro início define published_at. Somente no primeiro início, os gatilhos contact.added_to_segment com include_current_members: true também iniciam uma execução para cada contato que já está no segmento rastreado deles.

Iniciar não valida o grafo de novo. Se você montou a automação com Criar uma automação, que verifica apenas a estrutura, confira se a configuração de cada ação está completa, ou envie o grafo uma vez por Atualizar uma automação, que o valida por completo. Uma etapa com configuração incompleta falha quando uma execução chega a ela.

POST/automations/{id}/start

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).

Retorno

Retorna a automação em data com status definido como running. Retorna 404 se a automação não existir.

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
}

Pausar uma automação

Define o status da automação como paused. Os gatilhos dela param de iniciar novas execuções, mas as execuções já em andamento continuam, incluindo as que estão aguardando em uma etapa wait. Requer uma chave de API com escopo full.

Para também cancelar as execuções em andamento, interrompa a automação em vez de pausá-la. Inicie-a de novo para retomar os disparos.

POST/automations/{id}/pause

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).

Retorno

Retorna a automação em data com status definido como paused. Retorna 404 se a automação não existir.

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
}

Interromper uma automação

Define o status da automação como stopped e cancela todas as execuções que ainda estão running; essas execuções recebem o status canceled, e as etapas restantes delas não são executadas. Requer uma chave de API com escopo full.

A interrupção está disponível apenas pela API. Para manter as execuções em andamento, pause a automação em vez de interrompê-la. Você pode iniciar de novo uma automação interrompida; as novas execuções começam do zero.

POST/automations/{id}/stop

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).

Retorno

Retorna a automação em data com status definido como stopped. Retorna 404 se a automação não existir.

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
}

Disparar uma execução

Dispara o gatilho system.manual com um payload escolhido por você. A automação precisa estar running e ter uma etapa de gatilho system.manual; caso contrário, nenhuma execução é iniciada. Requer uma chave de API com escopo full. Os gatilhos manuais estão disponíveis apenas pela API.

A execução começa de forma assíncrona e custa 3 créditos, como qualquer outra execução. Encontre-a com Listar execuções.

POST/automations/{id}/trigger

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).

Parâmetros do corpo

payloadobject

Os dados da execução. O Emailit adiciona automation_id e guarda o resultado como o payload da execução. As etapas podem lê-lo com placeholders como {{payload.order_id}} e condições como payload.plan.

A que a execução se refere depende do contexto da automação:

  • contact: passe contact_id (con_…). As ações de contato e send_email usam esse contato.
  • email: passe email_id (em_…). As ações de e-mail usam esse e-mail.
  • event: quaisquer dados. Defina to ou email nas configurações das ações, por exemplo "to": "{{payload.customer_email}}".

Retorno

Retorna 200 com uma message assim que o gatilho é colocado na fila. Retorna 422 se a automação não estiver running e 404 se ela não existir.

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."
}

Listar execuções

Retorna as execuções de uma automação, das mais recentes para as mais antigas. Cada execução é uma passagem pelo grafo, iniciada por um gatilho. Requer uma chave de API com escopo full.

GET/automations/{id}/runs

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).

Parâmetros de consulta

pageintegerpadrão: 1
Número da página, a partir de 1.
per_pageintegerpadrão: 25
Execuções por página, de 1 a 100.
filter[status]string
Apenas execuções com este status: running, completed, failed ou canceled.
filter[contact_id]string
Apenas execuções deste contato (con_…). Para ver as execuções de um contato em todas as automações, use Listar as execuções de um contato.

Você também pode filtrar com key.condition=value em status, event e created_at (por exemplo created_at.after=2026-10-01) e ordenar com order e direction pelas mesmas chaves. Consulte Filtragem.

Retorno

dataobject[]
As execuções desta página. Veja os campos abaixo.
total_records, per_page, current_page, total_pagesinteger
Detalhes da paginação.

Cada execução tem:

idstring
ID da execução, com o prefixo aur_.
automation_idstring
A automação (aut_…).
contact_idstring | null
O contato da execução (con_…) no contexto contact.
email_idstring | null
O e-mail da execução (em_…) no contexto email.
event_idstring | null
ID do evento de origem, quando o payload do gatilho tiver um.
eventstring
O gatilho que iniciou a execução, por exemplo contact.added_to_audience ou system.manual.
payloadobject
Sempre um objeto vazio nesta listagem. Obtenha a execução para ler o payload do gatilho.
metaobject
Sempre um objeto vazio nesta listagem. Obtenha a execução para ler os metadados dela, como failure_reason.
statusstring
running, completed, failed ou canceled.
cancel_reasonstring | null
Por que uma execução cancelada parou: exit_condition, left_audience, canceled_by_user (ou o reason que você enviou), exited_by_api, exited_by_automation, automation_stopped ou contact_deleted.
started_at, completed_at, created_at, updated_atstring | null
Timestamps em 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
}

Obter uma execução

Obtém uma execução de uma automação, incluindo as etapas que ela executou. Requer uma chave de API com escopo full.

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

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).
run_idstringobrigatório
O ID da execução (aur_…).

Retorno

Retorna a execução em data com os campos descritos em Listar execuções, além do payload e do meta completos, de um array run_steps e de um array waits.

payloadobject | null
O payload do gatilho: os dados do evento ({ "object": { … } }) ou o payload que você passou para Disparar uma execução, com automation_id adicionado.
metaobject | null
source_event_id vincula a execução ao evento que a iniciou. Execuções com falha podem ter failure_reason: insufficient_credits (não foi possível cobrar os 3 créditos da execução) ou run_timeout (a execução ainda estava running depois de 72 horas sem nenhuma etapa em espera). Execuções canceladas têm cancel_reason, e execuções concluídas que terminaram antes do fim têm ended_by, como end_run_step, moved_to_automation ou goal_not_met. Execuções iniciadas por outra automação têm depth e também parent_run_id (iniciada por uma etapa Start automation) ou caused_by (iniciada por uma alteração feita por uma etapa).
run_stepsobject[]

Uma entrada por etapa alcançada pela execução:

  • step_id: o ID da etapa (aus_…), e step_key e action, a chave e a ação da etapa.
  • status: running, waiting (uma etapa wait ou wait_until que ainda não terminou), completed, failed, skipped (pulada quando a execução foi para uma meta ou terminou antes do fim) ou canceled.
  • outcome: o resultado, por exemplo, o status mais recente do e-mail que uma etapa send_email enviou (delivered, loaded, clicked…), skipped para um e-mail de marketing a um contato descadastrado, matched ou not_matched para uma condição, matched ou timeout para um wait_until, ou reached ou not_reached para uma meta.
  • data: o resultado da etapa. Por exemplo, send_email retorna { "result": "email_queued", "email_oid": "em_…", "to": "…" }, condition retorna { "result": true, "branch": "yes" } e as etapas com falha retornam { "error": "…" }.
  • started_at, completed_at, created_at.
waitsobject[]

As esperas de wait_until (por evento ou condição) e de goal da execução: id, step_key, kind (event ou condition), event, status (waiting, matched, timed_out ou canceled), timeout_at, created_at e resolved_at.

Retorna 404 se a automação ou a execução não existir.

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"
      }
    ]
  }
}

Cancelar uma execução

Cancela uma execução que ainda está running. As etapas em espera em um Time delay ou em um Wait until são canceladas, nenhuma outra etapa é executada, e o status da execução passa a ser canceled. Requer uma chave de API com escopo full.

As execuções canceladas não podem ser retomadas. Para cancelar todas as execuções de um contato na automação, use Remover um contato. Para cancelar execuções automaticamente, use condições de saída.

POST/automations/{id}/runs/{run_id}/cancel

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).
run_idstringobrigatório
O ID da execução (aur_…).

Parâmetros do corpo

reasonstringpadrão: canceled_by_user
Salvo como o cancel_reason da execução, com até 200 caracteres.

Retorno

Retorna a execução em data, com status canceled e cancel_reason. Retorna 404 se a automação ou a execução não existir, e 422 se a execução não estiver em andamento.

POST/automations/{id}/runs/{run_id}/cancel
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3Mv8Xq2nKp5Lt/runs/aur_7Kp2Vx9mQt4Lw/cancel \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason": "Customer asked to stop"}'

Remover um contato de uma automação

Cancela todas as execuções desta automação que ainda estão running para um contato, por exemplo, a partir da sua loja quando um pedido é pago. As execuções recebem o status canceled. Requer uma chave de API com escopo full.

Para tirar contatos automaticamente quando algo acontece, use condições de saída.

POST/automations/{id}/exit

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).

Parâmetros do corpo

contact_idstring
O ID do contato (con_…). Envie este parâmetro ou email.
emailstring
O endereço de e-mail do contato.
reasonstringpadrão: exited_by_api
Salvo como o cancel_reason de cada execução, com até 200 caracteres.

Retorno

dataobject
automation_id, contact_id e canceled_runs, os IDs das execuções canceladas. Vazio quando o contato não tinha execuções em andamento.
messagestring
Por exemplo, Canceled 1 run.

Retorna 400 sem contact_id ou email, e 404 se a automação ou o contato não existir.

POST/automations/{id}/exit
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3Mv8Xq2nKp5Lt/exit \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "ada@example.com"}'

Listar as execuções de um contato

Retorna as 100 execuções mais recentes de um contato em todas as automações, das mais recentes para as mais antigas, cada uma com o nome da automação. Requer uma chave de API com escopo full.

GET/automations/runs

Parâmetros de consulta

contact_idstring
O ID do contato (con_…). Envie este parâmetro ou email.
emailstring
O endereço de e-mail do contato.
statusstring
Apenas execuções com este status: running, completed, failed ou canceled.

Retorno

dataobject[]
As execuções, no mesmo formato de Listar execuções, mais automation_name.

Retorna 400 sem contact_id ou email, e 404 se o contato não existir.

GET/automations/runs
Terminal
curl "https://api.emailit.com/v2/automations/runs?email=ada@example.com&status=running" \
  -H "Authorization: Bearer $EMAILIT_API_KEY"

Obter estatísticas

Retorna contagens de todas as etapas de uma automação, organizadas pela chave da etapa. Requer uma chave de API com escopo full.

GET/automations/{id}/stats

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).

Parâmetros de consulta

sincestring
Conta apenas as execuções de etapas criadas neste horário ou depois dele. Data e hora RFC 3339, por exemplo 2026-10-01T00:00:00Z.
untilstring
Conta apenas as execuções de etapas criadas neste horário ou antes dele. Data e hora RFC 3339.
run_ids[]string
Conta apenas estas execuções (aur_…). Repita o parâmetro para várias execuções.

Retorno

Retorna data, um objeto com uma entrada por chave de etapa. As etapas que nenhuma execução alcançou têm total igual a 0.

totalinteger
Número de vezes que as execuções chegaram à etapa.
by_statusobject
Contagens por status da etapa: running, waiting, completed, failed.
by_outcomeobject
Contagens por resultado. send_email e forward_email: accepted e, depois, o estado mais recente do e-mail (delivered, loaded, clicked, bounced, failed, complained, unsubscribed, canceled). condition: matched, not_matched. experiment: a chave da variante escolhida. call_webhook: 2xx, 4xx, 5xx, timeout, network_error. Etapas com falha: error.
funnelobject
Apenas para etapas send_email. Contagens cumulativas: accepted inclui todos os e-mails que avançaram mais, delivered inclui os e-mails carregados e clicados, e loaded inclui os clicados. bounced, failed, complained e unsubscribed são contagens 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": {}
    }
  }
}

Obter estatísticas das etapas

Retorna as contagens de uma etapa de uma automação. Requer uma chave de API com escopo full. Os campos são os mesmos de Obter estatísticas.

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

Parâmetros de caminho

idstringobrigatório
O ID da automação (aut_…).
step_keystringobrigatório
A key da etapa, por exemplo welcome_email.

Parâmetros de consulta

sincestring
Conta apenas as execuções de etapas criadas neste horário ou depois dele. Data e hora RFC 3339.
untilstring
Conta apenas as execuções de etapas criadas neste horário ou antes dele. Data e hora RFC 3339.

Retorno

Retorna data com total, by_status, by_outcome e, para etapas send_email, funnel. Retorna 404 se a automação ou a chave da etapa não existir.

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
    }
  }
}

Esta página foi útil?

Obrigado pelo feedback.

Obrigado, lemos todas as mensagens.