Mensagens

Mensagens representam emails individuais enviados ou recebidos por uma caixa de entrada. Envie emails HTML ricos, acompanhe o status de entrega e leia respostas recebidas.

Visão Geral

Uma mensagem é um único email associado a uma caixa de entrada. Quando seu agente envia um email, cria uma mensagem de saída. Quando alguém responde ou envia um email para o endereço do seu agente, uma mensagem de entrada é criada automaticamente.

Toda mensagem pertence a uma conversa — seja uma que já existe (para respostas) ou uma nova conversa que é criada automaticamente quando uma nova conversa começa.

As mensagens são imutáveis após criadas. Para enviar um acompanhamento, crie uma nova mensagem na mesma conversa passando o threadId.

Enviando um Email

POST /inboxes/{inboxId}/messages

Envie um email de uma caixa de entrada postando para seu endpoint de mensagens. O array to e o subject são obrigatórios; todo o resto é opcional.

Corpo da Requisição

Campo Tipo Descrição
to obrigatório string[] Array de endereços de email dos destinatários.
subject obrigatório string Linha de assunto do email.
cc string[] Destinatários CC.
bcc string[] BDestinatários CC. Not visible to other recipients.
bodyText string Corpo em texto simples. Usado como fallback quando bodyHtml também é fornecido.
bodyHtml string Corpo HTML. Quando ambos bodyText and bodyHtml são fornecidos, o email é enviado como multipart/alternative.
threadId string Conversa para responder. Se omitido, uma nova conversa é criada.
attachmentIds string[] IDs de anexos previamente enviados para incluir.
javascript
const res = await fetch(
  `https://api.agentsend.io/inboxes/${inboxId}/messages`,
  {
    method: "POST",
    headers: {
      "x-api-key": process.env.AGENTSEND_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      to: ["customer@example.com"],
      subject: "Following up on your request",
      bodyText: "Hi, just checking in on your request.",
      bodyHtml: "<p>Hi, just checking in on your request.</p>",
    }),
  }
);

const message = await res.json();
console.log(message.id);     // msg_abc123
console.log(message.delivery); // "email" or "dry-run"
console.log(message.status); // "queued"

Propriedades da Mensagem

Cada objeto de mensagem retornado pela API possui os seguintes campos.

Propriedade Tipo Descrição
id string Identificador único da mensagem.
inboxId string A caixa de entrada à qual esta mensagem pertence.
threadId string A conversa na qual esta mensagem está agrupada.
direction string outbound para emails que seu agente enviou; inbound para emails recebidos.
fromAddress string Endereço de email do remetente.
toAddresses string[] Destinatários primários.
ccAddresses string[] Destinatários CC.
subject string Linha de assunto do email.
bodyText string Plain-text body content.
bodyHtml string HTML body content.
delivery string Se o ambiente enviou email real (email) ou apenas simulou (dry-run).
status string Status atual de entrega. Veja Status da Mensagem abaixo.
attachments object[] Array de objetos de anexo com id, filename, contentType, and size.
messageIdHeader string The RFC 5322 Message-ID header value, used for threading in email clients.
createdAt string Data e hora ISO 8601 de quando a mensagem foi criada.

Status da Mensagem

As mensagens de saída passam por um ciclo de vida de entrega. Check delivery first to confirm whether the environment sent real mail ou apenas simulou, then use status or webhooks para acompanhar o ciclo de vida no lado do provedor.

Ciclo de vida de saída

Estados de falha

Mensagens recebidas

Se uma mensagem atingir o status bounced ou complained, evite enviar mais emails para esse endereço para proteger sua reputação como remetente.

Listando Mensagens

GET /inboxes/{inboxId}/messages

Recupere uma lista paginada de mensagens de uma caixa de entrada. Filtre por status para encontrar respostas recebidas, envios falhos ou qualquer outro subconjunto.

Parâmetro de Consulta Tipo Descrição
limit number Número de mensagens a retornar. Defaults to 20, max 100.
offset number Número de mensagens a pular para paginação. Defaults to 0.
status string Filtrar por status. Um de queued, sending, sent, delivered, failed, bounced, complained, received.
javascript
// Fetch the 10 most recent inbound messages
const res = await fetch(
  `https://api.agentsend.io/inboxes/${inboxId}/messages?status=received&limit=10`,
  { headers: { "x-api-key": process.env.AGENTSEND_API_KEY } }
);

const { data, total } = await res.json();

for (const msg of data) {
  console.log(msg.fromAddress, msg.subject, msg.bodyText);
}
💡

Use webhooks em vez de polling para ser notificado no momento em que uma nova mensagem chegar. Polling é uma boa alternativa para scripts simples e tarefas de curta duração.

HTML vs Texto Simples

O AgentSend suporta emails em texto simples, HTML e multipart. Use bodyText para texto simples e bodyHtml para conteúdo HTML.

💡

Sempre inclua uma versão bodyText junto com bodyHtml. Isso melhora a entregabilidade, acessibilidade e compatibilidade com clientes de email em texto simples.

Excluindo Mensagens

DELETE /messages/{id}

Exclua uma mensagem pelo seu ID. Isso remove o registro da mensagem do AgentSend. Não revoga um email já entregue da caixa de entrada do destinatário.

javascript
await fetch(`https://api.agentsend.io/messages/${messageId}`, {
  method: "DELETE",
  headers: { "x-api-key": process.env.AGENTSEND_API_KEY },
});

A exclusão de uma mensagem é permanente. Mensagens recebidas que fazem parte de uma conversa ativa devem ser excluídas com cuidado, pois o histórico da conversa ficará incompleto.