Pular para o conteúdo
Docs

Envie e-mails, consulte as mensagens e o conteúdo delas, e agende, cancele, tente de novo ou encaminhe envios.

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

Enviar um e-mail

Envia um e-mail de um domínio de envio verificado. Cada destinatário recebe uma cópia separada com o próprio ID de e-mail, e cada destinatário custa um crédito.

POST/emails

Funciona com chaves de API sending e full. Os envios contam para os limites de envio do workspace, e uma resposta bem-sucedida significa que o e-mail foi aceito e colocado na fila, não que já foi entregue. Acompanhe a entrega com webhooks ou com Obter um e-mail. Workspaces não verificados só podem enviar para os e-mails das contas dos membros deles.

Cabeçalhos

Idempotency-Keystring

Uma chave única, com até 256 letras, dígitos, - e _. Uma nova tentativa com a mesma chave em até 24 horas retorna a primeira resposta em vez de enviar de novo. Consulte Idempotência.

Parâmetros do corpo

fromstringobrigatório

O remetente, como hello@acme.com ou Acme <hello@acme.com>. O endereço deve estar em um domínio de envio verificado do workspace, e no domínio da chave se a chave for restrita a um domínio.

tostring | string[]obrigatório

Os destinatários, como um array ou uma string separada por vírgulas. Cada entrada pode ser ada@example.com ou Ada Lovelace <ada@example.com>. Até 50.

ccstring | string[]
Destinatários em cópia. Até 50.
bccstring | string[]
Destinatários em cópia oculta. Até 50. Eles não aparecem nos cabeçalhos da mensagem.
reply_tostring | string[]
Endereços para as respostas. Se você enviar com um template e omitir este campo, o endereço de resposta (Reply-To) do template é usado.
subjectstring
A linha de assunto. Obrigatório, a menos que template forneça um.
htmlstring
O corpo HTML. Você precisa de html, text ou ambos, a menos que template forneça o conteúdo.
textstring
O corpo em texto simples. Quando você envia html e text, os destinatários recebem uma mensagem multipart.
templatestring

Um template a enviar. Passe um ID de template (tem_…) para usar exatamente essa versão, ou um alias para usar a versão publicada dele. subject, html e text na requisição substituem os do template. Consulte Templates.

variablesobject

Valores para placeholders do Temple, como {{first_name}}, renderizados no assunto, no HTML e no texto. Funciona com templates e com conteúdo inline.

attachmentsobject[]
Arquivos a anexar. Consulte Objeto de anexo abaixo.
headersobject

Cabeçalhos MIME extras como pares nome–valor, por exemplo {"List-Unsubscribe": "<https://acme.com/unsubscribe>"}. O próprio Emailit define o Message-ID.

metaobject

Os seus próprios dados de chave–valor, por exemplo {"order_id": "1042"}. Os valores devem ser strings. Armazenados com o e-mail e incluídos nas leituras e nos payloads de webhook.

scheduled_atstring

Quando enviar, como uma data e hora ISO 8601, por exemplo 2026-10-02T09:00:00Z, ou em inglês, por exemplo tomorrow at 9am. Inclua um fuso horário nos valores ISO 8601. Um horário no passado, ou um valor que não possa ser interpretado (incluindo um timestamp Unix), envia o e-mail imediatamente. Os e-mails agendados têm o status scheduled até serem enviados.

trackingboolean | object

Ativa ou desativa o rastreamento de aberturas e cliques deste e-mail: true, false ou {"loads": true, "clicks": false}. Por padrão, usa as configurações do domínio de envio. O rastreamento só funciona quando o CNAME de rastreamento do domínio está verificado; caso contrário, ele fica desativado e a resposta mostra false.

Objeto de anexo

filenamestringobrigatório
O nome do arquivo, incluindo uma extensão permitida (veja abaixo).
contentstring
O arquivo, codificado em Base64. Envie content ou url, não os dois.
urlstring

Uma URL pública http ou https de onde baixar o arquivo. O Emailit o baixa quando você envia: o download deve terminar em até 30 segundos, ter no máximo 25 MB e não pode redirecionar.

content_typestring
O tipo MIME, como application/pdf. Obrigatório com content. Com url, o padrão é o tipo que o servidor retorna.
content_idstring

Torna o anexo inline. Faça referência a ele no HTML como <img src="cid:logo"> quando content_id for logo.

encodingstringpadrão: base64
A codificação de content, como base64 ou hex.

A mensagem inteira, incluindo os anexos, pode ter até 40 MB. Estes tipos de arquivo são permitidos:

