Référence API
Authentification
Toutes les requêtes API nécessitent une clé API. Vous pouvez en obtenir une depuis Settings > API Keys.
Formats pris en charge :
| Méthode | Format |
|---|---|
| Bearer Token | Authorization: Bearer sk-xxx |
| Token Header | Authorization: Token sk-xxx |
| X-API-Key | X-API-Key: sk-xxx |
| Paramètre de requête | ?api_key=sk-xxx |
Rappel sécurité :
- n'exposez jamais votre clé API côté client
- effectuez toujours les appels API depuis votre serveur
Vue d'ensemble des endpoints
| Méthode | Endpoint | Usage |
|---|---|---|
| POST | /api/v1/video | Créer une tâche vidéo permanente |
| GET | /api/v1/video | Lister les tâches vidéo |
| GET | /api/v1/video/:taskId | Lire les détails d'une tâche |
| DELETE | /api/v1/video/:taskId | Supprimer une tâche vidéo |
| POST | /api/v1/video/:taskId/render | Déclencher un rendu |
| POST | /api/v1/upload | Uploader des assets |
| GET | /api/v1/files | Lister les fichiers |
| DELETE | /api/v1/files/:fileId | Supprimer un fichier |
| GET | /api/v1/credits | Lire le solde de crédits |
| POST | /api/v1/preview | Créer une preview temporaire |
| GET | /api/v1/preview/:tempId | Lire la configuration de preview |
| DELETE | /api/v1/preview/:tempId | Supprimer une preview |
| POST | /api/v1/preview/:tempId/convert | Convertir une preview en tâche permanente |
| POST | /api/v1/preview/:tempId/render | Convertir une preview et lancer le rendu |
POST /api/v1/video
Crée une tâche vidéo permanente à partir de votre configuration. Cette opération ne démarre pas encore le rendu.
Champs importants :
| Champ | Type | Requis | Description |
|---|---|---|---|
config | object | Oui | Schéma vidéo conforme au JSON Schema |
metadata | object | Non | Métadonnées personnalisées attachées à la tâche |
Champs de réponse les plus utiles :
taskIdvideoTaskIdpreviewUrlviewerUrlconfigUrlstatusqualitywidthheightduration
GET /api/v1/video
Liste toutes les tâches vidéo du compte courant.
Paramètres de requête :
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
page | integer | 1 | Numéro de page |
limit | integer | 20 | Éléments par page, maximum 100 |
status | string | - | Filtre sur le dernier statut |
La réponse contient une liste tasks et un objet pagination.
GET /api/v1/video/:taskId
Récupère les détails complets d'une tâche vidéo donnée.
Champs de retour utiles :
taskIdvideoTaskIdstatusvideoUrlpreviewUrlviewerUrlconfigUrlcostCreditscreatedAtcompletedAtmetadata
Valeurs de statut :
| Statut | Signification |
|---|---|
created | Tâche créée, rendu non démarré |
rendering | Rendu en cours |
completed | Rendu terminé avec succès |
failed | Échec du rendu |
DELETE /api/v1/video/:taskId
Supprime définitivement une tâche et les enregistrements de rendu locaux associés. L'API tente aussi de supprimer la tâche distante upstream.
Champs de réponse importants :
deletedremoteDeletedmessage
Si la suppression upstream échoue, la suppression locale peut malgré tout réussir.
POST /api/v1/video/:taskId/render
Déclenche ou redéclenche le rendu d'une tâche existante.
Corps de requête :
| Champ | Type | Requis | Défaut | Description |
|---|---|---|---|---|
webhook_url | string | Non | - | URL de notification de fin |
num_workers | integer | Non | 5 | Nombre de workers de rendu |
Résultats possibles :
- un nouveau rendu avec
status: rendering - une réponse réutilisant un rendu déjà terminé avec
alreadyRendered: true
Erreurs fréquentes :
NOT_FOUNDALREADY_RENDERINGINSUFFICIENT_CREDITSRENDER_TRIGGER_FAILED
Webhooks
webhook_url est pris en charge sur :
POST /api/v1/video/:taskId/renderPOST /api/v1/preview/:tempId/render
Cycle de fonctionnement :
- votre
webhook_urlest enregistrée avec la tâche de rendu - le renderer upstream renvoie
completedoufailed - le projet met d'abord à jour sa base locale
- un
POSTest ensuite envoyé à votrewebhook_url
Le payload transmis contient généralement :
taskIdrenderTaskIdstatusvideoUrlerrortimestamp
Limites actuelles :
- seuls les événements
completedetfailedsont transmis webhook_urldoit être une URL absolue valide- il n'existe pas encore de signature webhook
- il n'existe pas encore de file de retry ni de journal de livraison
POST /api/v1/upload
Permet d'uploader des images, vidéos et audios utilisables ensuite dans les configurations vidéo.
Champs de formulaire :
| Champ | Type | Requis | Description |
|---|---|---|---|
file | File | Non* | Fichier unique |
files | File[] | Non* | Plusieurs fichiers |
*Au moins l'un de file ou files est requis.
Familles MIME prises en charge :
image/*video/*audio/*
Limites de stockage par plan :
| Plan | Limite |
|---|---|
| Free | 512 MB |
| Starter | 10 GB |
| Standard | 20 GB |
| Pro | 50 GB |
La réponse de succès contient count et une liste assets.
GET /api/v1/files
Liste les fichiers uploadés pour le propriétaire courant de la clé API.
Paramètres de requête :
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
page | integer | 1 | Numéro de page |
limit | integer | 20 | Éléments par page |
type | string | - | image, video ou audio |
La réponse contient files et pagination.
DELETE /api/v1/files/:fileId
Supprime définitivement un fichier de la bibliothèque. L'objet stocké et l'enregistrement du fichier sont supprimés ensemble.
Champs de réponse utiles :
fileIddeletedmessage
GET /api/v1/credits
Récupère le solde de crédits actuel du compte.
Réponse type :
{
"success": true,
"credits": 985,
"currency": "credits"
}POST /api/v1/preview
Crée une preview temporaire sans consommer de crédits.
Règles importantes :
- le schéma vidéo complet est envoyé directement dans le corps de la requête
- les liens de preview sont valables 7 jours
- la preview ne consomme pas de crédits
- la preview ne génère pas de fichier vidéo téléchargeable
Champs de réponse :
tempIdpreviewUrlviewerUrlexpiresIn
GET /api/v1/preview/:tempId
Lit la configuration derrière un lien de preview temporaire.
Champs de retour :
tempIdconfig
DELETE /api/v1/preview/:tempId
Supprime un lien de preview temporaire.
Champs de retour :
tempIddeletedmessage
POST /api/v1/preview/:tempId/convert
Clone une preview temporaire en tâche vidéo permanente. La preview temporaire reste utilisable.
Corps de requête optionnel :
| Champ | Type | Requis | Description |
|---|---|---|---|
category | string | Non | Catégorie à associer à la nouvelle tâche |
Champs de retour les plus utiles :
convertedtaskIdvideoTaskIdpreviewUrlviewerUrlconfigUrl
POST /api/v1/preview/:tempId/render
Clone une preview temporaire en tâche permanente puis lance immédiatement le rendu.
Corps de requête :
| Champ | Type | Requis | Défaut | Description |
|---|---|---|---|---|
category | string | Non | api | Catégorie de la nouvelle tâche |
webhook_url | string | Non | - | Webhook pour le résultat de rendu |
num_workers | integer | Non | 5 | Nombre de workers de rendu |
Réponse de succès typique :
converted: truetaskIdrenderTaskIdstatus: renderingcostremainingCreditspreviewUrlviewerUrl
Calcul des crédits
La règle de coût est la suivante :
- coût = durée de la vidéo en secondes × multiplicateur de qualité
| Qualité | Côté court | Multiplicateur |
|---|---|---|
| 720p | <= 720px | 1.0 |
| 1080p | <= 1080px | 1.5 |
| 2K | <= 1440px | 2.0 |
La qualité est déterminée automatiquement à partir de la plus petite dimension de la vidéo.
Format des erreurs
Toutes les réponses d'erreur suivent ce format :
{
"success": false,
"error": "Human-readable error message",
"code": "ERROR_CODE",
"details": {
"field": "additional context"
}
}Codes d'erreur fréquents :
MISSING_API_KEYINVALID_API_KEYINVALID_API_KEY_FORMATAPI_KEY_INACTIVEUSER_NOT_FOUNDINVALID_REQUESTINVALID_CONFIGINSUFFICIENT_CREDITSNOT_FOUNDALREADY_RENDERINGREMOTE_ERRORRENDER_TRIGGER_FAILEDINTERNAL_ERROR