Aller au contenu principal

Démarrer : une clé et un premier appel

Créez une clé API dans les paramètres de votre organisation, choisissez ses permissions, gardez-la sur votre serveur, envoyez-la en jeton Bearer et faites votre premier appel à l'API publique Videas, GET /v1/assets.

L’API publique Videas permet à l’un de vos serveurs de travailler avec la bibliothèque de votre organisation et avec ses chaînes : lire ce que la bibliothèque contient — ses assets et les workspaces où ils sont rangés —, y ajouter des fichiers et des vidéos hébergées ailleurs, modifier ce qui s’y trouve, et le publier sur les chaînes de l’organisation. Elle répond sur https://api.videas.com/v1, parle JSON sur HTTPS, et se décrit dans un contrat OpenAPI 3.1, que la référence de l’API présente et permet de télécharger.

Trois choses à faire, dans cet ordre : créer une clé, la garder sur un serveur, et l’envoyer avec chaque requête.

Créer une clé

Ce sont les propriétaires et les administrateurs de l’organisation qui créent les clés, dans l’application Videas :

  1. Ouvrez Paramètres → Accès API, puis Créer une clé.
  2. Nom de la clé : ce à quoi elle sert — « Synchro CMS », « Import LMS » —, pour la reconnaître dans la liste, et dans l’historique des assets qu’elle modifie.
  3. Expiration : pas d’expiration, 30 jours, 60 jours, 90 jours ou un an. Une clé qui expire d’elle-même, c’est un secret oublié de moins.
  4. Ce que la clé peut faire : cochez les permissions dont l’intégration a besoin, et rien de plus. Celles qui lisent sont cochées par défaut ; celles qui écrivent sont décochées, pour qu’une clé qui écrit soit toujours créée délibérément.
  5. Créer la clé, puis Copier la clé. Sa valeur complète, ak_…, s’affiche cette seule fois et ne pourra plus être lue : rangez-la tout de suite. Une clé dont la valeur est perdue se révoque et se remplace.

Une clé appartient à l’organisation, pas à la personne qui l’a créée. Elle continue de fonctionner quand cette personne s’en va, et tout ce qu’elle atteint appartient à cette seule organisation.

Ses permissions

Une clé ouvre l’API avec les permissions qu’elle porte, et aucune autre. Elle peut en porter sept, et chacune ouvre ce qu’elle dit :

Dans l’écran des clés Permission Ce qu’elle ouvre Par défaut
Lire la bibliothèque par l’API assets.library.read Lister, compter et lire les assets, les collections, les workspaces et les champs personnalisés. cochée
Ajouter des fichiers à la bibliothèque par l’API assets.library.upload Ajouter un fichier avec POST /v1/uploads, puis suivre ou abandonner les uploads ouverts ainsi. décochée
Modifier les contenus de la bibliothèque par l’API assets.library.edit Changer un asset déjà là : ses textes, ses tags, ses champs personnalisés et sa vignette. décochée
Importer des vidéos d’autres plateformes assets.third_party_video.import Avec assets.library.upload à côté, ajouter une vidéo YouTube, Vimeo ou Dailymotion avec POST /v1/assets. décochée
Lire les chaînes par l’API websites.catalogue.read Lire les chaînes, leurs catégories et ce qu’elles publient. cochée
Publier sur les chaînes par l’API websites.catalogue.publish Publier des assets sur les chaînes, et changer ce qu’elles publient. décochée
Lire les sessions de lecture par l’API analytics.sessions.read Lire les sessions de lecture de l’organisation : qui a regardé quel asset, quand et combien. cochée
  • Aucune n’en implique une autre : une clé créée pour publier ne peut pas modifier un asset, et une clé créée pour modifier ne peut pas lire la bibliothèque. Une écriture répond ce qu’elle a écrit, que la clé puisse lire ou non.
  • Trois dépendent de ce qu’utilise l’organisation. Les deux permissions des chaînes n’ouvrent rien pour une organisation qui ne publie pas de chaînes : chaque endpoint des chaînes lui répond 403, comme à une clé qui ne les porte pas. Et assets.third_party_video.import n’ouvre rien tant que Videas n’a pas activé les vidéos hébergées ailleurs pour l’organisation : jusque-là, POST /v1/assets répond 404. Une clé peut les porter d’avance, et fonctionne sans rien changer le jour où l’organisation a la fonction.
  • Une clé sans permission n’ouvre rien.

La garder sur un serveur

La clé est un secret, comme un mot de passe :

  • rangez-la dans un gestionnaire de secrets ou dans une variable d’environnement que lit votre serveur — jamais dans un dépôt de code, une page web ou une application que vous distribuez à vos utilisateurs ;
  • donnez à chaque intégration sa propre clé, pour pouvoir en révoquer une sans toucher aux autres ;
  • pour en révoquer une, Révoquer dans le même écran : tout ce qui l’utilise encore cesse aussitôt de s’authentifier.

Une page web ne peut de toute façon pas appeler l’API : /v1 n’envoie aucun en-tête CORS, le navigateur refuse donc de transmettre ses réponses à la page. Pour que vos utilisateurs envoient des fichiers depuis leur navigateur, votre serveur ouvre l’upload et ne confie à la page que le jeton propre à cet upload, jamais la clé — voir Ajouter un fichier par l’API.

L’envoyer avec chaque requête

La clé part dans l’en-tête Authorization, en jeton Bearer :