Categoria Extensões
Texto .txt, .csv, .log, .css, .ics, .xml
Imagens .jpg, .jpe, .jpeg, .gif, .png, .bmp, .psd, .tif, .tiff, .svg, .indd, .ai, .eps
Documentos .doc, .docx, .rtf, .odt, .ott, .pdf, .pub, .pages, .mobi, .epub
Áudio .mp3, .m4a, .m4v, .wma, .ogg, .flac, .wav, .aif, .aifc, .aiff
Vídeo .mp4, .mov, .avi, .mkv, .mpeg, .mpg, .wmv
Planilhas .xls, .xlsx, .ods, .numbers
Apresentações .odp, .ppt, .pptx, .pps, .key
Arquivos compactados .zip, .vcf
E-mail .eml
Criptografia .p7c, .p7m, .p7s, .pgp, .asc, .sig

Retorno

Retorna 200 com o objeto de e-mail do primeiro destinatário. Quando a mensagem tem mais de um destinatário entre to, cc e bcc, ids associa cada destinatário ao ID da cópia dele. Cada cópia dispara um evento email.accepted ou email.scheduled.

objectstring
Sempre email.
idstring
O ID do e-mail do primeiro destinatário.
idsobject
Endereço do destinatário associado ao ID do e-mail, para cada destinatário. Presente apenas quando há mais de um destinatário.
tokenstring
O token interno do primeiro e-mail.
message_idstring
O cabeçalho Message-ID do primeiro e-mail, como <token@acme.com>.
fromstring
O remetente, como você o enviou.
tostring[]
Os endereços to, sem nomes de exibição nem duplicados.
ccstring[]
Os destinatários cc. Presente apenas quando você enviou algum.
bccstring[]
Os destinatários bcc. Presente apenas quando você enviou algum.
subjectstring
O assunto, depois da renderização do template e das variáveis.
statusstring
accepted, ou scheduled para um scheduled_at no futuro.
scheduled_atstring | null
Quando o e-mail será enviado, ou null.
created_atstring
Quando o e-mail foi aceito.
trackingobject
O rastreamento que se aplica: booleanos loads e clicks.
POST/emails
Terminal
curl -X POST https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <hello@acme.com>",
    "to": ["ada@example.com", "grace@example.com"],
    "subject": "Welcome to Acme",
    "html": "<h1>Welcome!</h1><p>Thanks for signing up.</p>",
    "tracking": {
      "loads": true,
      "clicks": true
    }
  }'
Terminal
curl -X POST https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <hello@acme.com>",
    "to": "ada@example.com",
    "template": "welcome",
    "variables": {
      "first_name": "Ada",
      "activation_url": "https://acme.com/activate?token=8f2c1e"
    }
  }'
Terminal
curl -X POST https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme Billing <billing@acme.com>",
    "to": "ada@example.com",
    "subject": "Your invoice INV-1042",
    "html": "<img src=\"cid:logo\"><p>Your invoice is attached.</p>",
    "attachments": [
      {
        "filename": "INV-1042.pdf",
        "content": "JVBERi0xLjQKJcOkw7zDqc...",
        "content_type": "application/pdf"
      },
      {
        "filename": "logo.png",
        "url": "https://acme.com/assets/logo.png",
        "content_id": "logo"
      }
    ]
  }'
Terminal
curl -X POST https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: reminder-appt-5531" \
  -d '{
    "from": "Acme <reminders@acme.com>",
    "to": "ada@example.com",
    "subject": "Your appointment tomorrow",
    "text": "See you tomorrow at 2 PM.",
    "scheduled_at": "2026-10-02T09:00:00Z",
    "meta": { "appointment_id": "5531" }
  }'
JSON
{
  "object": "email",
  "id": "em_4KYof1ZzXndZE2VPi0DgULiekG8",
  "ids": {
    "ada@example.com": "em_4KYof1ZzXndZE2VPi0DgULiekG8",
    "grace@example.com": "em_4KfIXZSV8v8L1k0Mg2YDR3rytvj"
  },
  "token": "4KDY1iIpQSSW5pAoiz3JEfqcsO0",
  "message_id": "<4KDY1iIpQSSW5pAoiz3JEfqcsO0@acme.com>",
  "from": "Acme <hello@acme.com>",
  "to": ["ada@example.com", "grace@example.com"],
  "subject": "Welcome to Acme",
  "status": "accepted",
  "scheduled_at": null,
  "created_at": "2026-10-01T09:30:12.482913Z",
  "tracking": {
    "loads": true,
    "clicks": true
  }
}

