Aller au contenu
Centre d'aide Clevera

Utiliser l'API REST de Clevera

Appelez Clevera depuis vos propres scripts : URL de base, authentification par jeton bearer, points de terminaison et les autorisations nécessaires pour chacun, le flux « devis puis démarrage » pour le travail payant, idempotence, format d'erreur et limites de débit.

Mis à jour 9 min de lecture

L'API REST de Clevera permet à vos propres scripts et services d'effectuer les actions qu'un agent peut réaliser via MCP : lire votre bibliothèque, demander des vidéos et des articles, exporter des vidéos, travailler sur des sites de documentation et suivre les tâches. Cet article couvre l'URL de base, l'authentification, le flux de requête pour le travail payant, les erreurs et les limites de débit.

Bases

URL de base https://app.clevera.ai/api/v1
Authentification Authorization: Bearer <token> avec un jeton API (il commence par clv_agent_)
Format JSON en entrée et en sortie. Envoyez Accept: application/json et, avec un corps de requête, Content-Type: application/json.
Identifiants Identifiants publics, tels que job_… pour les tâches. Utilisez les identifiants renvoyés par l'API.

Vérifiez un jeton avec GET /docs/me :

Terminal
curl -H "Authorization: Bearer $CLEVERA_TOKEN" \
     -H "Accept: application/json" \
     https://app.clevera.ai/api/v1/docs/me

La réponse indique qui utilise le jeton : le nom et l'expiration du jeton, la personne et son rôle actuel, l'espace de travail, les sites concernés et les autorisations actives (les autorisations du jeton réduites au rôle actuel de la personne). Appelez-le en premier lorsqu'un appel est refusé.

Points de terminaison

Chaque point de terminaison nécessite l'autorisation indiquée. Appeler l'un d'eux sans autorisation renvoie 403 forbidden_ability. Voir Autorisations de l'agent.

Bibliothèque et matériaux

Méthode et chemin Autorisation Action
GET /create/types any Les types de vidéo et de clip social que vous pouvez demander.
GET /library library:read Vidéos, enregistrements et articles que le propriétaire du jeton peut voir.
GET /recordings library:read Enregistrements uniquement.
GET /library/{item} library:read Un élément.
GET /library/{item}/transcript library:read Sa transcription.
GET /library/{item}/article library:read Son article.
GET /library/{item}/embed library:read Son code d'intégration.
GET /materials library:read Images, vidéos et PDF téléchargés.
POST /materials, POST /materials/import, POST /materials/uploads, POST /materials/uploads/{upload_id}/complete materials:write Ajouter une image, une vidéo ou un PDF (directement, depuis une URL ou en tant que téléchargement volumineux).

Vidéos et articles

Méthode et chemin Autorisation Action
POST /videos/quotes videos:create Créer un devis pour une vidéo à partir d'un enregistrement (type : how_to, product_demo, cleanup, styled_video), un article à partir d'un enregistrement (article) ou une traduction (translation).
POST /videos videos:create + credits:spend Créer la vidéo citée (quote_id).
POST /articles/from-recording videos:create + credits:spend Créer l'article cité.
POST /videos/translations videos:create + credits:spend Créer la traduction citée.
POST /clips/quotes videos:create Créer un devis pour un clip social (types de GET /create/types).
POST /clips videos:create + credits:spend Créer le clip social cité.
POST /videos/{video_id}/exports videos:export Rendre un MP4 : resolution 1080p (par défaut), 2k ou 4k ; toujours 60 fps. Gratuit.

Tâches et crédits

Méthode et chemin Autorisation Action
POST /quotes autorisation du travail Un devis pour tout type de tâche.
POST /jobs autorisation du travail (+ credits:spend si payant) Démarrer une tâche citée.
GET /jobs jobs:read Lister les tâches.
GET /jobs/{job} jobs:read Statut et résultat d'une tâche.
GET /jobs/{job}/wait jobs:read Attendre un changement au lieu d'interroger.
GET /jobs/{job}/events jobs:read Événements de progression de la tâche.
POST /jobs/{job}/cancel jobs:read Annuler une tâche. Trop tard : « Cette tâche ne peut plus être annulée. »
GET /credits credits:spend ou jobs:read Solde de crédits de l'espace de travail.

