Embeber el iframe
Carga la URL del widget en un iframe y entrega control al paciente.
Después de que tu backend mintee un widget_token, el navegador del paciente carga la URL retornada dentro de un iframe. El widget llama a Skip por su cuenta para obtener el estado de la sesión.
Embed mínimo
<iframe
src="https://spot.getskip.ai?token=550e8400-..."
width="100%"
height="700"
style="border: 0;"
allow="clipboard-read; clipboard-write"
></iframe>Dimensiones recomendadas: al menos 480px de ancho y 640px de alto. El widget es responsivo dentro de esos límites.
Qué hace el widget al cargar
El widget llama a GET /api/spot/widget/{token} con el token de su URL. La respuesta incluye un event_type que determina la primera pantalla mostrada al paciente:
event_type | Qué muestra el widget |
|---|---|
SPOT_USER_NEW | Formulario de registro (RUT no está aún en Skip). |
GOKEI_PRO_USER | Pantalla de éxito "ya eres usuario Skip Pro". |
PROVIDER_CHARGES | Confirmación de que tu provider cubre el cargo — sigue al onboarding. |
REFUNDS_LEFT | Modo prueba gratuita con N reembolsos restantes. |
FREE_TRIAL_EXPIRED_USER | Pantalla de suscripción — al usuario se le acabó la prueba. |
No tienes que manejarlas tú; el widget las renderiza. Las listamos para que entiendas qué caminos puede tomar una sesión.
Leer estado del widget desde tu backend (opcional)
Si necesitas inspeccionar el estado después de mintear (ej. para soporte), llama:
GET /api/spot/widget/{widget_token}Es el mismo endpoint que usa el iframe. Es público — no requiere public_key — porque el token mismo autoriza el acceso. No expongas esta URL a nadie que no sea el paciente o tu tooling de soporte.
Errores que el iframe puede encontrar
| Status | Causa | Qué hace el iframe |
|---|---|---|
| 404 | Token no existe | Renderiza pantalla de error. El paciente puede reintentar desde tu metadata.retry_url. |
| 410 | Token expirado | Igual que arriba. |
| 409 | RUT_OTHER_EMAIL — RUT pertenece a otra cuenta | Renderiza pantalla de recuperación. Ver Casos borde. |
| 422 | RUT mal formado | Pantalla de error. |
No los renderizas tú — el widget lo hace. Tú gestionas el evento postMessage final (ver Eventos postMessage).