Listar e-mails

Retorna uma página de e-mails, dos mais recentes para os mais antigos. Por padrão, a lista mostra os e-mails enviados nos últimos 14 dias.

GET/emails

Requer uma chave de API com escopo full. Cada destinatário de um envio é um e-mail separado nesta lista.

Parâmetros de consulta

pageintegerpadrão: 1
A página a retornar.
limitintegerpadrão: 25
E-mails por página, de 1 a 100.
typestringpadrão: outbound
outbound para os e-mails que você enviou, ou inbound para os e-mails que você recebeu.
date_fromstring

Apenas e-mails criados nesta data ou depois dela, como 2026-08-01 (a partir de 00:00 UTC). Sem este parâmetro, a lista começa 14 dias atrás. Os filtros created_at não alteram essa janela.

date_tostring
Apenas e-mails criados nesta data ou antes dela, até 23:59:59 UTC.
matchstringpadrão: all
all ou or. Como os filtros abaixo se combinam.
orderstring
Uma chave de ordenação da tabela abaixo.
directionstring
asc ou desc.

Filtros

Adicione filtros no formato key.condition=value, por exemplo status.exact=bounced ou created_at.after=2026-09-01. Consulte Filtragem para ver as condições de cada tipo.

Chave Tipo Valores e observações
to string Endereço do destinatário.
from string Remetente como foi enviado, incluindo o nome de exibição, se houver.
subject string
status enum accepted, scheduled, delivered, loaded, clicked, attempted, bounced, failed, rejected, suppressed, received, complained, canceled, held
tag string A tag do e-mail. No momento, enviar pela API ou por SMTP não define uma tag.
spam_score number
created_at date
updated_at date
api_key_id string ID da chave de API que enviou o e-mail (key_…).
sending_domain_id string ID do domínio de envio (dom_…).

Todas as chaves também são chaves de ordenação. Os parâmetros de consulta mais antigos status, rcpt_to, mail_from, subject, api_key_id e sending_domain_id continuam funcionando: status busca a correspondência exata, e os parâmetros de endereço e de assunto buscam correspondências parciais.

Retorno

Retorna um array data de objetos de e-mail, com next_page_url e previous_page_url. Consulte Paginação. As URLs de página não levam os seus filtros, então solicite a próxima página com os seus próprios parâmetros e page aumentado em um.

objectstring
Sempre email.
idstring
O ID do e-mail.
typestring
outbound ou inbound.
fromstring
O remetente como foi enviado.
tostring
O destinatário desta cópia.
subjectstring
O assunto.
statusstring
O status atual.
sizeinteger
Tamanho da mensagem, em bytes.
scheduled_atstring | null
Quando um e-mail agendado está previsto, ou null.
created_atstring
Quando o e-mail foi aceito ou recebido.
updated_atstring
Quando o status mudou pela última vez.
metaobject | null
O meta que você enviou.
GET/emails
Terminal
curl -G https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -d page=1 \
  -d limit=25
Terminal
curl -G https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -d status.exact=bounced \
  -d status.exact=failed \
  -d match=or \
  -d date_from=2026-09-01 \
  -d order=created_at \
  -d direction=desc
JSON
{
  "data": [
    {
      "object": "email",
      "id": "em_4KYof1ZzXndZE2VPi0DgULiekG8",
      "type": "outbound",
      "from": "Acme <hello@acme.com>",
      "to": "ada@example.com",
      "subject": "Welcome to Acme",
      "status": "delivered",
      "size": 4523,
      "scheduled_at": null,
      "created_at": "2026-10-01T09:30:12.482913Z",
      "updated_at": "2026-10-01T09:30:14.118204Z",
      "meta": null
    },
    {
      "object": "email",
      "id": "em_4KfIXZSV8v8L1k0Mg2YDR3rytvj",
      "type": "outbound",
      "from": "Acme <hello@acme.com>",
      "to": "grace@example.com",
      "subject": "Welcome to Acme",
      "status": "loaded",
      "size": 4527,
      "scheduled_at": null,
      "created_at": "2026-10-01T09:30:12.482913Z",
      "updated_at": "2026-10-01T09:41:03.770521Z",
      "meta": null
    }
  ],
  "next_page_url": "/app/v2/emails?page=2&limit=25",
  "previous_page_url": null
}

Obter um e-mail

Obtém um e-mail com o status, os cabeçalhos interpretados, o corpo HTML e em texto e os anexos.

