Docs/Sesiones

Sesiones

Crea una sesión de visualización en vivo, envía una invitación al cliente y consulta su estado. Las marcas de tiempo son ISO-8601 UTC (…Z).

Dos formas de autenticarse
Crear una sesión y consultar su estado aceptan un JWT del panel o una clave de API de equipo. Listar sesiones, obtener una sesión y emitir un token de agente son exclusivos del panel (JWT).

Crear una sesión

POST/sessions

Crea una sesión y su invitación, y luego envía el enlace de invitación por el channel elegido. Envía teamId con un JWT del panel; una clave de API implica su propio equipo.

CampoDescripción
teamIdEl UUID del equipo. Requerido al autenticarse con un JWT del panel; se infiere automáticamente de una clave de API.
channelCómo se entrega la invitación: sms, email, o link (no se envía nada — tú distribuyes la URL).
recipientPhoneEl número de teléfono del cliente en formato E.164 (p. ej. +15555550123). Requerido cuando channel es sms.
recipientEmailLa dirección de correo del cliente. Requerida cuando channel es email — el mensaje incluye el enlace más un código QR incorporado.
noteUna etiqueta interna opcional, de hasta 500 caracteres (p. ej. un número de ticket), mostrada junto a la sesión en el panel.
ttlMinutesCuánto tiempo permanece válida la invitación, en minutos (11440). El valor predeterminado es 30.
smsConsentObligatorio cuando channel es sms: debe ser true para confirmar que el destinatario aceptó recibir un SMS de seeitlive.io. Pueden aplicarse tarifas del operador.
metadataPares clave/valor personalizados opcionales (un mapa plano de cadenas, p. ej. tu propio id de agente externo o referencia de ticket). Se almacenan tal cual y se devuelven en las lecturas. Hasta 30 claves; claves de hasta 64 caracteres, valores de hasta 500.
curl -X POST https://api.seeitlive.io/v1/sessions \
  -H "Authorization: Bearer sil_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "channel": "sms", "recipientPhone": "+15555550123", "smsConsent": true, "note": "Ticket #4821" }'
json
{
  "id": "f74f1305-2222-4a11-8b1e-1234567890ab",
  "status": "pending",
  "inviteCode": "aZ3kQ9",
  "inviteUrl": "https://seeitlive.io/u/aZ3kQ9#3n9F1Qk7xY2zR8vB5tW6uL0mC4pD1sA...",
  "agentViewUrl": "https://seeitlive.io/a/pL2mN8#7dR2Xa4Wq9Kj6bV3nF1yT8sH5cE0uZ...",
  "expiresAt": "2026-07-07T09:42:00.000Z"
}
Se muestra una sola vez
inviteUrl y agentViewUrl llevan los tokens de la sesión en texto plano en el fragmento de su URL. Se devuelven solo al crear la sesión — guárdalos de inmediato.

Estado de la sesión

GET/sessions/:id/status

Consulta este endpoint para saber cuándo el cliente está frente a la cámara.

status avanza de pendingringingliveended a medida que el cliente se une y se retira, o pasa directamente a expired (la invitación nunca se abrió) o cancelled.

json
{
  "id": "f74f1305-2222-4a11-8b1e-1234567890ab",
  "status": "live",
  "startedAt": "2026-07-07T09:14:03.000Z",
  "endedAt": null,
  "producerCount": 1,
  "hasVideo": true
}

Resolver una invitación (público)

GET/u/:code

El endpoint público que la página del invitado llama para resolver un code de invitación en su sesión y marca — no requiere token ni clave. Unirse a la transmisión se autentica por separado, con el token incorporado en el fragmento de la URL de invitación.

json
{
  "sessionId": "f74f1305-2222-4a11-8b1e-1234567890ab",
  "brand": {
    "name": "Acme Support",
    "brandLogoUrl": null,
    "brandColor": "#1a2b3c"
  },
  "status": "pending"
}
Limitado en frecuencia
Limitado a 20 solicitudes por minuto por IP, ya que no está autenticado y es accesible desde cualquier lugar.
Sesiones