Pular para o conteúdo
Docs

Guia prático

Use o cabeçalho Idempotency-Key para tentar de novo requisições de envio e de encaminhamento com segurança. Formato da chave, janela de 24 horas, respostas repetidas, respostas 409 e 503 e estratégias de chave.

Atualizado em 1 de out. de 2026

Redes falham. Quando uma requisição de envio dá timeout, você não tem como saber se o Emailit a recebeu, e enviá-la de novo pode mandar o e-mail duas vezes para o seu cliente. Um cabeçalho Idempotency-Key torna a nova tentativa segura: o Emailit processa a primeira requisição e retorna a mesma resposta para qualquer repetição com a mesma chave.

Como funciona

Adicione um cabeçalho Idempotency-Key a POST /emails ou a POST /emails/{id}/forward.

  1. Primeira requisição. O Emailit reserva a chave para o seu workspace e processa a requisição.
  2. Sucesso. O Emailit armazena a resposta por 24 horas. Qualquer requisição com a mesma chave nessa janela recebe de volta a resposta armazenada com 200, e nenhum e-mail novo é criado.
  3. Falha. Se a requisição falhar, por exemplo com 400 ou 402, o Emailit libera a chave. Corrija o problema e tente de novo com a mesma chave.
  4. Sobreposição. Se uma segunda requisição chegar enquanto a primeira ainda está em andamento, ela recebe 409 e nada é enviado. Tente de novo logo em seguida com a mesma chave.

As chaves valem por workspace, então dois workspaces podem usar a mesma chave sem conflito.

Formato da chave

Regra Valor
Comprimento De 1 a 256 caracteres
Caracteres Letras de A–Z e a–z, dígitos de 0–9, hífen - e sublinhado _
Escopo Por workspace
Janela 24 horas após a primeira resposta bem-sucedida

Uma chave com outros caracteres, como : ou /, é rejeitada com 400 Invalid Idempotency-Key.

Escolher uma chave

Derive a chave do evento que gera o e-mail, para que todos os caminhos de nova tentativa produzam a mesma chave:

E-mail Exemplo de chave
Recibo de pedido order-1042-receipt
Redefinição de senha password-reset-7f3c9a1e (o ID do token de redefinição)
Resumo semanal digest-user-881-2026-w40
Job em segundo plano O ID do job, ou um UUID que você gera ao colocar o job na fila e guarda com ele

Evite chaves que mudam entre as tentativas, como timestamps ou um UUID gerado dentro do loop de novas tentativas. Elas fazem cada nova tentativa parecer uma requisição nova.

Enviar com uma chave de idempotência

Os exemplos em Node.js, Python e PHP tentam de novo em caso de erros de rede e de respostas 409, 429 e 5xx, reutilizando sempre a mesma chave. O exemplo em cURL usa a repetição embutida do curl, que cobre timeouts, 429 e a maioria das respostas 5xx.

Terminal
curl https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1042-receipt" \
  --retry 3 \
  -d '{
    "from": "Acme <orders@acme.com>",
    "to": "ada@example.com",
    "subject": "Receipt for order 1042",
    "text": "Thanks for your order."
  }'

Respostas

Status Quando O que fazer
200 Primeira requisição bem-sucedida, ou uma repetição dela em até 24 horas Use a resposta. Uma repetição tem o mesmo corpo, incluindo o mesmo id.
400 Invalid Idempotency-Key A chave está vazia, é longa demais ou tem caracteres inválidos Corrija a chave.
409 Idempotency key in progress Uma requisição com a mesma chave ainda está sendo processada Espere um momento e tente de novo com a mesma chave.
503 Idempotency unavailable O Emailit não conseguiu acessar o armazenamento de idempotência e recusou a requisição para não arriscar um envio duplicado Tente de novo com a mesma chave.
Qualquer outro erro A requisição falhou e a chave foi liberada Corrija a causa e tente de novo com a mesma chave.

Os limites de requisições são verificados antes da chave, então uma nova tentativa ainda pode receber 429. Espere o tempo do cabeçalho retry-after e envie a mesma chave de novo.

Esta página foi útil?

Obrigado pelo feedback.

Obrigado, lemos todas as mensagens.