Sites de documentation

Méthode et chemin Autorisation Action
GET /docs/sites, GET /docs/sites/{site}, GET /docs/sites/{site}/tree, GET /docs/sites/{site}/pages content:read Sites dans le périmètre du jeton et leurs pages.
GET /docs/sites/{site}/search, GET /docs/pages/{page}, GET /docs/pages/{page}/revisions content:read Rechercher et lire des pages, brouillons inclus.
POST /docs/sites/{site}/articles, PATCH /docs/pages/{page}/article, POST /docs/pages/{page}/review articles:write Créer et modifier des articles brouillons, soumettre pour révision. Les articles en ligne nécessitent aussi site:publish.
PATCH /docs/pages/{page}, DELETE /docs/pages/{page}, POST /docs/sites/{site}/sections, PATCH /docs/sections/{section} structure:write Déplacer, renommer, masquer et supprimer des pages ; sections.
GET/POST /docs/sites/{site}/site-pages, PUT /docs/site-pages/{page}/body content:read / site-pages:write Pages d'accueil, de contact et légales.
GET/POST /docs/sites/{site}/changelog, PATCH /docs/changelog/{entry} content:read / changelog:write Entrées de journal des modifications en tant que brouillons.
POST /docs/media, POST /docs/media/uploads media:write Télécharger des images.
POST /docs/sites/{site}/publish, POST /docs/pages/{page}/ready, POST /docs/changelog/{entry}/publish site:publish Publier ce que les lecteurs voient.
GET /insights/sites/{site}, …/gaps, …/feedback insights:read Rechercher les lacunes, questions sans réponse, retours sur les pages.
PATCH /docs/sites/{site}/settings, …/appearance, PUT …/navigation, POST …/redirects site:configure Paramètres du site.
POST /docs/sites sites:create Créer un site de documentation.

Plus d'informations sur les agents et les sites de documentation : Connecter des agents IA à vos sites de documentation.

Le travail qui coûte des crédits nécessite toujours un devis d'abord, puis un démarrage :

  1. Faire un devis. POST /videos/quotes (ou /clips/quotes) avec ce que vous voulez. La réponse contient un quote_id et la fourchette de crédits. Un devis est valide pendant 15 minutes et peut être utilisé une fois.
  2. Optionnellement, faire un test (dry-run). Envoyez le démarrage avec "dry_run": true pour savoir s'il démarrerait, nécessiterait une approbation ou serait bloqué. Rien n'est écrit.
  3. Démarrer. POST /videos avec quote_id et un en-tête Idempotency-Key. La réponse est 202 avec une tâche.
  4. Suivre. GET /jobs/{job}/wait jusqu'à ce que le status de la tâche change, ou écoutez les webhooks.
Quote, then start a how-to video
curl -X POST https://app.clevera.ai/api/v1/videos/quotes \
  -H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
  -d '{"type": "how_to", "recording_id": "<recording id>", "language": "en-US"}'

curl -X POST https://app.clevera.ai/api/v1/videos \
  -H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f6c1a2e-8d4b-4f7a-9c1e-2b5d7e9f0a13" \
  -d '{"quote_id": "<quote id>"}'

Statuts des tâches :

Statut Signification
queued Accepté, sur le point de s'exécuter.
running En cours.
needs_input En attente d'une personne, généralement une approbation sur Requêtes de l'agent. La tâche contient un lien et une date d'expiration.
succeeded Terminé. La tâche renvoie vers la nouvelle vidéo ou le nouvel article.
failed Échec ; la tâche contient une error_code.
canceled Annulé, ou son approbation a été refusée.
expired Personne ne l'a approuvé dans les 24 heures.

