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 :
- Ouvrez Paramètres → Accès API, puis Créer une clé.
- 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.
- 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.
- 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.
- 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. Etassets.third_party_video.importn’ouvre rien tant que Videas n’a pas activé les vidéos hébergées ailleurs pour l’organisation : jusque-là,POST /v1/assetsrépond404. 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
- Lire la bibliothèque — filtres, pages, comptages, un asset, les workspaces.
- Ajouter un fichier par l’API, depuis un lien, ou une vidéo hébergée ailleurs.
- Modifier un asset, ses champs personnalisés et sa vignette.
- Publier sur une chaîne.
- Erreurs, limites et versions — que faire de chaque refus.
- La référence de l’API : chaque endpoint, chaque champ et chaque erreur, générés depuis le contrat.