GET/emails/{id}

Requer uma chave de API com escopo full. O conteúdo das mensagens é mantido durante o período de retenção de conteúdo do seu plano. Depois disso, headers, body e attachments ficam vazios, e o status e os metadados permanecem. Para buscar apenas parte de um e-mail, use Obter o corpo, Obter os metadados, Listar anexos ou Obter o MIME bruto.

Parâmetros de caminho

idstringobrigatório
O ID do e-mail, como em_4KYof1ZzXndZE2VPi0DgULiekG8.

Retorno

Retorna o objeto de e-mail.

objectstring
Sempre email.
idstring
O ID do e-mail.
typestring
outbound para os e-mails que você enviou, inbound para os e-mails que você recebeu.
tokenstring
O token interno do e-mail.
message_idstring
O cabeçalho Message-ID.
fromstring
O remetente como foi enviado, como Acme <hello@acme.com>.
tostring
O destinatário desta cópia.
subjectstring
O assunto.
statusstring

O status atual: accepted, scheduled, delivered, loaded, clicked, attempted, bounced, failed, rejected, suppressed, received, complained, canceled ou held. Consulte Status de e-mail.

sizeinteger
Tamanho da mensagem, em bytes.
scheduled_atstring | null
Quando um e-mail agendado está previsto, ou null.
created_atstring
Quando o e-mail foi aceito ou recebido.
updated_atstring
Quando o e-mail mudou pela última vez.
trackingobject
Apenas para e-mails enviados. Se o rastreamento de aberturas (loads) e de cliques (clicks) está ativado.
metaobject | null
O meta que você enviou, ou null.
headersobject | null
Os cabeçalhos da mensagem como pares nome–valor, ou null depois que o conteúdo é apagado.
bodyobject
text e html, cada um uma string ou null.
attachmentsobject[]

Os anexos, cada um com filename, content_type, size em bytes, content_id (para arquivos inline), content_disposition (attachment ou inline) e content (Base64).

GET/emails/{id}
Terminal
curl https://api.emailit.com/v2/emails/em_4KYof1ZzXndZE2VPi0DgULiekG8 \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "email",
  "id": "em_4KYof1ZzXndZE2VPi0DgULiekG8",
  "type": "outbound",
  "token": "4KDY1iIpQSSW5pAoiz3JEfqcsO0",
  "message_id": "<4KDY1iIpQSSW5pAoiz3JEfqcsO0@acme.com>",
  "from": "Acme Billing <billing@acme.com>",
  "to": "ada@example.com",
  "subject": "Your invoice INV-1042",
  "status": "delivered",
  "size": 48213,
  "scheduled_at": null,
  "created_at": "2026-10-01T09:30:12.482913Z",
  "updated_at": "2026-10-01T09:30:14.118204Z",
  "tracking": {
    "loads": true,
    "clicks": true
  },
  "meta": {
    "invoice_id": "INV-1042"
  },
  "headers": {
    "From": "Acme Billing <billing@acme.com>",
    "To": "ada@example.com",
    "Subject": "Your invoice INV-1042",
    "Message-ID": "<4KDY1iIpQSSW5pAoiz3JEfqcsO0@acme.com>",
    "MIME-Version": "1.0",
    "Content-Type": "multipart/mixed; boundary=\"--_NmP-4f1c2a9e7b3d0e5f-Part_1\""
  },
  "body": {
    "text": "Your invoice is attached.",
    "html": "<p>Your invoice is attached.</p>"
  },
  "attachments": [
    {
      "filename": "INV-1042.pdf",
      "content_type": "application/pdf",
      "size": 40960,
      "content_id": null,
      "content_disposition": "attachment",
      "content": "JVBERi0xLjQKJcOkw7zDqc..."
    }
  ]
}

Obter o MIME bruto

Obtém o código-fonte MIME completo de um e-mail como o Emailit o armazenou, junto com os metadados dele.

GET/emails/{id}/raw

Requer uma chave de API com escopo full. Use-o para arquivar uma mensagem, depurar a estrutura dela ou interpretá-la com a sua própria biblioteca MIME. Depois que o período de retenção do conteúdo termina, raw e headers são null.

Parâmetros de caminho

idstringobrigatório
O ID do e-mail.

Retorno

Retorna os metadados do e-mail, como em Obter os metadados, mas sem attachments, além da mensagem bruta.

rawstring | null
A mensagem MIME completa: os cabeçalhos, uma linha em branco e o corpo. null depois que o conteúdo é apagado.
headersobject | null
Os cabeçalhos de nível superior como pares nome–valor.

