fluyio.
Referencia de la API

Idempotencia y reintentos

Reutiliza una clave por operación y evita repetir escrituras cuando la respuesta se pierde.

Una espera agotada no demuestra que una escritura haya fallado. Envía Idempotency-Key para identificar una operación y reutiliza la misma clave y petición en sus reintentos.

Primera petición

curl -X POST 'https://fluyio.com/api/v1/subscribers' \
  -H "Authorization: Bearer $FLUYIO_API_KEY" \
  -H 'Fluyio-Version: 2026-05-15' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: crm-perfil-123-revision-1' \
  -d '{"email":"[email protected]","first_name":"Ana"}'

Este ejemplo crea un perfil pendiente, sin consentimiento para email. Solo debes enviar consent.email: subscribed si tienes una autorización explícita y válida.

Cómo funciona

  1. Tras comprobar autenticación y permisos, el servidor reserva atómicamente la clave en Redis durante 24 horas.
  2. Si puede reservarla, ejecuta la operación. Guarda su respuesta 2xx o 4xx antes de devolverla.
  3. Una repetición con la misma petición devuelve el resultado guardado y la cabecera Idempotency-Replayed: true.
  4. Una petición simultánea o con resultado incierto no vuelve a ejecutar la escritura.
  5. Al caducar la reserva, una nueva petición puede ejecutarse. No reutilices claves antiguas para reintentos sin comprobar primero el resultado.

Contrato

PropiedadValor
MétodosPOST, PATCH, PUT y DELETE. No hay ruta PUT publicada. GET ignora la cabecera.
FormatoDe 8 a 128 letras ASCII, números, guiones o guiones bajos.
ObligatoriedadOpcional. Sin cabecera no se aplica esta protección.
ÁmbitoMarca, clave de API, método y ruta. Cambiar de clave de API cambia este ámbito.
ComparaciónCuerpo JSON, parámetros de consulta, versión y modo. El orden de claves de objetos no importa; el orden de arrays sí.
CaducidadReserva inicial de 24 horas; la respuesta completada se conserva 24 horas desde que se guarda.

Errores que debes distinguir

HTTPCódigoSignificado
400invalid_idempotency_keyFormato inválido. La operación no se ejecuta.
409idempotency_key_reuseLa misma clave identifica otra petición. Una clave nueva solo corresponde a una operación nueva.
409idempotency_in_progressLa operación está en curso o su resultado es incierto. Comprueba el recurso; no cambies de clave para forzarla.
409 / 503idempotency_record_unavailableNo se puede recuperar con seguridad un registro previo, incluidos registros antiguos. Comprueba el resultado.
503idempotency_unavailableNo se pudo reservar la operación. No se inicia una escritura sin protección; reintenta con la misma clave.
503idempotency_outcome_unknownLa operación puede haberse aplicado, pero no se guardó la respuesta. Comprueba el recurso antes de repetir.

Un 5xx no implica que puedas ejecutar otra vez

Un error puede producirse después de escribir en la base de datos. En ese caso la reserva se mantiene para impedir que un reintento vuelva a modificar el recurso. Conserva la clave, revisa el estado del suscriptor y facilita el identificador de petición a soporte si necesitas ayuda. No cambies la clave para eludir la protección.

Límites de la garantía

La idempotencia no equivale a una garantía de ejecución exactamente una vez. La protección depende de conservar Redis y de que no haya caducado la reserva. Tampoco sustituye comprobar el resultado antes de repetir una operación mucho después o con otra credencial.

Las respuestas repetidas conservan el estado y los datos del resultado, pero el request_id de error y la cabecera de petición identifican el reintento actual.

Reglas prácticas

  • Genera la clave antes del primer intento y guárdala junto con el trabajo de tu cola.
  • Ante un 429, respeta Retry-After. Reutiliza la misma clave.
  • Ante pérdida de conexión, repite la misma petición de forma acotada; si recibes resultado incierto, consulta el recurso.
  • No elimines la cabecera ni cambies de credencial, URL o clave para forzar un reintento.
  • Antes de reintentar un borrado o un cambio de consentimiento, confirma el estado actual.

Consulta también errores y límites de peticiones.

En esta página