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. |
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
- queued — A mensagem foi aceita e está aguardando para ser enviada.
- sending — A mensagem está sendo ativamente entregue ao servidor de email do destinatário.
- sent — A mensagem foi aceita pelo servidor de email do destinatário.
- delivered — Entrega confirmada (quando suportado pelo servidor receptor).
Estados de falha
- failed — Um erro transitório ou permanente impediu a entrega. Verifique o payload do webhook para o motivo.
- bounced — O endereço do destinatário não existe ou o servidor rejeitou a mensagem permanentemente.
- complained — O destinatário marcou o email como spam.
Mensagens recebidas
- received — Um email chegou na caixa de entrada de um remetente externo.
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. |
// 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.
- Se você fornecer apenas
bodyText, o email é enviado comotext/plain. - Se você fornecer apenas
bodyHtml, o email é enviado comotext/html. - If you provide both, o email é enviado como
multipart/alternative. Clientes de email que suportam HTML mostrarão a versão HTML; outros usarão a versão em texto simples.
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.
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.