Os outros campos (object, id, type, token, message_id, from, to, subject, status, size, scheduled_at, created_at, updated_at, tracking e meta) são os mesmos de Obter um e-mail.

GET/emails/{id}/raw
Terminal
curl https://api.emailit.com/v2/emails/em_4KYof1ZzXndZE2VPi0DgULiekG8/raw \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "email",
  "id": "em_4KYof1ZzXndZE2VPi0DgULiekG8",
  "type": "outbound",
  "token": "4KDY1iIpQSSW5pAoiz3JEfqcsO0",
  "message_id": "<4KDY1iIpQSSW5pAoiz3JEfqcsO0@acme.com>",
  "from": "Acme <hello@acme.com>",
  "to": "ada@example.com",
  "subject": "Welcome to Acme",
  "status": "delivered",
  "size": 1342,
  "scheduled_at": null,
  "created_at": "2026-10-01T09:30:12.482913Z",
  "updated_at": "2026-10-01T09:30:14.118204Z",
  "tracking": {
    "loads": false,
    "clicks": false
  },
  "meta": null,
  "headers": {
    "From": "Acme <hello@acme.com>",
    "To": "ada@example.com",
    "Subject": "Welcome to Acme",
    "Message-ID": "<4KDY1iIpQSSW5pAoiz3JEfqcsO0@acme.com>",
    "MIME-Version": "1.0",
    "Content-Type": "text/html; charset=utf-8"
  },
  "raw": "From: Acme <hello@acme.com>\r\nTo: ada@example.com\r\nSubject: Welcome to Acme\r\nMessage-ID: <4KDY1iIpQSSW5pAoiz3JEfqcsO0@acme.com>\r\nMIME-Version: 1.0\r\nContent-Type: text/html; charset=utf-8\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\n<h1>Welcome!</h1><p>Thanks for signing up.</p>"
}

Listar anexos

Retorna os anexos de um e-mail, incluindo o conteúdo deles.

GET/emails/{id}/attachments

Requer uma chave de API com escopo full. Funciona com e-mails enviados e recebidos. Imagens inline (partes com um Content-ID) são incluídas. Para obter a lista sem o conteúdo dos arquivos, use Obter os metadados. Depois que o período de retenção do conteúdo termina, a lista fica vazia.

Parâmetros de caminho

idstringobrigatório
O ID do e-mail.

Retorno

Retorna um objeto de lista com todos os anexos. A lista não é paginada.

objectstring
Sempre list.
dataobject[]
Os anexos.
data[].filenamestring
O nome do arquivo.
data[].content_typestring
O tipo MIME, como application/pdf.
data[].sizeinteger
Tamanho do arquivo decodificado, em bytes.
data[].content_idstring | null
O Content-ID de um anexo inline, ou null.
data[].content_dispositionstring | null
attachment ou inline.
data[].contentstring
O arquivo, codificado em Base64.
GET/emails/{id}/attachments
Terminal
curl https://api.emailit.com/v2/emails/em_4KYof1ZzXndZE2VPi0DgULiekG8/attachments \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "list",
  "data": [
    {
      "filename": "INV-1042.pdf",
      "content_type": "application/pdf",
      "size": 40960,
      "content_id": null,
      "content_disposition": "attachment",
      "content": "JVBERi0xLjQKJcOkw7zDqc..."
    },
    {
      "filename": "logo.png",
      "content_type": "image/png",
      "size": 5120,
      "content_id": "logo",
      "content_disposition": "inline",
      "content": "iVBORw0KGgoAAAANSUhEUgAA..."
    }
  ]
}

Obter o corpo

Retorna o corpo HTML e em texto simples de um e-mail, decodificado das partes MIME dele.

GET/emails/{id}/body

Requer uma chave de API com escopo full. Funciona com e-mails enviados e recebidos. Nos e-mails enviados, o corpo é o que foi enviado, depois da renderização do template e das variáveis. Depois que o período de retenção do conteúdo termina, os dois campos são null.

Parâmetros de caminho

idstringobrigatório
O ID do e-mail.

Retorno

textstring | null
A parte em texto simples, ou null se o e-mail não tiver uma.
htmlstring | null
A parte HTML, ou null se o e-mail não tiver uma.
GET/emails/{id}/body
Terminal
curl https://api.emailit.com/v2/emails/em_4KYof1ZzXndZE2VPi0DgULiekG8/body \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "text": "Welcome!\n\nThanks for signing up.",
  "html": "<h1>Welcome!</h1><p>Thanks for signing up.</p>"
}

