Aller au contenu principal

Player avec l'API REST

Piloter le flux de lecture Videas depuis n'importe quel langage, en HTTP simple — jeton émis côté serveur, URLs signées résolues, lecture dans le navigateur.

Aucun SDK requis : le flux de lecture tient en deux appels HTTP simples. Ce guide utilise curl et un exemple serveur Python, mais la forme est identique dans tout langage. Lisez d’abord Comment fonctionne la lecture pour le modèle de sécurité — en résumé : l’étape 1 nécessite votre clé secrète (serveur uniquement) ; l’étape 2 utilise le jeton et convient au navigateur.

Étape 1 — émettre un jeton de player (serveur, nécessite la clé API)

curl -H "Authorization: Bearer $VIDEAS_API_KEY" \
  https://api.videas.com/api/external/v1/videos/vid_123/player/

La réponse inclut les métadonnées du player et, surtout, un playback_token (valide 4 h) :

{
  "uid": "…",
  "playback_token": "eyJhbGciOi…",
  "player_config": { "auto_play": false, "theme": "dark" },
  "items": [{ "asset": { "uid": "vid_123", "thumbnail_url": "https://api.videas.com/assets/vid_123/thumbnail-ab12cd34.jpg" } }]
}

Les champs URL comme thumbnail_url sont renvoyés en URLs absolues — prêts à l’emploi, aucun hôte à préfixer.

Étape 2 — résoudre les URLs de flux signées (jeton seul, aucune clé API)

curl -X POST https://api.videas.com/api/external/v1/playback/info/ \
  -H "Content-Type: application/json" \
  -d '{"asset_id":"vid_123","playback_token":"eyJhbGciOi…"}'
{
  "type": "video",
  "blocked": false,
  "hls_url": { "url": "https://…/stream.m3u8?token=…", "expires_at": "2026-07-15T12:00:00Z" },
  "source_url": { "url": "https://…/video.mp4?token=…", "expires_at": "…" },
  "preview_sprites_url": { "url": "https://…", "expires_at": "…" },
  "chapters": [{ "title": "Intro", "start_time": 0 }],
  "resume_position_seconds": null
}

Remarquez l’absence d’en-tête Authorization à l’étape 2 — elle est authentifiée par le jeton, d’où la possibilité de la lancer depuis le navigateur.

Assembler le tout (serveur Python)

Un pattern courant : votre backend émet le jeton, votre page le résout et lit. Avec le SDK Python, le côté serveur tient en un appel :

import os
from videas_sdk import VideasClient

client = VideasClient(api_key=os.environ["VIDEAS_API_KEY"])

def player_context(uid: str) -> dict:
    player = client.videos.get_player(uid)
    # Ne transmettez QUE des données sûres à votre template / endpoint JSON.
    return {
        "asset_id": uid,
        "playback_token": player["playback_token"],  # sûr à exposer ; valide 4h
        "poster": player["items"][0]["asset"].get("thumbnail_url"),
    }

Vous préférez la stdlib pure ? Les deux mêmes appels avec urllib :

import json, urllib.request

def mint_token(uid, api_key):
    req = urllib.request.Request(
        f"https://api.videas.com/api/external/v1/videos/{uid}/player/",
        headers={"Authorization": f"Bearer {api_key}"},
    )
    with urllib.request.urlopen(req) as r:
        return json.load(r)["playback_token"]

Transmettez ensuite playback_token + asset_id au navigateur et résolvez là.

Le lire dans le navigateur

Une fois que le navigateur a asset_id et playback_token, le code de résolution-et-lecture est identique au guide SDK — seule change la provenance du jeton. Voir Player web avec le SDK JavaScript → Étape 2 pour l’extrait complet hls.js + HLS natif. En résumé :

const info = await (await fetch('https://api.videas.com/api/external/v1/playback/info/', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ asset_id, playback_token }),
})).json()
// if (!info.blocked) → fournir info.hls_url.url à hls.js / une <video> native

Autres types d’asset

playback/info/ est polymorphe — branchez sur type :

  • video → lisez hls_url (repli source_url).
  • audio → lisez source ; affichez subtitle_tracks et waveform_url.
  • image → choisissez une entrée variants[] selon la taille.
  • document → liez/prévisualisez url et les thumbnails par page.
  • third_party → intégrez l’iframe du fournisseur via embed_url (n’utilisez pas de player HLS).

Étapes suivantes