Skip to main content

Por qué existen

Rail corre syncs automáticos cada 4h por cada link. Pero a veces el cliente quiere forzar un sync ya — por ejemplo cuando el user abre la app y quiere ver lo más reciente. Un refresh intent representa ese deseo de sync on-demand. Su ID es ri_ + 16 chars hex.

Crear

refresh_type:
  • full — todas las cuentas, todos los movs (default).
  • historical — incluye movs viejos (60+ días).
  • only_last — solo cuentas (skip movs). Más rápido.

Lifecycle

MFA async

Algunos bancos (Santander, BCI a veces) piden MFA en cada sync. Cuando eso pasa:
  1. El intent queda en status: requires_mfa.
  2. El campo requires_mfa.widget_token contiene un ri_{intentId}_sec_… listo para abrir el widget.
  3. Tu frontend abre el widget con ese token.
  4. User resuelve el MFA dentro del widget.
  5. El widget cierra, el sync continúa server-side.
  6. El intent pasa a succeeded o failed.

Polling vs Webhooks

Dos formas de saber cuándo termina:

Polling

Cada 5-10 segundos hasta que status sea succeeded, failed o requires_mfa.

Webhooks (recomendado)

Suscríbete a los eventos refresh_intent.succeeded, refresh_intent.failed, refresh_intent.requires_mfa. Ver Guías → Webhooks.

Cooldown y deduplicación

  • Cooldown 5min: si pediste un intent para un link, no puedes pedir otro full hasta 5min después. Para only_last no hay cooldown.
  • Unique in-progress: solo puede haber 1 intent activo por link a la vez. Si pides otro, te devolvemos el existente.

Error codes comunes