Obter os metadados

Obtém um e-mail sem o corpo: o status, os cabeçalhos, os seus dados meta e a lista de anexos sem o conteúdo deles.

GET/emails/{id}/meta

Requer uma chave de API com escopo full. É a forma mais leve de ler os detalhes de um e-mail quando você não precisa do conteúdo.

Parâmetros de caminho

idstringobrigatório
O ID do e-mail.

Retorno

Retorna os mesmos campos de Obter um e-mail, sem body e com os attachments descritos, mas sem o conteúdo:

attachmentsobject[]
O filename, o content_type, o size, o content_id e o content_disposition de cada anexo. Sem content.
headersobject | null
Os cabeçalhos da mensagem como pares nome–valor, ou null depois que o conteúdo é apagado.
metaobject | null
O meta que você enviou com o e-mail.
GET/emails/{id}/meta
Terminal
curl https://api.emailit.com/v2/emails/em_4KYof1ZzXndZE2VPi0DgULiekG8/meta \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "email",
  "id": "em_4KYof1ZzXndZE2VPi0DgULiekG8",
  "type": "outbound",
  "token": "4KDY1iIpQSSW5pAoiz3JEfqcsO0",
  "message_id": "<4KDY1iIpQSSW5pAoiz3JEfqcsO0@acme.com>",
  "from": "Acme Billing <billing@acme.com>",
  "to": "ada@example.com",
  "subject": "Your invoice INV-1042",
  "status": "delivered",
  "size": 48213,
  "scheduled_at": null,
  "created_at": "2026-10-01T09:30:12.482913Z",
  "updated_at": "2026-10-01T09:30:14.118204Z",
  "tracking": {
    "loads": true,
    "clicks": true
  },
  "meta": {
    "invoice_id": "INV-1042"
  },
  "headers": {
    "From": "Acme Billing <billing@acme.com>",
    "To": "ada@example.com",
    "Subject": "Your invoice INV-1042",
    "Message-ID": "<4KDY1iIpQSSW5pAoiz3JEfqcsO0@acme.com>",
    "MIME-Version": "1.0",
    "Content-Type": "multipart/mixed; boundary=\"--_NmP-4f1c2a9e7b3d0e5f-Part_1\""
  },
  "attachments": [
    {
      "filename": "INV-1042.pdf",
      "content_type": "application/pdf",
      "size": 40960,
      "content_id": null,
      "content_disposition": "attachment"
    }
  ]
}

Atualizar um e-mail agendado

Muda um e-mail agendado para um novo horário de envio.

POST/emails/{id}

Funciona com chaves de API sending e full. Você só pode reagendar um e-mail cujo status seja scheduled e cujo horário de envio atual esteja a mais de 3 minutos. Apenas o horário de envio pode mudar; para alterar o conteúdo, cancele o e-mail e envie um novo.

Um envio agendado para vários destinatários cria um e-mail por destinatário. Reagende cada ID do mapa ids da resposta do envio.

Parâmetros de caminho

idstringobrigatório
O ID do e-mail agendado.

Parâmetros do corpo

scheduled_atstringobrigatório

O novo horário de envio, como uma data e hora ISO 8601, por exemplo 2026-10-03T09:00:00Z, ou em inglês, por exemplo tomorrow at 3pm. Ele deve estar a mais de 3 minutos no futuro.

Retorno

objectstring
Sempre email.
idstring
O ID do e-mail.
statusstring
Sempre scheduled.
scheduled_atstring
O novo horário de envio.
updated_atstring
Quando o e-mail foi atualizado.
messagestring
Uma mensagem de confirmação.

Retorna 422 se o e-mail não estiver agendado, se faltarem menos de 3 minutos para o horário previsto ou se o novo horário não puder ser interpretado ou for próximo demais.

POST/emails/{id}
Terminal
curl -X POST https://api.emailit.com/v2/emails/em_4K76IA5sFNIsLXW9QC2ro8cDbOj \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scheduled_at": "2026-10-03T09:00:00Z"}'
Terminal
curl -X POST https://api.emailit.com/v2/emails/em_4K76IA5sFNIsLXW9QC2ro8cDbOj \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scheduled_at": "tomorrow at 3pm"}'
JSON
{
  "object": "email",
  "id": "em_4K76IA5sFNIsLXW9QC2ro8cDbOj",
  "status": "scheduled",
  "scheduled_at": "2026-10-03T09:00:00.000Z",
  "updated_at": "2026-10-01T10:15:40.207316Z",
  "message": "Email schedule has been updated successfully"
}

