Guia do desenvolvedorComeçando
Modo de teste
Chaves ck_test_ capturam os e-mails sem entregar e simulam entrega, devolução, reclamação e adiamento pelo endereço do destinatário, com eventos e webhooks de verdade.
Com uma chave ck_test_, o Couryo faz tudo o que faria de verdade (valida o pedido, aplica idempotência, gera os eventos e chama seus webhooks), menos entregar. Nenhum e-mail sai para a internet.
Como usar#
- Crie uma chave de teste em Chaves (modo
test). - Use a chave no lugar da
ck_live_, sem mudar mais nada no código. - A resposta traz
status: "captured":
{ "id": "msg_t3st0k9a1b2c3d4e", "status": "captured" }O status do e-mail continua captured para sempre; o que aconteceu com cada destinatário aparece nos eventos.
Endereços simulados#
A parte antes do @ do destinatário decide o que o teste simula, em qualquer domínio:
| Destinatário | O que acontece | Eventos |
|---|---|---|
bounced@... ou bounce@... |
devolução permanente | sent e bounced com 550 5.1.1 (usuário desconhecido) |
complained@... ou complaint@... |
entregue e depois marcado como spam | sent, delivered e complained |
deferred@... |
adiado e depois entregue | sent, deferred com 421 4.7.0 e delivered |
| qualquer outro | entregue | sent e delivered com 250 2.0.0 |
Os eventos chegam logo após o envio, com horários (at) que imitam o ritmo real: a reclamação 5 segundos depois da entrega e a entrega do adiado 1 minuto depois do adiamento.
curl https://api.couryo.com/v1/emails \
-H "Authorization: Bearer $COURYO_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "Loja <pedidos@exemplo.com.br>",
"to": ["bounced@exemplo.com.br", "ana@exemplo.com.br"],
"subject": "Teste de devolução",
"text": "Olá"
}'Os eventos simulados passam pelo mesmo caminho dos reais: aparecem na linha do tempo (GET /v1/emails/{id}), em GET /v1/events e nos seus webhooks, com resposta SMTP marcada como simulada e a explicação em linguagem simples. É o jeito de testar o tratamento de devolução e reclamação sem estragar a reputação de ninguém.
O que muda em relação à chave de produção#
- Não exige domínio verificado no
frome não tem a restrição do nível 0 (sandbox). - Não conta nos limites diário e mensal do nível nem na cota do plano. O limite de requisições por segundo vale igual.
- Não mexe na supressão nem nas taxas de devolução e reclamação da conta: um
bounced@simulado não entra na sua lista de supressão. - A checagem de conteúdo (links encurtados e afins) só roda em produção. Para conferir um e-mail antes, use
POST /v1/emails/check.
No painel#
O e-mail aparece em E-mails com o status captured e a linha do tempo simulada, e as chamadas de webhook ficam no histórico de entregas, para conferir sua integração. Ver o conteúdo renderizado e compartilhar um link de revisão com o time: em breve.
Bom para#
- Testes automatizados e CI: nenhum e-mail escapa para clientes reais.
- Ambiente de homologação com dados copiados da produção.
- Testar o tratamento de webhooks de devolução, reclamação e adiamento.
- Usar o MCP com o seu agente sem risco.