Génération de vidéos

Générez des vidéos à partir de texte ou d'images de manière asynchrone, avec audio, résolution et format d'image optionnels.

POST/v1/videos/generations

La génération de vidéos s'exécute de manière asynchrone : le point d'accès renvoie immédiatement un 202 avec un job.id, et la vidéo est rendue en arrière-plan. Interrogez GET /v1/jobs/:id (voir Tâches asynchrones) jusqu'à ce que status passe à completed ou failed. Le helper createAndWait(...) du SDK fait les deux en un seul appel.

La facturation se fait par seconde de sortie et dépend du modèle et de la résolution :

ModèleTarifs (crédits / seconde)
veo-3.1-lite720p = 72 (120 avec audio) · 1080p = 120 (192 avec audio)
hailuo-3-max480p = 106 · 768p = 170
hailuo-2.31080p = 173 — 6 s ou 10 s uniquement
seedance-2-fast480p = 180 · 720p = 383
veo-3.1-fast720p = 192 (240 avec audio) · 1080p = 240 (288 avec audio)
seedance-2480p = 226 · 720p = 510
wan-2.6720p = 240 · 1080p = 360
hailuo-32K = 276 — audio inclus au même tarif
kling-v3-motion-control720p = 303 · 1080p = 404 — facturé en réserve, voir ci-dessous
kling-v3720p = 378 (567 avec audio) · 1080p = 504 (756 avec audio) · 4K = 945
veo-3.1720p et 1080p = 480 (960 avec audio)

La page de chaque modèle affiche ses tarifs actuels — le tableau ci-dessus est un instantané. Si une tâche échoue après facturation (erreur en amont, dépassement de délai), les crédits débités sont automatiquement remboursés.

Limites par modèle

Chaque modèle accepte le tronc commun — prompt, duration, resolution, aspect_ratio, image_url — avec ses propres bornes. La résolution par défaut est celle facturée quand vous omettez le champ.

ModèleDurée (s)Résolutions (défaut en premier)Formats d'imageAudioExtras
seedance-21–15, ou -1 auto480p, 720p16:9, 9:16, 1:1, 4:3, 3:4, adaptivegenerate_audio, même tarifseed, last_frame_image_url, tableaux reference_*
seedance-2-fast1–15, ou -1 auto480p, 720p16:9, 9:16, 1:1, 4:3, 3:4, adaptivegenerate_audio, même tarifseed, last_frame_image_url, tableaux reference_*
wan-2.65–10720p, 1080p16:9, 9:16generate_audio, même tarifseed ; première image uniquement
hailuo-3-max5–15768p, 480p21:9, 16:9, 4:3, 1:1, 3:4, 9:16Pas d'audiolast_frame_image_url
hailuo-35–152K21:9, 16:9, 4:3, 1:1, 3:4, 9:16generate_audio, même tariflast_frame_image_url
hailuo-2.36 ou 10 uniquement1080p16:9Pas d'audioPremière image uniquement
kling-v33–15720p, 1080p, 4K16:9, 9:16, 1:1generate_audio, supplément sauf en 4Knegative_prompt, last_frame_image_url
kling-v3-motion-controlSuit la vidéo de référence1080p, 720pDérivés des entréeskeep_original_soundreference_video_url, character_orientation — voir ci-dessous
veo-3.14–8720p, 1080p16:9, 9:16generate_audio, supplémentnegative_prompt, last_frame_image_url
veo-3.1-fast4–8720p, 1080p16:9, 9:16generate_audio, supplémentnegative_prompt, last_frame_image_url
veo-3.1-lite4–8720p, 1080p16:9, 9:16generate_audio, supplémentnegative_prompt, last_frame_image_url

Un paramètre qu'un modèle n'accepte pas renvoie 400 bad_request en nommant le paramètre — rien n'est ignoré ni émulé en silence. hailuo-2.3 n'accepte que 6 ou 10 secondes en amont ; les autres valeurs de sa plage 6–10 sont rejetées par le fournisseur.

Paramètres