Authorization: Bearer ak_…

Sans elle, ou avec une clé inconnue, expirée ou révoquée, la réponse est un 401 de code unauthorized. Une clé qui ne porte pas la permission que demande un endpoint reçoit un 403, forbidden.

Votre premier appel

Listez les assets de votre bibliothèque :

export VIDEAS_API_KEY="ak_…"   # mieux : depuis votre gestionnaire de secrets

curl https://api.videas.com/v1/assets \
  -H "Authorization: Bearer $VIDEAS_API_KEY"

La réponse est une page d’assets, du plus ancien au plus récent, avec le curseur de la page suivante :

{
  "data": [
    {
      "id": "0192a6b2-4f1a-7b90-8e0d-51c3a7f2b046",
      "name": "Cours d’ouverture",
      "type": "video",
      "status": "ready",
      "workspace_id": "0192a6b1-7c3e-7d40-9a51-3f0e2b6c8d10",
      "description": null,
      "external_ref": "cours-42/seance-1",
      "language": "fr",
      "duration_ms": 2712000,
      "created_at": "2026-09-26T09:12:44Z",
      "updated_at": "2026-09-26T09:31:02Z",
      "third_party": null,
      "thumbnail_url": "https://app.videas.com/images/assets/0192a6b2-4f1a-7b90-8e0d-51c3a7f2b046/thumbnail.jpg"
    }
  ],
  "next": "MDE5MmE2YjItNGYxYS03Yjkw…"
}

Le même appel en Node.js (18 ou plus) et en Python, sur votre serveur :

const response = await fetch('https://api.videas.com/v1/assets', {
  headers: { Authorization: `Bearer ${process.env.VIDEAS_API_KEY}` },
})
const page = await response.json()
if (!response.ok) throw new Error(`${page.code}: ${page.message}`)
console.log(page.data.length, 'assets sur cette page')
import os

import requests

response = requests.get(
    "https://api.videas.com/v1/assets",
    headers={"Authorization": f"Bearer {os.environ['VIDEAS_API_KEY']}"},
)
response.raise_for_status()
page = response.json()
print(len(page["data"]), "assets sur cette page")

Un 403 ici signifie que la clé ne peut pas lire la bibliothèque : créez-en une avec Lire la bibliothèque par l’API cochée.

Ce que fait l’API

La bibliothèque

Endpoint Ce qu’il fait Permission
GET /v1/assets Liste les assets, page par page, filtrés par type, par workspace ou par votre propre référence assets.library.read
GET /v1/assets/count Les compte, avec les mêmes filtres assets.library.read
GET /v1/assets/{asset_id} Lit un asset, avec ses tags et ses champs personnalisés assets.library.read
GET /v1/workspaces Liste les workspaces où un asset peut se trouver — et …/count les compte assets.library.read
GET /v1/custom-fields Liste les champs personnalisés de l’organisation, et …/{field_id}/choices les options d’un champ à choix — chacun avec son …/count assets.library.read
GET /v1/collections Liste les collections, ces listes d’assets lues l’une après l’autre — …/{collection_id} en lit une, …/count les compte assets.library.read
GET /v1/collections/{collection_id}/items Liste ce que joue une collection, avec la position de chaque asset assets.library.read

Y ajouter

Endpoint Ce qu’il fait Permission
POST /v1/uploads Ajoute un fichier : envoyé par vous, ou récupéré depuis un lien assets.library.upload
GET /v1/uploads/{upload_id} Dit où en est un upload assets.library.upload
DELETE /v1/uploads/{upload_id} Abandonne un upload assets.library.upload
POST /v1/assets Ajoute une vidéo hébergée sur YouTube, Vimeo ou Dailymotion assets.library.upload et assets.third_party_video.import

Modifier un asset

Endpoint Ce qu’il fait Permission
PATCH /v1/assets/{asset_id} Change ses textes : titre, description, résumé, mention de droits, langue, référence, textes SEO assets.library.edit
PUT /v1/assets/{asset_id}/tags Fixe ses tags, par leurs mots assets.library.edit
PATCH /v1/assets/{asset_id}/custom-fields Écrit ses valeurs des champs personnalisés assets.library.edit
PUT /v1/assets/{asset_id}/thumbnail Choisit sa vignette, en l’envoyant assets.library.edit

Les chaînes

Endpoint Ce qu’il fait Permission
GET /v1/channels Liste les chaînes de l’organisation — …/{channel_id} en lit une, …/count les compte websites.catalogue.read
GET /v1/categories Liste les catégories des chaînes, et …/count les compte websites.catalogue.read
GET /v1/publications Liste ce que publient les chaînes — …/{publication_id} en lit une, …/count les compte websites.catalogue.read
POST /v1/publications Publie un asset sur une chaîne websites.catalogue.publish
PATCH /v1/publications/{publication_id} Change une publication : statut, date, accès, adresse, classement websites.catalogue.publish

Ce qui a été regardé

Endpoint Ce qu’il fait Permission
GET /v1/analytics/sessions Liste les sessions de lecture — qui a regardé quel asset, quand, combien et quels passages —, filtrées par asset ou par spectateur, et …/count les compte analytics.sessions.read

De nouvelles ressources arrivent sous /v1 sans rien changer à ce qui y est déjà — Erreurs, limites et versions dit ce qui peut changer et ce qui ne le peut pas.

Pour aller plus loin