Configure o envio de e-mails para agentes de IA
Um caminho legível por máquina para agentes de codificação e assistentes que precisam adicionar e-mail transacional ao projeto de terceiros — o que chamar, em que ordem e quais verificações executar antes de cada envio.
Baixar OpenAPI 3.1Antes de escrever qualquer código
- Peça ao usuário uma chave de API do projeto, ou peça que ele crie uma chave de sandbox em https://app.srs-postline.com/pt/login — nunca invente, adivinhe ou reutilize uma chave de outro projeto.
- Coloque a chave em uma variável de ambiente do lado do servidor. Não a coloque em código de frontend, em um pacote de aplicativo móvel, em um repositório público ou em um arquivo .env versionado.
- Leia /llms.txt e openapi/postline.yaml antes de gerar código de requisição; não adivinhe nomes de campos ou endpoints.
Envio mínimo
POST /v1/emails
Authorization: Bearer srs_live_...
Idempotency-Key: <id-estavel-por-envio-logico>
Content-Type: application/json
{
"from": "Sender Name <info@example.com>",
"to": ["user@example.net"],
"subject": "Assunto",
"html": "<p>Texto</p>",
"text": "Texto"
}Verificações a executar antes de cada envio
- Sempre envie um Idempotency-Key derivado da ação que dispara o envio (ID do pedido, ID do evento) para que novas tentativas não causem envio duplicado.
- Nunca coloque códigos OTP, tokens de redefinição de senha ou outros segredos em um campo que é registrado em log ou encaminhado para fora do corpo da mensagem.
- Solicite o escopo de chave de API mais restrito que a tarefa exigir (emails:send é suficiente para envio; não peça domains:write ou api_keys:write a menos que a tarefa exija).
- Limite os destinatários a 100 por chamada. A API atual não aceita anexos nem cabeçalhos personalizados; rejeite o arquivo ou compartilhe um link sem afirmar que ele foi anexado.
- Não repita silenciosamente respostas 4xx. Somente 429 e 503 são seguros para repetir, e apenas com backoff.
Trate cada código de resposta
- 202 — enfileirado, não entregue. Armazene o id retornado caso precise consultar o status depois.
- 400 — payload inválido; corrija a requisição, não repita sem alterações.
- 401 — chave inválida ou expirada; pare e informe o usuário, não fabrique uma nova chave.
- 403 — escopo ausente ou o domínio de envio ainda não foi verificado; diga ao usuário para verificar o domínio antes de continuar.
- 422 — destinatário está suprimido (bounce/complaint anterior); não repita o envio para esse destinatário.
- 429 — limitação de taxa; aguarde e tente novamente mais tarde, não fique em loop apertado.
- 503 — fila indisponível; tente novamente com backoff, não recorra a um transporte não oficial.
Se a tarefa incluir o recebimento de eventos
Registre um endpoint de webhook somente via HTTPS. Recalcule a assinatura você mesmo antes de confiar em qualquer payload; não pule a verificação porque uma requisição "parece interna".
signature = HMAC-SHA256(webhook_secret, timestamp + "\0" + event_id + "\0" + raw_body)
compare com o header Postline-Signature (comparação em tempo constante)
rejeite se Postline-Timestamp estiver fora da sua janela permitida
armazene o event_id e processe cada evento exatamente uma vezReferências legíveis por máquina
- /llms.txt — índice condensado dessas regras para janelas de contexto de agentes.
- /openapi/postline.yaml — esquema OpenAPI 3.1 completo de todos os endpoints.
- /pt/api/ — referência da API para humanos.
- /pt/webhooks/ — detalhes de assinatura e retentativa de webhooks.
Modelo de acesso atual
As chaves atuais usam srs_live_. Antes de verificar o domínio From, o remetente sandbox compartilhado só envia a membros do projeto. Depois valem cotas, suppression, limites de destinatários e controles de abuso. 202 significa enfileirado, não entregue.
Recursos de integração
Use o guia prático para pessoas e agentes de IA; o OpenAPI é a fonte de verdade dos campos.