> ## Documentation Index
> Fetch the complete documentation index at: https://docs.factioapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Idempotencia

> Cómo usar idempotency_key para evitar duplicados

Los endpoints de emisión de Factio soportan **idempotencia**:
si envías el mismo request más de una vez, recibes el mismo resultado
sin crear duplicados.

## Cuándo usar idempotency\_key

Úsala siempre que exista riesgo de retry:

* Timeouts de red.
* Reintentos automáticos de tu sistema.
* Errores de red en conexiones móviles.
* Retries de Zapier, Make u otras integraciones.

## Cómo funciona

Incluye el header `Idempotency-Key` con un UUID v4 único por operación:

```bash theme={null}
curl -X POST https://api.staging.factioapp.com/documents \
  -H "X-API-Key: fct_test_..." \
  -H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{ ... }'
```

Si reenvías el mismo request con la misma `Idempotency-Key`:

* Recibes exactamente la misma respuesta que la primera vez.
* **No se reserva un nuevo secuencial.**
* **No se crea un nuevo comprobante.**

## Reglas

* La `Idempotency-Key` es **única por emisor** (`issuer_id`).
  Dos emisores distintos pueden usar la misma key sin conflicto.
* Las keys expiran después de **24 horas**.
* Un UUID v4 aleatorio por operación es suficiente.
  No uses timestamps, IDs de tu sistema ni valores predecibles.

```python theme={null}
import uuid
import httpx

idempotency_key = str(uuid.uuid4())  # Generar una vez por operación

response = client.post(
    "/documents",
    json=payload,
    headers={"Idempotency-Key": idempotency_key},
)
```

<Warning>
  Si omites el header `Idempotency-Key`, la emisión funciona igualmente,
  pero **asumes el riesgo de duplicados en caso de retry**.
  Se recomienda siempre incluirlo.
</Warning>
