https://gateway.streamfizz.live/apiCrée un nouveau média à partir d'une URL de fichier vidéo ou audio. Le téléchargement et l'encodage sont effectués en arrière-plan.
| Nom | Type | Description |
|---|---|---|
videoUrl* | String! | URL publique du fichier à importer. Elle doit pointer directement sur le fichier : une page de lecture ou de partage (YouTube, Google Drive…) est refusée avec INVALID_MIME_TYPE. Formats vidéo supportés : MP4, AVI, MOV, WebM, OGG. Formats audio supportés : MP3, WAV, OGG, AAC, FLAC. L'URL doit rester valable jusqu'au téléchargement par l'encodeur, qui se présente avec l'en-tête User-Agent: Streamfizz/1.0 (+https://streamfizz.fr). |
title | String | Titre du média. Si non fourni, le nom du fichier sera utilisé. |
ownerId | ID | ID de l'utilisateur propriétaire du média. Si non fourni, l'utilisateur associé à la clé API sera utilisé. L'utilisateur doit appartenir au même compte que la clé API. |
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 | - |
La création est immédiate, le téléchargement et l'encodage se font en arrière-plan. Il n'existe pas de rappel : pour savoir quand le média est prêt, interrogez encodingProgress, de type EncodingProgress, en gardant l'entrée dont l'encodingVersion est celle du média. Un intervalle de 30 secondes suffit — un encodage se compte en minutes.
Deux jalons distincts : isContentPlayable passe à vrai dès que le contenu est lisible, et isEncodingDone quand toutes les qualités sont produites. Si getMediaInfosFailed passe à vrai, la source n'a pas pu être récupérée ou lue : inutile de continuer à interroger.
{
getMedia(id: "MEDIA_ID") {
isEncodingDone
encodingVersion
encodingProgress {
encodingVersion
getMediaInfosDone
getMediaInfosFailed
nbOfJobsDone
nbOfJobsTotal
isContentPlayable
}
}
}| Nom | Type | Description |
|---|---|---|
hasDownload | Boolean! | Indique si un téléchargement source est associé à ce média. |
downloadProgress | Int! | Progression du téléchargement source en pourcentage (0–100). |
downloadLastUpdate | DateTime | Date de la dernière mise à jour de la progression. |
downloadDone | Boolean! | Indique si le téléchargement source est terminé avec succès. |
downloadFailed | Boolean! | Indique si le téléchargement source a échoué. |
| 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 |
|---|---|---|
URL_UNREACHABLE | Unable to reach URL | Impossible de se connecter au serveur (DNS, timeout, connexion refusée) |
URL_ACCESS_DENIED | Cannot access URL | Accès refusé ou ressource non trouvée (403, 404) |
INVALID_MIME_TYPE | Invalid file type | L'URL ne pointe pas sur un fichier média : le serveur annonce un autre type, par exemple une page HTML de partage (YouTube, Google Drive). |
INVALID_OWNER | Invalid ownerId - user not found or not in account | L'ownerId 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.