# 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.

Fonte: https://couryo.com/docs/test-mode

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

1. Crie uma chave de teste em **Chaves** (modo `test`).
2. Use a chave no lugar da `ck_live_`, sem mudar mais nada no código.
3. A resposta traz `status: "captured"`:

```json title="Resposta 202"
{ "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.

```bash title="cURL"
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](https://couryo.com/docs/webhooks.md), 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 `from` e 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`](https://couryo.com/docs/sending.md#checagem-antes-do-envio).

## 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](https://couryo.com/docs/mcp.md) com o seu agente sem risco.
