https://gateway.streamfizz.live/apiLance la transcription automatique d'un média et crée la piste de sous-titres correspondante. Le traitement est asynchrone : la piste retournée est en statut Pending. Consomme le quota de durée de transcription.
L'encodage du média doit être terminé : la transcription part de sa piste
audio. Appelée trop tôt, la mutation est refusée avec le code
MEDIA_NOT_ENCODED — attendre que isEncodingDone soit vrai.
| Nom | Type | Description |
|---|---|---|
mediaId* | ID! | Identifiant du média à transcrire. |
languages | [Language!] | Langues parlées dans le média. Une seule langue fige la source, plusieurs activent la bascule automatique entre ces langues. Omettre pour laisser la détection automatique décider. Chaque langue doit porter l'opération Transcribe — voir getLanguages. |
Media| Nom | Type | Description |
|---|---|---|
id | ID! | Identifiant unique du média. |
title | String | Titre du média. |
type | MediaType | Type de média. |
sourceKey | String | Clé S3 du fichier source original. |
fileName | String! | Nom original du fichier uploadé. |
cote | String | Cote ou référence métier interne. |
note | String | Note interne sur le média. |
myCapability | AuthzCapability! | Ce que l'appelant a le droit de faire sur ce contenu, compte tenu de ses
groupes et de ses accès directs : |
encodingVersion | String | Version actuelle d'encodage (ex: "v0", "v2.1"). |
isEncodingDone | Boolean | Indique si l'encodage est terminé. |
isContentPlayable | Boolean | Indique si le média peut être lu (encodage OK). |
duration | Float | Durée du média en secondes. |
ratio | Float | Ratio d'aspect (largeur / hauteur). |
playlistKey | String | Clé S3 de la playlist HLS. |
playlistCdnUrl | String | URL CDN de la playlist HLS. |
thumbKeys | [String] | Clés S3 des miniatures générées. |
thumbCdnUrls | [String] | URLs CDN des miniatures générées. |
selectedThumbKey | String | Clé S3 de la miniature sélectionnée. |
selectedThumbCdnUrl | String | URL CDN de la miniature sélectionnée. |
thumbnailVttCdnUrl | String | URL CDN du fichier VTT des vignettes de prévisualisation. |
deltaChapter | Int | Décalage en secondes appliqué aux points de chapitre à la lecture, pour rattraper la latence d'encodage et de diffusion. |
publicUrl | String | URL de la page de lecture publique. |
publicEmbedUrl | String | URL d'intégration (embed) publique. |
publisher | User! | Utilisateur ayant publié le média. |
account | Account | Compte propriétaire du média. |
accessGroups | [Group!]! | - |
directUsers | [PublicUser!]! | - |
createdAt | DateTime! | Date de création du média. |
updatedAt | DateTime! | Date de dernière modification du média. |
encodingProgress | [EncodingProgress] | Progression d'encodage pour chaque version. |
versioningProgress | EncodingProgress | Progression du versioning en cours (ou null). |
lastVersioning | DateTime | Date du dernier versioning terminé. |
mediaInfos | Json | Infos techniques d'encodage (ffprobe-like pour v1+, array typé pour v0 legacy). |
subtitles | [Subtitle!] | Sous-titres associés au média. |
files | [File!] | Fichiers joints au média. |
chapters | [Chapter] | Chapitres associés au média. |
clips | [Clip!] | Clips dérivés du média. |
live | Live | Live associé si ce média est un replay. |
discussion | Discussion | Discussion (chat) associée au média. |
moderatorContents | [ModeratorContent] | Modérateurs désignés pour ce média. |
relatedTags | [Tag] | Tags rattachés. |
relatedCategories | [Category] | Catégories rattachées. |
pageSetting | BrandSetting | Paramètres de personnalisation de la page de lecture. |
embedSetting | BrandSetting | Paramètres de personnalisation de l'embed. |
preRoll | RollPreset | Annonce intro associée. |
postRoll | RollPreset | Annonce outro associée. |
seo | SEO | Paramètres SEO de la page de lecture. |
confidentiality | Confidentiality | Niveau de confidentialité (nouveau modèle). |
privacy | Privacy | Paramètres de confidentialité (accès utilisateur). |
playlists | PlaylistConnection | Playlists contenant ce média. |
webTVs | WebTVConnection | WebTVs contenant ce média. |
metadata | MediaMetadata | Métadonnées descriptives (production, auteur, contenu). |
originalPublisher | DeletedUser | - |
Le traitement se fait en arrière-plan et rien ne vous rappellera : la piste revient en statut Pending, puis passe à Processing et enfin Ready. Relisez-la sur le média pour suivre son avancement — quelques secondes suffisent entre deux appels, une transcription se compte en minutes.
{
getMedia(id: "MEDIA_ID") {
subtitles {
id
label
languages
source
status
cdnUrl
}
}
}cdnUrl reste null tant que le statut n'est pas Ready. Un statut Error est définitif : la piste ne se reprendra pas toute seule.| Code | Message | Description |
|---|---|---|
UNAUTHENTICATED | You are not authorized to perform this action | Clé API manquante, invalide, expirée ou révoquée. La réponse porte un code HTTP 200 : c'est le corps GraphQL qui signale l'échec. |
INPUT_VALIDATION_ERROR | Validation failed: {field}: {message} | Un ou plusieurs champs sont invalides (format, longueur, protocole…). Le détail est dans extensions.fieldErrors[]. |
INTERNAL_SERVER_ERROR | Internal server error | Erreur interne du serveur. Le message est volontairement générique : le détail est journalisé côté Streamfizz, jamais renvoyé. |
| Code | Message | Description |
|---|---|---|
LANGUAGE_NOT_TRANSCRIBABLE | Language '{language}' does not support Transcribe | Une des langues demandées ne peut pas être transcrite. Les variantes régionales (pt_br, en_us…) n'existent que pour la traduction. |
QUOTA_EXCEEDED | The quota for TRANSCRIPT_DURATION has been exceeded | Le quota de durée de transcription du compte est atteint. |
TRANSCRIPT_LIMITATION | You cannot transcript a file longer than 4 hours | Le média dépasse la durée maximale transcriptible (4 heures) |
NOT_FOUND | Media '{id}' not found | Le média n'existe pas ou n'appartient pas au compte |
60 requêtes par minute par clé API
En cas de dépassement, une erreur 429 Too Many Requests est retournée.