Cancelar um e-mail

Remove um e-mail da fila de envio e define o status dele como canceled.

POST/emails/{id}/cancel

Funciona com chaves de API sending e full. O cancelamento é feito em regime de melhor esforço: ele tira o e-mail da fila, mas, se uma tentativa de entrega já tiver começado, essa tentativa ainda pode ser concluída, e só as novas tentativas restantes são interrompidas. A resposta indica qual é o caso em in_flight. Cancelar dispara um evento email.canceled, e o crédito não é reembolsado. A ação Cancel delivery do painel faz a mesma coisa.

Status Pode cancelar Observações
scheduled Sim Até 3 minutos antes do horário agendado.
accepted Sim Na fila e ainda não entregue.
attempted Sim Interrompe as novas tentativas restantes depois de uma falha temporária.
Qualquer outro Não O e-mail já foi entregue, falhou ou foi cancelado.

Para cancelar um envio com vários destinatários, cancele cada ID do mapa ids da resposta do envio.

Parâmetros de caminho

idstringobrigatório
O ID do e-mail.

Retorno

objectstring
Sempre email.
idstring
O ID do e-mail.
statusstring
Sempre canceled.
in_flightboolean
true se uma tentativa de entrega já pode estar em andamento e ainda pode ser concluída. false se o e-mail foi removido da fila antes de qualquer tentativa.
messagestring
Uma descrição do resultado.
POST/emails/{id}/cancel
Terminal
curl -X POST https://api.emailit.com/v2/emails/em_4K76IA5sFNIsLXW9QC2ro8cDbOj/cancel \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "email",
  "id": "em_4K76IA5sFNIsLXW9QC2ro8cDbOj",
  "status": "canceled",
  "in_flight": false,
  "message": "Email has been canceled and removed from the send queue."
}

Tentar enviar um e-mail de novo

Coloca na fila uma cópia de um e-mail que não chegou ao destino. A cópia é um novo e-mail com o próprio ID, e o original mantém o status dele.

POST/emails/{id}/retry

Funciona com chaves de API sending e full. A cópia tem o mesmo remetente, destinatário, assunto, conteúdo, cabeçalhos, meta e configurações de rastreamento, com um novo Message-ID. Ela custa créditos como um novo envio: um crédito, ou dois para um e-mail de campanha.

Você pode tentar enviar um e-mail de novo quando:

  • O status dele é bounced, failed, suppressed ou held.
  • Ele foi criado nos últimos 30 dias.
  • O conteúdo dele não foi apagado pelo seu período de retenção, e o domínio de envio dele ainda existe.

Corrija a causa antes. Um endereço suprimido que ainda está na sua lista de supressão é suprimido de novo, e um e-mail retido é retido de novo até que o motivo da retenção seja resolvido.

Parâmetros de caminho

idstringobrigatório
O ID do e-mail a enviar de novo.

Retorno

objectstring
Sempre email.
idstring
O ID do novo e-mail.
original_idstring
O ID do e-mail que você tentou enviar de novo.
tokenstring
O token interno do novo e-mail.
message_idstring
O Message-ID do novo e-mail.
fromstring
O remetente.
tostring
O destinatário.
subjectstring
O assunto.
statusstring
Sempre accepted.
created_atstring
Quando o novo e-mail foi criado.
messagestring
Uma mensagem de confirmação.
POST/emails/{id}/retry
Terminal
curl -X POST https://api.emailit.com/v2/emails/em_4KKrQ7TzsVtzsS8zG069B2aMtoK/retry \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "email",
  "id": "em_4KbeG9poqTmjvQZeN8pMoJkCVNd",
  "original_id": "em_4KKrQ7TzsVtzsS8zG069B2aMtoK",
  "token": "4KTnDU5PzzqDqp8UWb9qVhPVFOT",
  "message_id": "<4KTnDU5PzzqDqp8UWb9qVhPVFOT@acme.com>",
  "from": "Acme <hello@acme.com>",
  "to": "ada@example.com",
  "subject": "Welcome to Acme",
  "status": "accepted",
  "created_at": "2026-10-01T12:04:51.330482Z",
  "message": "Email has been queued for retry"
}

Encaminhar um e-mail

Envia o conteúdo de um e-mail enviado para novos destinatários como um novo e-mail. O e-mail original não é alterado.

POST/emails/{id}/forward

