Pular para o conteúdo

E-mails

Com estes endpoints, um sistema externo envia um e-mail para um destinatário pelo SquadOS e acompanha a entrega. Use para e-mails disparados por eventos do seu sistema, como confirmação de cadastro, boleto gerado ou lembrete de reunião. Para enviar a uma lista inteira, use as campanhas do painel.

O envio segue o mesmo caminho dos e-mails das automações: o SquadOS respeita descadastros e devoluções, cobra os créditos de e-mail e registra a entrega.

Todos os endpoints exigem o header Authorization: Bearer pk_.... No envio, inclua também Content-Type: application/json.

Base URL: https://api.squados.io/v1

Consulte Autenticação para obter sua chave, e Erros para a referência de códigos.

  • Acesso total envia por qualquer remetente da organização.
  • Apenas enviar e-mails envia só pelos remetentes marcados em Remetentes permitidos quando o token foi gerado, e só alcança estes dois endpoints. Prefira este escopo para uma integração que só envia e-mail.

Coloca na fila um e-mail para um destinatário. O envio é assíncrono: a resposta confirma que o e-mail entrou na fila, e o status final é lido em GET /emails/{id}.

Corpo

CampoTipoObrigatórioDescrição
fromstringSimEndereço de um remetente da organização, como contato@suaempresa.com.br. Maiúsculas e minúsculas não importam.
tostringSimUm único endereço de destino.
subjectstringSimAssunto, com até 300 caracteres.
htmlstringUm dos doisCorpo em HTML, enviado como você escreveu. Até 200.000 caracteres.
textstringUm dos doisCorpo em texto simples. Até 200.000 caracteres.

Envie html, text ou os dois:

  • só text: o SquadOS monta o HTML a partir dos parágrafos do texto;
  • só html: o HTML vai como você escreveu, com as variáveis preenchidas e o rodapé acrescentado;
  • os dois: o HTML é o corpo principal e o texto vira a versão em texto simples do mesmo e-mail.

Prefira HTML com menos de 100 KB: provedores como o Gmail cortam mensagens maiores.

Terminal window
curl -X POST "https://api.squados.io/v1/emails" \
-H "Authorization: Bearer pk_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"from": "contato@suaempresa.com.br",
"to": "cliente@exemplo.com",
"subject": "Seu cadastro foi confirmado",
"html": "<p>Olá, {{contact.first_name | \"tudo bem\"}}! Seu cadastro está ativo.</p>",
"text": "Olá! Seu cadastro está ativo."
}'

Resposta — 202 Accepted

{
"id": "11111111-1111-4111-8111-111111111111",
"status": "queued",
"from": "contato@suaempresa.com.br",
"to": "cliente@exemplo.com"
}

Guarde o id para consultar a entrega.

  • O destinatário vira um contato da organização: o SquadOS cria o contato quando o endereço ainda não existe. É por ele que descadastro, devoluções e o histórico de envios funcionam.
  • Quem descadastrou ou teve devolução definitiva não recebe: a API recusa o envio antes de colocá-lo na fila.
  • O e-mail sai com o rodapé do SquadOS: nome e endereço da organização e um link para a pessoa gerenciar o recebimento.

O assunto e o corpo aceitam três variáveis do contato:

VariávelVira
{{contact.first_name}}Primeiro nome do contato
{{contact.name}}Nome completo do contato
{{contact.email}}Endereço do contato

Para quando o contato não tem nome, informe um texto reserva depois de |: {{contact.first_name | "tudo bem"}}. Qualquer outra variável entre {{ }} faz o envio ser recusado com 400 e reason: "unknown_merge_tags", com as variáveis desconhecidas em tags.

A API recusa na ordem do que você consegue corrigir: corpo, remetente, permissão do token, domínio, envio da organização, destinatário e créditos.

StatuscodereasonQuando
400invalid_request—Corpo inválido: from ou to não é um endereço válido, to tem mais de um endereço, falta subject, faltam html e text, ou um campo passou do limite. O campo vem em field.
400invalid_requestunknown_merge_tagsVariável desconhecida no assunto ou no corpo. A lista vem em tags.
403forbiddensender_not_allowedToken Apenas enviar e-mails usando um remetente que não está entre os permitidos.
403forbiddenemail_module_blockedA organização não pode enviar e-mail agora. O motivo vem em blocked_reason: plan (o plano não inclui e-mail), not_activated, paused, disabled ou setup_failed.
403forbiddeninsufficient_creditsA organização não tem créditos de e-mail suficientes.
404not_foundsender_not_foundfrom não é um remetente da organização.
409conflictsender_domain_not_verifiedO domínio do remetente ainda não foi verificado.
409conflictrecipient_suppressedO destinatário descadastrou ou teve devolução e não pode receber. O motivo vem em suppression_reason: hard_bounce, complaint, soft_bounce_streak, unsubscribe ou manual.
409conflictcontact_conflictO endereço pertence a um contato com conflito de identidade na organização.
{
"error": "The sender domain is not verified yet",
"code": "conflict",
"reason": "sender_domain_not_verified",
"field": "from"
}

Lê o status de um e-mail enviado pela API.

Terminal window
curl "https://api.squados.io/v1/emails/11111111-1111-4111-8111-111111111111" \
-H "Authorization: Bearer pk_sua_chave_aqui"

Resposta — 200 OK

{
"id": "11111111-1111-4111-8111-111111111111",
"status": "delivered",
"to": "cliente@exemplo.com",
"subject": "Seu cadastro foi confirmado",
"error_code": null,
"created_at": "2026-10-25T12:00:00Z",
"sent_at": "2026-10-25T12:00:04Z",
"updated_at": "2026-10-25T12:00:09Z"
}
CampoTipoDescrição
iduuidO id devolvido pelo envio.
statusstringSituação da entrega. Veja a tabela abaixo.
tostring ou nullDestinatário.
subjectstringAssunto enviado.
error_codestring ou nullCódigo da falha informado pelo provedor, quando houver.
created_atdate-timeQuando o envio foi recebido.
sent_atdate-time ou nullQuando o e-mail saiu.
updated_atdate-timeÚltima mudança de status.
statusSignificado
queuedNa fila, ainda não saiu.
sentSaiu e foi aceito pelo provedor de envio.
deliveredO servidor do destinatário confirmou a entrega.
bouncedDevolvido pelo servidor do destinatário.
complainedO destinatário marcou como spam.
failedNão foi possível enviar. Veja error_code.
suppressedNão enviado porque o destinatário não pode mais receber.

Consulte com intervalos, não em laço contínuo: a entrega costuma levar de segundos a alguns minutos.

Um id inválido, de outra organização ou de um e-mail que não saiu pela API responde 404 not_found. Um token Apenas enviar e-mails só enxerga os e-mails enviados pelos remetentes permitidos para ele; os demais também respondem 404.