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 esri_ + 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:- El intent queda en
status: requires_mfa. - El campo
requires_mfa.widget_tokencontiene unri_{intentId}_sec_…listo para abrir el widget. - Tu frontend abre el widget con ese token.
- User resuelve el MFA dentro del widget.
- El widget cierra, el sync continúa server-side.
- El intent pasa a
succeededofailed.
Polling vs Webhooks
Dos formas de saber cuándo termina:Polling
status sea succeeded, failed o requires_mfa.
Webhooks (recomendado)
Suscríbete a los eventosrefresh_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_lastno hay cooldown. - Unique in-progress: solo puede haber 1 intent activo por link a la vez. Si pides otro, te devolvemos el existente.