Aller au contenu

Enregistrements

GET /api/v1/recordings

Renvoie une liste paginée des enregistrements accessibles à l’utilisateur authentifié.

ParamètreTypeDéfautDescription
limitnombre20Nombre de résultats (1–100)
offsetnombre0Décalage de pagination
searchchaîne-Filtrer par titre (correspondance partielle)
statuschaîne-Filtrer par statut (voir Statuts d’enregistrement)
date_fromchaîne-Date ISO 8601 - ne renvoyer que les enregistrements créés à partir de cette date
date_tochaîne-Date ISO 8601 - ne renvoyer que les enregistrements créés jusqu’à cette date
organization_idchaîne-Filtrer par organisation
folder_idchaîne-Filtrer par dossier (nécessite organization_id)
{
"data": [
{
"id": "uuid",
"status": "COMPLETED",
"title": "Synchronisation hebdomadaire",
"createdAt": "2025-09-19T15:00:00.000Z",
"thumbnailUrl": "https://...",
"progress": 1.0,
"capabilities": {
"canDownload": true,
"canShare": true,
"canViewTranscription": true,
"canGenerateSummary": true,
"canAskQuestions": true
}
}
],
"pagination": {
"total": 42,
"limit": 20,
"offset": 0,
"has_more": true
}
}

GET /api/v1/recordings/:id

Renvoie les détails complets d’un seul enregistrement.

Les enregistrements d’organisation sont disponibles pour tout membre de l’organisation autorisé à les consulter. Les propriétaires et les administrateurs peuvent ouvrir tous les enregistrements de leur organisation ; les éditeurs et les spectateurs voient les enregistrements que leur rôle et leur accès aux dossiers leur permettent. Pour un enregistrement d’organisation, is_locked, download_url et capabilities reflètent le plan de l’organisation et les indicateurs de fonctionnalité du membre, et non le plan personnel de l’appelant.

Renvoie 402 ORGANIZATION_SUBSCRIPTION_EXPIRED lorsque l’abonnement Enterprise de l’organisation n’est plus actif.

{
"data": {
"id": "uuid",
"status": "COMPLETED",
"title": "Synchronisation hebdomadaire",
"createdAt": "2025-09-19T15:00:00.000Z",
"updatedAt": "2025-09-19T15:30:00.000Z",
"startedAt": "2025-09-19T15:01:00.000Z",
"endedAt": "2025-09-19T15:30:00.000Z",
"videoUrl": "https://...",
"hlsUrl": "https://...",
"downloadUrl": "https://...",
"downloadUrlExpiresAt": "2025-09-19T21:00:00.000Z",
"thumbnailUrl": "https://...",
"organizationId": "org_uuid ou null",
"transcription": {
"status": "completed",
"language": "en",
"speakers": ["Intervenant 1", "Intervenant 2"],
"segmentsCount": 184,
"duration": 1740.5
},
"summary": {
"status": "completed",
"content": "## Sujets clés\n...",
"topics": [
{
"title": "Calendrier du projet",
"keyPoints": [
{ "point": "Date de lancement confirmée", "details": ["Prévue pour le T1"] }
]
}
]
},
"isLocked": false,
"capabilities": {
"canDownload": true,
"canShare": true,
"canViewTranscription": true,
"canStartTranscription": true,
"canRegenerateTranscription": false,
"canRenameSpeaker": true,
"canViewSummary": true,
"canGenerateSummary": true,
"canAskQuestions": true
}
}
}

GET /api/v1/recordings/:id/transcript

Renvoie les segments de transcription paginés pour un enregistrement.

Les enregistrements d’organisation suivent les mêmes règles d’accès que Obtenir un enregistrement. Renvoie 403 RECORDING_LOCKED lorsque l’enregistrement est verrouillé et 403 TRANSCRIPT_NOT_AVAILABLE lorsque la transcription est désactivée pour l’organisation ou le membre. Un enregistrement qui n’a pas encore été transcrit renvoie toujours 200 avec "status": "not_started" et un tableau segments vide.

ParamètreTypeDéfautDescription
start_chunknombre0Index du fragment à partir duquel commencer
limitnombre50Nombre de fragments (1–100)
{
"data": {
"status": "completed",
"language": "en",
"speakers": ["Intervenant 1", "Alice"],
"duration": 1740.5,
"segments": [
{
"id": 1,
"start": 0.5,
"end": 3.2,
"text": "Bonjour à tous.",
"speaker": "Alice",
"confidence": 0.97
}
],
"pagination": {
"total_chunks": 184,
"has_more": true
}
}
}

PATCH /api/v1/recordings/:id

Met à jour le titre ou les notes d’un enregistrement. Au moins un champ est requis.

{
"title": "Nouveau titre (1–500 caractères)",
"notes": "Notes facultatives (max 100 000 caractères)"
}
{
"data": { "success": true }
}

DELETE /api/v1/recordings/:id

Supprime définitivement un enregistrement et toutes les données associées (transcription, résumé, partages).

{
"data": { "success": true }
}

POST /api/v1/recordings/:id/share-link

Génère un lien de partage public pour l’enregistrement.

Pour un enregistrement d’organisation, tout membre pouvant consulter l’enregistrement peut créer le lien. Le lien est créé au nom du propriétaire de l’enregistrement et utilise le plan de l’organisation, de sorte que les liens de téléchargement fonctionnent pour les enregistrements d’organisation même lorsque le plan personnel de l’appelant est gratuit. Renvoie 403 RECORDING_LOCKED lorsque l’enregistrement est verrouillé et 403 SHARING_DISABLED lorsque le partage est désactivé pour l’organisation ou le membre.

{
"permission": "view"
}
ValeurDescription
viewLes destinataires peuvent regarder la vidéo et accéder à la transcription/au résumé
downloadLes destinataires peuvent également télécharger le fichier vidéo
{
"data": {
"share_url": "https://recordmeeting.com/app/shared/abc123",
"share_token": "abc123",
"permission": "view"
}
}

StatutDescription
STARTINGRequête d’enregistrement reçue, configuration en cours
CONNECTINGConnexion à la session Google Meet
WAIT_APPROVALAttente d’approbation en appel pour l’enregistrement
RECORDINGEnregistrement actif
UPLOADINGTéléchargement côté client en cours (fragments s’écoulant vers le stockage)
PROCESSINGEmpaquetage HLS/DASH par Cloudflare Stream - pas encore lisible
MIGRATINGVidéo entièrement lisible ; HLS en cours de migration vers le stockage à long terme
COMPLETEDEnregistrement entièrement traité et stocké
ERRORÉchec de l’enregistrement

Les consommateurs d’API devraient traiter MIGRATING de manière identique à COMPLETED pour les opérations de lecture, de téléchargement et de partage - la distinction est interne.