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:
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.
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},
)
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.