Le fait qu'un démarrage s'exécute immédiatement ou attende une personne dépend des plafonds de dépenses du jeton et de son paramètre Approuver automatiquement ci-dessous. Voir Contrôler les dépenses et les approbations des agents.

Tentatives et idempotence

Envoyez un en-tête Idempotency-Key (un UUID unique par action) à chaque création et démarrage. Si le réseau tombe et que vous réessayez avec la même clé et le même corps, vous recevrez la première réponse au lieu d'une deuxième vidéo. Les clés sont conservées pendant 24 heures.

Code Signification
idempotency_key_reused La même clé avec un corps différent. Utilisez une nouvelle clé pour une nouvelle requête.
idempotency_in_progress La première requête avec cette clé est toujours en cours. Attendez et réessayez.
idempotency_conflict « Cette clé d'idempotence a été utilisée pour une requête différente. »

Erreurs

Chaque erreur a la même forme, avec un message indiquant quoi faire ensuite :

{
  "error": {
    "code": "forbidden_ability",
    "message": "This token lacks the videos:create ability. Ask the workspace member who owns it for a token that has it.",
    "details": { "ability": "videos:create" }
  },
  "request_id": "req_example"
}

Incluez le request_id lorsque vous contactez le support.

HTTP Codes Cause typique
401 unauthenticated, token_expired, token_revoked Pas de jeton, un jeton erroné, expiré ou révoqué.
402 insufficient_credits L'espace de travail n'a pas assez de crédits pour le devis.
403 forbidden_ability, forbidden_role, forbidden_item, ip_not_allowed, live_content_needs_publish, site_paused, forbidden Une autorisation manquante, le rôle du propriétaire, l'accès à la collection ou la liste blanche IP.
403 plan_locked « L'API agent n'est pas incluse dans le plan de cet espace de travail. Elle est disponible à partir du plan Pro. »
404 not_found, unknown_kind « Aucun … avec cet identifiant dans le périmètre de ce jeton. Listez ou recherchez d'abord et utilisez un identifiant renvoyé. »
409 revision_conflict, quote_used, not_cancelable, idempotency_* Le contenu a changé, le devis a été utilisé ou conflit de tentative.
410 quote_expired « Ce devis a expiré. Demandez un nouveau devis. »
413 unsupported_media Le fichier est trop volumineux ou n'est pas d'un type pris en charge.
422 validation_failed, invalid_input, quote_mismatch, limit_reached Un champ est erroné ; details le nomme.
429 rate_limited, cap_exceeded, busy Trop de requêtes, plafond de dépenses atteint ou deux démarrages simultanés.

Chaque message, avec sa solution : Corriger les erreurs d'agent et d'API.

Limites de débit

Limite Valeur Message
Requêtes par jeton 300 par minute « Ce jeton dépasse son taux de requête. Attendez et réessayez. »
Requêtes par espace de travail 1 200 par minute, tous jetons confondus « Cet espace de travail dépasse son taux de requête d'agent. Attendez et réessayez. »
Écritures par jeton 60 par minute « Trop d'écritures depuis ce jeton. Attendez et réessayez. »
Écritures par jeton par jour 2 000 « Ce jeton a atteint sa limite d'écriture quotidienne. Réessayez demain. »
Publications par jeton 10 par heure « Ce jeton a atteint sa limite de publication horaire. Réessayez plus tard. »
Démarrages payants 20 par heure par jeton, 100 par jour par espace de travail rate_limited avec retry_after
Téléchargements 30 par minute ; 500 Mo par jour par jeton ; 25 Mo par fichier « Trop de téléchargements depuis ce jeton. Attendez et réessayez. » / « Ce jeton a atteint son volume de téléchargement quotidien. Réessayez demain. »
Appels sans jeton valide 60 par minute par adresse IP « Trop de requêtes. Attendez et réessayez. »

Une réponse 429 contient un en-tête Retry-After et retry_after (secondes) dans le corps. Attendez ce délai avant de réessayer. Les lectures, devis et vérifications de statut ne coûtent aucun crédit.