# Idempotência

> Repita pedidos sem duplicar na API do FORSI Chat com o cabeçalho Idempotency-Key: prazos, conflitos e as rotas que aceitam.

Rede cai. Para poder repetir um pedido sem duplicar, mande o cabeçalho `Idempotency-Key` com um valor único por operação (o id do pedido no seu sistema, por exemplo). Em `POST /mensagens`, ele é obrigatório; você pode usar `id_cliente` (UUID) no corpo no lugar do cabeçalho.

- Mesma chave e mesmo corpo em até 7 dias para envios (24 horas para outras operações): devolvemos a primeira resposta, com `Idempotent-Replayed: true` e `Idempotent-Replayed-At`, e nada é feito de novo. Depois do prazo, o mesmo identificador de mensagem ainda impede novo envio.
- Mesma chave com corpo diferente: `409 idempotencia_conflito`. Use uma chave nova para um pedido novo.
- A chave tem de 1 a 200 caracteres visíveis, sem espaço (`422 idempotencia_invalida`).
- A chave vale para a organização inteira (todas as chaves de API) e para uma operação só. Reaproveitar a mesma chave em outra rota também dá `409 idempotencia_conflito`. Com mais de uma integração, use um prefixo por integração (`erp-pedido-4821`).

```bash title="repetir com segurança"
curl -X POST "https://chat.forsi.com.br/api/v1/mensagens" \
  -H "Authorization: Bearer $FORSI_CHAVE" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: pedido-4821" \
  -d '{
    "telefone": "+55 31 98888-7777",
    "tipo": "texto",
    "texto": "Olá! Sua consulta está confirmada para amanhã às 9h."
  }'
```

## Rotas que aceitam Idempotency-Key

| Rota | Operação |
| --- | --- |
| [`POST /mensagens`](https://docs.forsi.com.br/api/mensagens/enviar-mensagem) | Enviar mensagem |
| [`POST /contatos`](https://docs.forsi.com.br/api/contatos/criar-contato) | Criar contato |
| [`POST /webhooks`](https://docs.forsi.com.br/api/webhooks/criar-webhook) | Criar webhook |
| [`POST /webhooks/{id}/rotacionar`](https://docs.forsi.com.br/api/webhooks/rotacionar-webhook) | Trocar o segredo |
| [`POST /webhooks/{id}/testar`](https://docs.forsi.com.br/api/webhooks/testar-webhook) | Mandar um evento de teste |
| [`POST /webhooks/entregas/{id}/reenviar`](https://docs.forsi.com.br/api/webhooks/reenviar-entrega) | Reenviar uma entrega |
| [`POST /funis`](https://docs.forsi.com.br/api/funil/criar-funil) | Criar funil |
| [`POST /etapas`](https://docs.forsi.com.br/api/funil/criar-etapa) | Criar etapa |
| [`POST /negocios`](https://docs.forsi.com.br/api/funil/criar-negocio) | Criar negócio |
| [`POST /negocios/{id}/mover`](https://docs.forsi.com.br/api/funil/mover-negocio) | Mover para outra etapa |
| [`POST /negocios/{id}/ganhar`](https://docs.forsi.com.br/api/funil/ganhar-negocio) | Marcar como ganho |
| [`POST /negocios/{id}/perder`](https://docs.forsi.com.br/api/funil/perder-negocio) | Marcar como perdido |
| [`POST /negocios/{id}/reabrir`](https://docs.forsi.com.br/api/funil/reabrir-negocio) | Reabrir negócio |
| [`POST /negocios/{id}/notas`](https://docs.forsi.com.br/api/funil/criar-nota-negocio) | Anotar no negócio |
| [`POST /agendas`](https://docs.forsi.com.br/api/agenda/criar-agenda) | Criar agenda |
| [`POST /compromissos`](https://docs.forsi.com.br/api/agenda/criar-compromisso) | Marcar compromisso |
| [`POST /compromissos/{id}/remarcar`](https://docs.forsi.com.br/api/agenda/remarcar-compromisso) | Remarcar compromisso |
| [`POST /bloqueios`](https://docs.forsi.com.br/api/agenda/criar-bloqueio) | Criar bloqueio |
| [`POST /equipe/convites`](https://docs.forsi.com.br/api/equipe/criar-convite) | Convidar atendente |
| [`POST /equipe/convites/{id}/reenviar`](https://docs.forsi.com.br/api/equipe/reenviar-convite) | Reenviar convite |
| [`POST /equipe/equipes`](https://docs.forsi.com.br/api/equipe/criar-equipe) | Criar equipe |
| [`POST /conversas/{id}/atribuir`](https://docs.forsi.com.br/api/equipe/atribuir-conversa) | Atribuir ou transferir conversa |
| [`POST /regras-comentario`](https://docs.forsi.com.br/api/automacoes/criar-regra-comentario) | Criar regra de comentário |
| [`PATCH /regras-comentario/{id}`](https://docs.forsi.com.br/api/automacoes/editar-regra-comentario) | Editar regra de comentário |

As demais escritas são naturalmente seguras de repetir (atualizar com o mesmo valor, cancelar duas vezes) ou dão `409`/`404` na segunda vez.

---

Página: https://docs.forsi.com.br/idempotencia · Índice: https://docs.forsi.com.br/llms.txt · Tudo num arquivo: https://docs.forsi.com.br/llms-full.txt
