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)
seedance-2480p = 226 · 720p = 510
seedance-2-fast480p = 226 · 720p = 480
kling-v3720p = 440 (660 avec audio) · 1080p = 590 (880 avec audio) · 4K = 1 100
kling-v3-motion-control720p = 185 · 1080p = 320 — facturé en réserve, voir ci-dessous

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.

Paramètres

ParamètreTypeRequisDescription
modelstringOuiseedance-2 (ByteDance Seedance 2.0), seedance-2-fast (ByteDance Seedance 2.0 Fast), kling-v3 (Kuaishou Kling V3) ou kling-v3-motion-control (Kuaishou Kling V3 Motion Control).
promptstringOuiDescription textuelle de la scène et du mouvement.
durationintegerNonSecondes — bornes selon le modèle : modèles Seedance 1–15 ou -1 pour automatique (facturé à 10 s), kling-v3 3–15. Non accepté par kling-v3-motion-control (la durée de sortie suit la vidéo de référence). Par défaut 5.
resolutionstringNonSelon le modèle : modèles Seedance "480p"/"720p" · kling-v3 "720p"/"1080p"/"4K" · kling-v3-motion-control "720p"/"1080p".
aspect_ratiostringNon16:9, 9:16, 1:1, 4:3, 3:4, ou adaptive. 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. Non accepté par kling-v3-motion-control — utilisez keep_original_sound.
negative_promptstringNonCe qu'il faut éviter dans la sortie. kling-v3 uniquement.
seedintegerNonFixe la sortie pour la reproductibilité. Modèles Seedance 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 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, le plafond de l'orientation × le tarif par seconde est débité de votre solde (ex. 1080p + "image" → 10 × 320 = 3 200 crédits réservés). Votre solde doit couvrir le plafond.
  2. À la fin, la durée réelle de la sortie est mesurée et la partie inutilisée de la réserve est remboursée automatiquement. Un clip d'environ 6 secondes en 1080p facture 7 × 320 = 2 240 crédits et rembourse 960.
  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