ParamètreTypeRequisDescription
modelstringOuiN'importe quel ID de modèle vidéo du tableau ci-dessus.
promptstringOuiDescription textuelle de la scène et du mouvement.
durationintegerNonSecondes, dans les bornes du modèle. Les modèles Seedance acceptent aussi -1 pour automatique (facturé à 10 s). Non accepté par kling-v3-motion-control (la durée de sortie suit la vidéo de référence). Par défaut 5.
resolutionstringNonL'une des résolutions du modèle. Omise, la résolution par défaut du modèle est utilisée et facturée.
aspect_ratiostringNonL'un des formats du modèle. Par défaut "16:9". Non accepté par kling-v3-motion-control (le cadrage dérive des entrées).
generate_audiobooleanNonSynthétise une bande-son (dialogues, effets sonores, musique). Par défaut true. Ignoré par les modèles sans audio ; non accepté par kling-v3-motion-control — utilisez keep_original_sound.
negative_promptstringNonCe qu'il faut éviter dans la sortie. kling-v3 et les modèles Veo 3.1 uniquement.
seedintegerNonFixe la sortie pour la reproductibilité. Modèles Seedance et wan-2.6 uniquement.
image_urlstringNon*Référence de première image (URL HTTP). Active l'image-vers-vidéo. *Requis pour kling-v3-motion-control (le personnage à animer).
last_frame_image_urlstringNonImage cible de fin. Requiert image_url. Non accepté par wan-2.6, hailuo-2.3 ni kling-v3-motion-control.
reference_imagesstring[]NonJusqu'à 9 URL. Mutuellement exclusif avec image_url. Référencées dans le prompt comme [Image1], [Image2], … Modèles Seedance uniquement.
reference_videosstring[]NonJusqu'à 3 URL (cumul ≤ 15 s). Référencées comme [Video1], … Modèles Seedance uniquement.
reference_audiosstring[]NonJusqu'à 3 URL. Requiert image_url ou reference_images. Référencées comme [Audio1], … Modèles Seedance uniquement.
reference_video_urlstringOui*kling-v3-motion-control uniquement : vidéo de référence du mouvement (3–30 s) transféré sur l'image du personnage.
character_orientationstringNonkling-v3-motion-control uniquement : le cadrage de sortie suit "image" (max 10 s) ou "video" (max 30 s). Par défaut "image".
keep_original_soundbooleanNonkling-v3-motion-control uniquement : conserve la piste audio de la vidéo de référence. Par défaut true.

Facturation motion control

kling-v3-motion-control n'a pas de paramètre duration — en envoyer un renvoie un 400. La durée de sortie est déterminée par la vidéo de référence (plafonnée à 10 s avec character_orientation: "image", 30 s avec "video"), donc les crédits sont facturés en réserve puis remboursement :

  1. À la soumission, la durée de la vidéo de référence est lue et ce nombre de secondes × le tarif par seconde est réservé (ex. une référence de 3 s en 1080p → 3 × 404 = 1 212 crédits). Si la durée est illisible, le plafond de l'orientation est réservé à la place (10 × 404 = 4 040 pour "image"). Votre solde doit couvrir la réserve.
  2. À la fin, la durée réelle de la sortie est mesurée et la réserve est ajustée dans les deux sens : la partie inutilisée est remboursée, et un dépassement est facturé avant la livraison de la vidéo. Si votre solde ne couvre pas le dépassement, la tâche échoue avec error.code: "reserve_exceeded", la réserve est conservée et aucune vidéo n'est livrée — cela n'arrive que si les métadonnées de la vidéo de référence sous-estiment sa durée réelle.
  3. La tâche terminée indique le débit net : tchavi.credits_used (net) et tchavi.credits_refunded, avec output.duration à la durée réelle. Si la tâche échoue, la réserve entière est remboursée.
@tchavi/sdk
const job = await client.videos.generations.createAndWait({
  model: 'kling-v3-motion-control',
  prompt: 'Le personnage exécute la danse en gardant exactement son apparence',
  resolution: '1080p',
  image_url: 'https://votre-hote.example.com/personnage.png',
  reference_video_url: 'https://votre-hote.example.com/reference-mouvement.mp4',
  character_orientation: 'image', // sortie max 10 s
  keep_original_sound: true,
  // pas de `duration` — la durée de sortie suit la vidéo de référence
});

console.log(job.output?.duration); // secondes réellement rendues
console.log(job.tchavi?.credits_used); // débit net après remboursement
console.log(job.tchavi?.credits_refunded); // partie inutilisée de la réserve

Exemple

import Tchavi from '@tchavi/sdk';

const client = new Tchavi({ apiKey: 'YOUR_API_KEY' });

// En une ligne : soumettre + interroger jusqu'à completed/failed
const job = await client.videos.generations.createAndWait({
  model: 'seedance-2',
  prompt: 'Un plan cinématographique de la statue de l\'Amazone de Cotonou à l\'heure dorée',
  duration: 5,
  resolution: '480p',
  aspect_ratio: '9:16',
  generate_audio: true,
});

if (job.status === 'completed') {
  console.log('URL de la vidéo :', job.output?.video_url);
  console.log('Crédits utilisés :', job.tchavi?.credits_used);
} else {
  console.error('Échec :', job.error?.message);
}

Sur cette page