Funciona com chaves de API sending e full. Por padrão, o encaminhamento é um simples reenvio do HTML, do texto e dos anexos originais. Defina include_headers para adicionar um bloco “Forwarded message” e uma observação opcional acima do conteúdo original.

Um encaminhamento é um novo envio, então as regras de Enviar um e-mail se aplicam: o endereço from deve estar em um domínio de envio verificado, cada destinatário custa um crédito e conta para os limites de envio, o rastreamento segue as configurações do domínio, e o cabeçalho Idempotency-Key é aceito. Além disso, um workspace pode encaminhar no máximo 3 e-mails por hora.

Apenas e-mails enviados podem ser encaminhados, e apenas enquanto o conteúdo deles é mantido pelo seu período de retenção. Para encaminhar e-mails recebidos, use uma automação.

Parâmetros de caminho

idstringobrigatório
O ID do e-mail enviado a encaminhar.

Cabeçalhos

Idempotency-Keystring
Torna seguro tentar o encaminhamento de novo. Consulte Idempotência.

Parâmetros do corpo

tostring | string[]obrigatório
Os novos destinatários, como um array ou uma string separada por vírgulas. Até 50.
include_headersbooleanpadrão: false

Quando true, adiciona um bloco “Forwarded message” com o remetente, a data, o assunto e o destinatário originais, e a sua observação acima dele. Quando false, reenvia o conteúdo original sem alterações.

commentstring
Uma observação em texto simples a colocar acima da mensagem encaminhada. Usada apenas com include_headers. body é aceito como alias.
htmlstring
Uma observação em HTML a usar na parte HTML no lugar do comment escapado. Usada apenas com include_headers.
textstring
Uma observação em texto simples a usar na parte de texto no lugar de comment. Usada apenas com include_headers.
fromstring
O remetente. O padrão é o from do e-mail original.
subjectstring
O assunto. O padrão é o assunto original ou, com include_headers, Fwd: seguido do assunto original.

Os anexos originais são incluídos quando o tipo de arquivo deles é permitido.

Retorno

Retorna o mesmo objeto de Enviar um e-mail, com dois campos extras:

original_idstring
O ID do e-mail que você encaminhou.
messagestring
Uma mensagem de confirmação.

Acima do limite de encaminhamentos, a API retorna 429 com um cabeçalho retry-after.

POST/emails/{id}/forward
Terminal
curl -X POST https://api.emailit.com/v2/emails/em_4KYof1ZzXndZE2VPi0DgULiekG8/forward \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "grace@example.com"
  }'
Terminal
curl -X POST https://api.emailit.com/v2/emails/em_4KYof1ZzXndZE2VPi0DgULiekG8/forward \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: fwd-inv-1042-grace" \
  -d '{
    "to": ["grace@example.com"],
    "include_headers": true,
    "comment": "Grace, here is the invoice Ada asked about."
  }'
JSON
{
  "object": "email",
  "id": "em_4K76IA5sFNIsLXW9QC2ro8cDbOj",
  "original_id": "em_4KYof1ZzXndZE2VPi0DgULiekG8",
  "token": "4KWzEED2cnej6UMjF4v508VqQIp",
  "message_id": "<4KWzEED2cnej6UMjF4v508VqQIp@acme.com>",
  "from": "Acme Billing <billing@acme.com>",
  "to": ["grace@example.com"],
  "subject": "Fwd: Your invoice INV-1042",
  "status": "accepted",
  "scheduled_at": null,
  "created_at": "2026-10-01T13:20:07.915203Z",
  "tracking": {
    "loads": true,
    "clicks": true
  },
  "message": "Email has been queued for forwarding"
}

Obter apenas o status

Retorna apenas o status atual de um e-mail.

GET/email/{id}

Requer uma chave de API com escopo full. Observe o singular /email no caminho. A resposta é pequena, o que torna este endpoint prático para verificações rápidas de status. Para receber as mudanças de status à medida que acontecem, use webhooks em vez de consultar periodicamente.

Parâmetros de caminho

idstringobrigatório
O ID do e-mail.

Retorno

statusstring

O status atual: accepted, scheduled, delivered, loaded, clicked, attempted, bounced, failed, rejected, suppressed, received, complained, canceled ou held. Consulte Status de e-mail.

GET/email/{id}
Terminal
curl https://api.emailit.com/v2/email/em_4KYof1ZzXndZE2VPi0DgULiekG8 \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "status": "delivered"
}

Esta página foi útil?

Obrigado pelo feedback.

Obrigado, lemos todas as mensagens.