# Idempotência

> Idempotency-Key obrigatória em todo POST, para repetir uma chamada sem criar nada em dobro.

URL: https://precificador3d.com.br/docs/api/idempotencia

Rede cai. Para repetir um `POST` sem criar a cotação ou o movimento em dobro, todo `POST` exige o cabeçalho `Idempotency-Key`. Sem ele, a resposta é `400 idempotencia_obrigatoria`.

```bash
curl -X POST https://api.precificador3d.com.br/v1/estoque/movimentos \
  -H "Authorization: Bearer $PC3D_CHAVE" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: loja-pedido-88231" \
  --data '{"tipo": "saida", "variacao_id": "6b7c8d9e-0f1a-4b2c-3d4e-5f6a7b8c9d0e", "quantidade": 2, "motivo": "venda_loja"}'
```

| Situação | Resposta |
| --- | --- |
| Mesma chave e mesmo corpo, nas últimas 24 h | A mesma resposta da primeira vez, com `Idempotencia-Repetida: true`. Não gasta cota de escrita. |
| Mesma chave e **outro** corpo | `422 idempotencia_conflito` |
| Mesma chave, primeira ainda em andamento | `409 idempotencia_em_andamento` com `Retry-After` |
| Chave nova | Operação nova |

- De 1 a 64 caracteres: letras, números, `_` e `-`.
- Vale por 24 horas, por chave de API.
- O Precificador guarda só a chave, o hash do corpo e o resultado, **nunca o corpo**.

> **Use um id que você já tem:** O número do pedido na loja (`loja-pedido-88231`) é uma ótima chave: se o mesmo pedido chegar duas vezes, o estoque baixa uma vez só.
