Guide d'utilisation
Guide de création de vidéos courtes avec seedance-2-0 : recettes pratiques pour l'API hiapi
Créez des vidéos verticales TikTok/Reels/Shorts avec l'API de tâches seedance-2-0 sur hiapi — texte vers vidéo et image vers vidéo, tarifs vérifiés, et scripts de soumission/polling/téléchargement prêts à copier-coller.
Aperçu rapide
- De quoi s'agit-il : une recette exécutable et reproductible pour créer des vidéos courtes verticales (TikTok / Reels / Shorts) avec
seedance-2.0sur hiapi. La vidéo intégrée ci-dessous a été générée exactement avec le prompt imprimé juste au-dessus — en aucun cas une démo empruntée à quelqu'un d'autre. - Deux modes, un seul modèle :
seedance-2.0prend en charge à la fois la génération de vidéo à partir de texte et la génération de vidéo à partir d'image sous le même point de terminaison — vous pouvez partir d'un prompt ou animer une image statique existante. - Faits API (vérifiés sur la plateforme) :
seedance-2.0fonctionne sur un point de terminaison de tâches asynchrone (/v1/tasks). L'objetinputrequiertprompt,aspect_ratio(obligatoire — utilisez9:16pour les vidéos courtes),resolution(480p/720p/1080p) etdurationen secondes. Le résultat est renvoyé au format MP4, à l'emplacementoutput[0].url. - Tarification (par seconde de sortie) :
480pà 0,136 $/seconde,720pà 0,293 $/seconde,1080pà 0,729 $/seconde. Une vidéo courte de 4 secondes en 480p coûte 0,54 $. Consultez la page de tarification pour les prix en temps réel. - Comment l'exécuter : envoyez un POST à l'API de tâches, interrogez jusqu'à ce que le statut soit
success, puis téléchargez le MP4 depuisoutput[0].url— cette URL est temporaire et expire, donc enregistrez immédiatement les données binaires. Le script complet prêt à copier (les deux modes + boucle par lots) se trouve à la fin.
Pourquoi choisir seedance-2.0 pour les vidéos courtes
Les plateformes de vidéos courtes ont une grammaire fixe : vertical 9:16, quelques secondes de durée, un rythme d'action clair. C'est exactement la forme pour laquelle seedance-2.0 est conçu. Il suffit d'un indicateur de ratio d'aspect pour produire un mouvement cinématographique, donc vous n'avez pas à lutter avec le modèle pour obtenir un cadrage vertical — demandez simplement 9:16 et il cadre dans ce format.
L'autre raison est le flux de travail : chaque vidéo courte est une seule tâche asynchrone. Vous soumettez le job, interrogez l'ID de tâche, puis récupérez un MP4 terminé. Pas de socket en streaming à surveiller, pas de délai d'expiration de 100 secondes à éviter — exactement le même protocole de tâches que tous les autres modèles de génération hiapi, donc si vous avez déjà appelé des modèles d'image, le flux de contrôle ici est identique.
Mode 1 — Texte vers vidéo
C'est le chemin le plus rapide pour obtenir une vidéo courte : décrivez la prise de vue, choisissez le format et la durée, soumettez.
Le prompt ci-dessous est celui que j'ai réellement exécuté. Écrivez comme un réalisateur — sujet, éclairage, mouvement de caméra — et non comme une liste de mots-clés.
Prompt : Un barista extrait un espresso dans un café baigné de soleil, gros plan sur la crème qui tourbillonne dans la tasse, lumière chaude du matin, fine vapeur qui s'élève, faible profondeur de champ, mouvement de caméra fluide à l'épaule en approche.
Paramètres :
aspect_ratio: 9:16,resolution: 480p,duration: 4
Cette vidéo est nativement au format 9:16 et s'insère directement dans une timeline Reels/Shorts. Le rendu a pris environ deux minutes, pour un coût estimé à environ 0,54 $ au tarif actuel en 480p — assez bon marché pour générer plusieurs variantes et garder la meilleure.
Le corps de la requête est minimal. Un champ souvent oublié est aspect_ratio : il est obligatoire, et s'il manque, l'API rejette la tâche avec missing required field "aspect_ratio".
import os, json, requests
TOKEN = os.environ["HIAPI_TOKEN"]
BASE = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
payload = {
"model": "seedance-2.0",
"input": {
"prompt": (
"A barista pulls a shot of espresso in a sunlit cafe, close-up on the "
"crema swirling into the cup, warm morning light, gentle steam rising, "
"shallow depth of field, smooth handheld camera push-in."
),
"aspect_ratio": "9:16", # required — 9:16 for short-form
"resolution": "480p", # 480p | 720p | 1080p
"duration": 4, # seconds
},
}
r = requests.post(BASE, headers=HEADERS, data=json.dumps(payload), timeout=60)
task_id = r.json()["data"]["taskId"]
print("submitted:", task_id)
Mode 2 — Image vers vidéo
Le second mode consiste à animer une image statique que vous fournissez, plutôt que de créer une scène à partir de zéro. C'est exactement ce qu'il faut pour le travail de marque : prenez (ou générez) une image produit propre, puis laissez seedance-2.0 ajouter un rythme de mouvement, afin que la composition et le produit restent conformes à la charte de la marque.
La forme de l'appel est la même que pour la tâche — conservez aspect_ratio, resolution et duration — mais votre prompt décrit désormais le mouvement à appliquer à l'image (« approche lente », « le mannequin se tourne vers la caméra », « la vapeur commence à s'élever »), et non la scène entière. Associez cela à une image statique issue d'un modèle d'image et vous obtenez un pipeline en deux étapes : générer le visuel principal, puis l'animer.
Astuce : gardez les vidéos courtes issues d'image vers vidéo brèves (4 secondes) et le mouvement subtil. Une vidéo courte récompense un rythme net et unique, pas une prise de vue chargée.
Calcul des coûts pour des vidéos courtes en série
Comme la facturation se fait par seconde de sortie, votre coût est très prévisible — choisissez la résolution, multipliez par la durée de la vidéo :
| Résolution | Prix / seconde | Vidéo de 4 s | Vidéo de 8 s |
|---|---|---|---|
| 480p | 0,136 $ | 0,54 $ | 1,09 $ |
| 720p | 0,293 $ | 1,17 $ | 2,34 $ |
| 1080p | 0,729 $ | 2,92 $ | 5,83 $ |
Pour itérer plusieurs fois sur un hook, commencez en 480p — le prix est le quart de celui de la 720p, suffisant pour juger la composition et le mouvement. Ne refaites le rendu en 720p ou 1080p que pour la version retenue, destinée à la publication finale. Consultez la page de tarification pour les tarifs actuels de chaque modèle.
Script complet — soumettre, interroger, télécharger
Voici la version de bout en bout : soumettez une tâche texte vers vidéo, interrogez la tâche jusqu'à son achèvement, puis enregistrez le MP4. L'étape de téléchargement est importante — output[0].url est un lien temporaire qui expire, donc écrivez les octets sur disque dès que la tâche réussit.
import os, json, time, requests
TOKEN = os.environ["HIAPI_TOKEN"]
BASE = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
def submit(prompt, aspect_ratio="9:16", resolution="480p", duration=4):
payload = {
"model": "seedance-2.0",
"input": {
"prompt": prompt,
"aspect_ratio": aspect_ratio, # required
"resolution": resolution, # 480p | 720p | 1080p
"duration": duration, # seconds
},
}
r = requests.post(BASE, headers=HEADERS, data=json.dumps(payload), timeout=60)
r.raise_for_status()
return r.json()["data"]["taskId"]
def wait(task_id, timeout_s=600, poll=8):
deadline = time.time() + timeout_s
while time.time() < deadline:
r = requests.get(f"{BASE}/{task_id}", headers=HEADERS, timeout=30)
data = r.json().get("data", {})
status = data.get("status")
if status == "success":
return data
if status == "fail":
raise RuntimeError(f"task failed: {data.get('error')}")
time.sleep(poll)
raise TimeoutError(f"task {task_id} did not finish in {timeout_s}s")
def download(task, path):
out = task["output"][0]
assert out["type"] == "video", f"unexpected output type: {out['type']}"
# output[0].url is temporary (see expireAt) — save immediately.
resp = requests.get(out["url"], timeout=120)
resp.raise_for_status()
with open(path, "wb") as f:
f.write(resp.content)
return path
if __name__ == "__main__":
prompt = (
"A barista pulls a shot of espresso in a sunlit cafe, close-up on the crema "
"swirling into the cup, warm morning light, gentle steam rising, shallow "
"depth of field, smooth handheld camera push-in."
)
tid = submit(prompt, aspect_ratio="9:16", resolution="480p", duration=4)
print("submitted:", tid)
task = wait(tid)
print("saved:", download(task, "espresso_9x16.mp4"))
Pour transformer un hook en un lot complet, enveloppez submit / wait / download dans une boucle qui parcourt les prompts :
HOOKS = {
"espresso": "A barista pulls a shot of espresso in a sunlit cafe, close-up on the crema, gentle steam, handheld push-in.",
"matcha": "A whisk froths bright green matcha in a ceramic bowl, top-down light, slow spiral motion, calm morning mood.",
"pour-over": "Hot water spirals over fresh coffee grounds in a dripper, close macro, steam rising, warm backlight.",
}
for name, prompt in HOOKS.items():
tid = submit(prompt, aspect_ratio="9:16", resolution="480p", duration=4)
task = wait(tid)
download(task, f"{name}_9x16.mp4")
print("done:", name)
Réalisez ce lot en 480p, sélectionnez le gagnant, refaites son rendu en 1080p, puis publiez. C'est la boucle complète de vidéo courte sur un seul modèle et un seul point de terminaison.
Points clés
seedance-2.0est une seule tâche asynchrone sur/v1/tasks, qui renvoie un MP4 — même flux de contrôle que les modèles d'image hiapi.aspect_ratioest obligatoire ; utilisez9:16pour TikTok / Reels / Shorts.- La facturation se fait par seconde de sortie : 480p 0,136 $/s, 720p 0,293 $/s, 1080p 0,729 $/s — donc commencez à moindre coût en 480p et ne finalisez en haute résolution que les versions retenues.
- L'URL de sortie est temporaire — dès que la tâche rapporte
success, téléchargez immédiatement les données binaires. - Un même appel fait à la fois texte vers vidéo et image vers vidéo ; associez image vers vidéo à une image statique générée pour obtenir un mouvement produit conforme à la marque.
Articles similaires
Voir tous les articles →-
Guide d'utilisation
Guide de démarrage pour seedream-5.0-pro/image-to-image : capacités, tarification et points d'intégration
Limites de capacité, mode de facturation et pratiques d'intégration technique du modèle d'édition d'image de ByteDance
-
Guide d'utilisation
Guide de prise en main de la génération d'images par texte avec seedream-5.0-pro : limites de capacités, intégration API et maîtrise des coûts
Point de vue pratique pour les développeurs : des points clés des paramètres à l'estimation du coût de 0,05 $ par image
-
Guide d'utilisation
Guide de prise en main de Hailuo 2.3 Fast image-to-video : limites de capacités, tarification et intégration pratique
Points clés pour les développeurs : choisir et intégrer le modèle image-to-video de MiniMax