Docs/Sessions

Sessions

Créez une session de visionnage en direct, envoyez une invitation au client et interrogez son statut. Les horodatages sont en ISO-8601 UTC (…Z).

Deux modes d'authentification
Créer une session et vérifier son statut acceptent un JWT de tableau de bord ou une clé API d'équipe. Lister les sessions, récupérer une session et émettre un jeton d'agent sont réservés au tableau de bord (JWT).

Créer une session

POST/sessions

Crée une session et son invitation, puis transmet le lien d'invitation via le channel choisi. Passez teamId avec un JWT de tableau de bord ; une clé API implique sa propre équipe.

ChampDescription
teamIdL'UUID de l'équipe. Requis lors de l'authentification avec un JWT de tableau de bord ; déduit automatiquement d'une clé API.
channelComment l'invitation est délivrée : sms, email, ou link (rien n'est envoyé — vous distribuez l'URL vous-même).
recipientPhoneLe numéro de téléphone du client au format E.164 (ex. +15555550123). Requis quand channel vaut sms.
recipientEmailL'adresse e-mail du client. Requise quand channel vaut email — le message inclut le lien ainsi qu'un QR code intégré.
noteUn libellé interne optionnel, jusqu'à 500 caractères (ex. un numéro de ticket), affiché à côté de la session dans le tableau de bord.
ttlMinutesLa durée de validité de l'invitation, en minutes (11440). Par défaut 30.
smsConsentObligatoire lorsque channel vaut sms : doit être true pour confirmer que le destinataire a accepté de recevoir un SMS de seeitlive.io. Des frais d'opérateur peuvent s'appliquer.
metadataPaires clé/valeur personnalisées facultatives (un dictionnaire plat de chaînes, par exemple votre propre identifiant d'agent externe ou une référence de ticket). Stockées telles quelles et renvoyées en lecture. Jusqu'à 30 clés ; clés jusqu'à 64 caractères, valeurs jusqu'à 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"
}
Affiché une seule fois
inviteUrl et agentViewUrl transportent les jetons de session en clair dans le fragment de leur URL. Ils ne sont renvoyés qu'à la création — enregistrez-les immédiatement.

Statut de la session

GET/sessions/:id/status

Interrogez ce point de terminaison pour savoir quand le client est devant sa caméra.

status évolue de pendingringingliveended au fur et à mesure que le client rejoint puis quitte, ou passe directement à expired (l'invitation n'a jamais été ouverte) ou cancelled.

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

Résoudre une invitation (public)

GET/u/:code

Le point de terminaison public que la page invité appelle pour résoudre un code d'invitation en sa session et sa marque — aucun jeton ni clé requis. Rejoindre le flux s'authentifie séparément, avec le jeton intégré dans le fragment de l'URL d'invitation.

json
{
  "sessionId": "f74f1305-2222-4a11-8b1e-1234567890ab",
  "brand": {
    "name": "Acme Support",
    "brandLogoUrl": null,
    "brandColor": "#1a2b3c"
  },
  "status": "pending"
}
Limité en débit
Limité à 20 requêtes par minute et par IP, car ce point de terminaison est non authentifié et accessible depuis n'importe où.
Sessions