Quatre requêtes modifient un asset déjà dans la bibliothèque, toutes avec une clé
qui porte Modifier les contenus de la bibliothèque par l’API
(assets.library.edit) :
| Requête | Ce qu’elle change |
|---|---|
PATCH /v1/assets/{asset_id} |
ses textes — cette page |
PUT /v1/assets/{asset_id}/tags |
ses tags — cette page |
PATCH /v1/assets/{asset_id}/custom-fields |
ses champs personnalisés |
PUT /v1/assets/{asset_id}/thumbnail |
sa vignette |
Chacune répond l’asset entier, tel que le lit GET /v1/assets/{asset_id} :
une seule forme à lire, quoi que vous ayez écrit.
Aucune permission n’en implique une autre : une clé qui modifie ne lit pas
pour autant la bibliothèque. Une écriture répond ce qu’elle a écrit dans tous les
cas, mais pour retrouver un asset avant de le modifier — par votre external_ref,
par exemple —, la clé doit aussi porter Lire la bibliothèque par l’API
(assets.library.read).
Changer ses textes
PATCH /v1/assets/{asset_id} écrit les champs que vous envoyez, et ceux-là
seulement :
curl -X PATCH https://api.videas.com/v1/assets/0192a6e4-3b5c-7d6e-8f90-a1b2c3d4e5f6 \
-H "Authorization: Bearer $VIDEAS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"excerpt": "Trois procédés de recyclage, essayés sur les mêmes chutes.",
"seo_title": "Recycler la fibre de carbone : pyrolyse, solvolyse ou broyage ?",
"copyright": null
}'
| Champ | Ce qu’il contient | Bornes |
|---|---|---|
name |
Son titre. | Jamais vide, jamais null : un asset a toujours un titre. 500 caractères. |
description |
Sa description. | 50 000 caractères. |
excerpt |
Un court résumé, affiché sous le titre là où la description ne tient pas. | 1 000 caractères. |
copyright |
La mention qu’un réutilisateur doit reprendre : qui détient les droits, à quelles conditions. | 1 000 caractères. |
language |
La langue de son contenu, en balise BCP 47 (fr, en-GB, zh-Hans-CN). |
Une balise bien formée. |
external_ref |
Votre identifiant de l’asset. Pas unique. | Jamais vide, 500 caractères. |
seo_title |
Le titre que se donne une page web qui le publie — dans l’onglet du navigateur et les résultats d’un moteur de recherche. À défaut, la page prend son name. |
Jamais vide, 255 caractères. |
seo_description |
La description qu’une page qui le publie donne aux moteurs de recherche et aux aperçus de lien. À défaut, la page prend son excerpt, sinon sa description. |
Jamais vide, 1 000 caractères. |
Absent, null ou une valeur
- Un champ absent reste tel quel.
- Une valeur le remplace.
nullle vide — saufname, refusé par un400. Unelanguagevidée devient inconnue.- Une chaîne vide vide aussi
description,excerptetcopyright; surname,external_ref,seo_titleetseo_description, elle est refusée par un400— envoyeznullpour les vider.
La réponse est un 200 portant l’asset tel qu’il est désormais :
{
"id": "0192a6e4-3b5c-7d6e-8f90-a1b2c3d4e5f6",
"name": "Recycler la fibre de carbone : trois procédés comparés",
"type": "third_party",
"status": "ready",
"workspace_id": "0192a6b1-7c3e-7d40-9a51-3f0e2b6c8d10",
"description": "Pyrolyse, solvolyse et broyage mécanique, comparés sur les mêmes chutes de production.",
"external_ref": "webtv/2026/recyclage-fibre-carbone",
"language": "fr",
"duration_ms": null,
"created_at": "2026-10-15T08:30:12Z",
"updated_at": "2026-10-15T08:30:14Z",
"third_party": {
"provider": "youtube",
"video_id": "Xk3Ua9yQe7M",
"player_url": "https://www.youtube.com/embed/Xk3Ua9yQe7M"
},
"thumbnail_url": "https://app.videas.com/images/assets/0192a6e4-3b5c-7d6e-8f90-a1b2c3d4e5f6/thumbnail.jpg",
"excerpt": "Trois procédés de recyclage, essayés sur les mêmes chutes.",
"copyright": null,
"seo_title": "Recycler la fibre de carbone : pyrolyse, solvolyse ou broyage ?",
"seo_description": null,
"tags": [],
"custom_fields": []
}
Ce qui ne se change pas ici : le type de l’asset, son adresse, sa visibilité,
son expiration, sa licence et sa vignette. Un corps qui nomme l’un de ces champs —
ou n’importe quel champ que la requête ne liste pas — est refusé par un 422. La
vignette se change par PUT …/thumbnail.
Ses tags
PUT /v1/assets/{asset_id}/tags range l’asset sous les tags que vous nommez,
par leurs mots — pas par leurs identifiants :
curl -X PUT https://api.videas.com/v1/assets/0192a6e4-3b5c-7d6e-8f90-a1b2c3d4e5f6/tags \
-H "Authorization: Bearer $VIDEAS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tags": ["Fibre de carbone", "Recyclage"]}'
La réponse est l’asset entier, ses tags par ordre alphabétique :
{
"id": "0192a6e4-3b5c-7d6e-8f90-a1b2c3d4e5f6",
"updated_at": "2026-10-15T08:30:14Z",
"tags": [
{ "id": "0192a690-3d4e-7f5a-8b6c-7d8e9f0a1b2c", "name": "Fibre de carbone" },
{ "id": "0192a690-4e5f-7a6b-9c7d-8e9f0a1b2c3d", "name": "Recyclage" }
]
}
(extrait : la réponse porte tous les champs de l’asset.)
La liste remplace les tags de l’asset — sauf ceux que Videas pose lui-même
Les tags que vous envoyez remplacent ceux de l’asset. Un tag absent de la
liste lui est retiré, et une liste vide, {"tags": []}, lui retire tous les vôtres.
Les tags que Videas pose lui-même restent, quoi que vous envoyiez : la réponse
les porte à côté des vôtres. Envoyez donc la liste complète de ce que l’asset doit
porter, jamais un ajout.
Seul Videas pose ses propres tags. Un mot qui en nomme un ne change rien là où
l’asset le porte déjà, et il est refusé par un 400 là où il ne le porte pas.
Un mot, un tag
Un mot est rapproché d’un tag par ses lettres et ses chiffres : la casse et les
accents ne comptent pas, et toute suite d’espaces ou de ponctuation compte pour un
seul séparateur. Fibre de carbone, fibre-de-carbone et FIBRE DE CARBONE
sont un seul tag ; fibredecarbone en est un autre. Deux mots de votre liste qui
désignent le même tag n’en posent qu’un.
Chaque mot est cherché d’abord parmi les tags du workspace de l’asset, puis parmi ceux de l’organisation. Un mot qui ne correspond à aucun devient un nouveau tag de l’organisation, écrit comme vous l’avez écrit ; un tag qui existe déjà garde sa propre graphie.
Un workspace peut n’accepter que les tags qu’il a déjà. Là, un mot qui ne
correspond à aucun tag est refusé par un 400 — dont le message cite les dix
premiers mots en cause et compte les autres — et rien ne change.
Les bornes : 100 mots au plus, chacun de 100 caractères au plus une fois ses espaces de bord retirés, jamais vide, et portant au moins une lettre latine ou un chiffre. Un mot refusé est désigné par sa position dans la liste, à partir de 0.
Un tag qu’une machine a suggéré et que personne n’a confirmé ne figure pas dans
tags.
updated_at, et ce qui ne change rien
updated_atbouge avec les textes de l’asset et avec sa vignette, jamais avec ses tags ni ses champs personnalisés. Pour savoir si un asset a changé depuis votre dernière synchronisation, comparez donc aussi sestagset sescustom_fields.- Une requête qui ne change rien n’écrit rien : renvoyer ce que l’asset porte
déjà — ses textes, ses tags — le laisse tel quel,
updated_atcompris. - La dernière requête arrivée l’emporte : rien ne vérifie ce que l’asset portait quand vous l’avez lu.
Ce que voit l’équipe
Une modification qu’une clé apporte au titre, à la description, au résumé, à la mention de droits ou à la langue d’un asset, à ses tags ou à ses champs personnalisés est inscrite dans l’historique de l’asset, dans Videas, sous le nom de la clé. Les personnes qui s’occupent de la bibliothèque voient ainsi quelle intégration a fait quoi : donnez à chaque clé un nom qui le dise — « Synchro CMS », « Import catalogue ».
Un asset validé dans le fonds commun est en lecture seule
Un asset que l’organisation a validé dans son fonds commun ne se modifie pas par
l’API : chacune des quatre requêtes est refusée par un 403, quelles que soient
les permissions de la clé. Seuls les modérateurs de ce fonds commun peuvent le
modifier, depuis Videas.
Ce 403 porte le même code, forbidden, que celui d’une clé sans
assets.library.edit. Si votre clé modifie d’autres assets sans encombre et qu’un
seul la refuse, c’est ce verrou : ne relancez pas, signalez-le à l’équipe qui
modère le fonds commun.
Relancer
PATCH et PUT disent ce que l’asset doit porter : renvoyés tels quels après
une expiration ou une 5xx, ils ne font rien de plus, la seconde trouvant
l’asset déjà dans cet état.
Erreurs
Toutes les erreurs ont le même corps — {"code": "…", "message": "…", "request_id": "…"}.
Testez code ; message s’adresse à un humain et peut changer.
| Statut | code |
Pour PATCH /v1/assets/{asset_id} et PUT …/tags |
|---|---|---|
400 |
validation |
Textes : un name vide ou null ; une external_ref, un seo_title ou une seo_description vides ; un champ au-delà de sa borne ; une language mal formée. Tags : plus de 100 mots ; un mot vide, trop long ou sans lettre ni chiffre ; un mot qui nomme un tag que Videas pose lui-même, et que l’asset ne porte pas ; un mot qu’aucun tag ne reconnaît dans un workspace qui n’accepte que ses tags. Et pour les deux : un asset_id qui n’est pas un uuid, ou un paramètre de requête. Le message nomme le champ. |
401 |
unauthorized |
Pas de clé, ou une clé inconnue, expirée ou révoquée. |
403 |
forbidden |
La clé ne porte pas assets.library.edit ; ou l’asset est validé dans le fonds commun de l’organisation. |
404 |
not_found |
Aucun asset que liste GET /v1/assets n’a cet identifiant. |
409 |
conflict |
Tags seulement : un tag en cours de création pour l’un de vos mots a été supprimé au même instant. Renvoyez la requête. |
415 |
unsupported_media_type |
Le corps n’est pas envoyé en application/json. |
422 |
validation |
Un champ mal typé, ou que le corps ne connaît pas ; pour les tags, tags manquant ou qui n’est pas une liste de chaînes. |
429 |
rate_limited |
Trop de requêtes : attendez le nombre de secondes indiqué par Retry-After. |
Pour aller plus loin
- Les champs personnalisés — les champs propres à votre organisation, et leurs valeurs.
- La vignette d’un asset — l’envoyer, et l’afficher.
- Lire la bibliothèque — chaque champ d’un asset.
- La référence de l’API, générée depuis son contrat.