Início › Glossário › Idempotency-Key (chave de idempotência)
Glossário

O que é Idempotency-Key (chave de idempotência)?

Idempotency-Key é um identificador enviado em uma requisição (geralmente no header) para que o servidor trate reenvios como a “mesma” operação, evitando cobranças ou pedidos duplicados quando há retry, timeout ou clique duplo. Você usa quando a ação tem efeito irreversível (cobrar, emitir, criar pedido). A chave precisa ser única por operação e reaproveitada nos reenvios.

O problema real: retries criam duplicidade (e você só descobre no financeiro)

Na automação, falha “bonita” é rara. O mais comum é: a API demora, o cliente dá timeout, o workflow faz retry, e a mesma criação de pedido roda duas vezes. Em integrações com pagamento, isso vira estorno, chargeback e suporte.

Idempotência não impede falhas; ela impede que a recuperação da falha (retry) gere um efeito colateral a mais.

O que é Idempotency-Key na prática (e o que NÃO é)

Na prática, é uma string (por exemplo um UUID) que representa uma tentativa lógica de operação. Se a mesma chave for reenviada, o servidor deveria responder de forma consistente: ou retorna o resultado já criado, ou informa que aquela operação já foi processada.

Não confunda com deduplicação “por conteúdo” (comparar payload), nem com "id" do recurso final. A chave de idempotência é do ato de pedir para criar, não do objeto criado.

ConceitoServe paraExemplo rápidoRisco se usado errado
Idempotency-KeyReenvio seguro do mesmo POSTHeader Idempotency-Key: 6f... (repetido nos retries)Se mudar a chave a cada retry, duplica do mesmo jeito
Id do recursoIdentificar o objeto criadopedidoId=123Não evita duplicidade se dois pedidos diferentes forem criados
Hash do payloadDetectar payloads iguaissha256(body)Pode bloquear operações legítimas iguais (2 compras iguais)
Lock/MutexGarantir exclusão mútualock por clientePode virar gargalo e travar fila inteira

Onde a chave vive: no header, no banco e no seu desenho de fluxo

O “padrão de mercado” (quando existe) é enviar a chave no header. Várias APIs de pagamento e billing aceitam isso, mas cada uma define detalhes: tempo de retenção, se a resposta é a mesma, e quais campos entram no escopo da idempotência. Sem internet aqui, então trate como regra geral: leia a doc do endpoint específico.

Quando a API não suporta Idempotency-Key, você ainda consegue idempotência do lado do workflow: persistindo a chave + status em um banco e bloqueando reprocessamento.

Como implementar em automações (n8n/Make/Zapier): um roteiro sem romantismo

Você não precisa “feature nativa” para ter idempotência. Precisa de disciplina: chave estável + armazenamento + checagem antes de executar.

Em ferramentas de automação, o ponto crítico é: o retry pode acontecer sem você ver (timeout, rate limit, falha intermitente). Então a idempotência tem que estar antes do nó que cria/cobra/emite.

Armadilhas comuns (as que mais dão dor de cabeça)

Idempotência costuma falhar não por falta de conceito, mas por detalhe de implementação. E detalhe em automação vira duplicidade em produção.

Se você lembrar de duas coisas: (1) chave não pode mudar no retry; (2) armazenamento precisa ser confiável e consultado antes do efeito colateral.

Checklist rápido: quando vale o esforço

Se a operação custa dinheiro, gera obrigação fiscal ou cria estado difícil de desfazer, a resposta é: vale. Se é uma atualização idempotente por natureza (PUT com o mesmo estado final), às vezes você já está coberto sem perceber.

Tipo de açãoSem Idempotency-KeyCom Idempotency-Key
Criar cobrança/faturaRisco alto de duplicar em retryRetry seguro (mesma operação)
Criar pedidoPedidos duplicados e reconciliação manualReenvio retorna o mesmo resultado
Enviar e-mailE-mails repetidos (ruim, mas reversível)Evita duplicar se você controlar por chave
Atualizar status (PUT)Muitas vezes já é idempotenteGeralmente opcional, depende do endpoint

Perguntas frequentes

Idempotency-Key é obrigatório para toda API?
Não. É mais crítico em operações “create” (POST) com efeito colateral. Em operações naturalmente idempotentes (ex.: PUT que define o estado final), pode ser dispensável. Se houver retry automático ou risco de timeout, a chave vira uma camada extra de segurança.
Posso usar o mesmo Idempotency-Key para várias operações diferentes?
Não é uma boa. A chave deve representar UMA operação lógica. Reutilizar a mesma chave para ações distintas pode fazer o servidor devolver uma resposta antiga e você “achar” que executou algo novo.
Se a API não suporta Idempotency-Key, ainda dá para evitar duplicidade?
Dá. Você implementa do seu lado: persiste uma chave única da operação (por exemplo, orderId+tipo) em banco com constraint única, checa antes de executar, e grava o resultado. Não é tão elegante quanto suporte nativo, mas resolve o problema na prática.
Idempotency-Key substitui validação de assinatura de webhook (HMAC)?
Não. HMAC protege contra spoofing/tampering (mensagem falsa ou alterada). Idempotência protege contra repetição/duplicidade de processamento. Em automações expostas por webhook, normalmente você precisa das duas coisas.

Termos relacionados

← Ver glossário completo