Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
Seedance 2.5 API Démarrage : Votre première demande vidéo
2026/09/12

Seedance 2.5 API Démarrage : Votre première demande vidéo

Utilisez l'API Seedance 2.5 avec une clé API et cURL. Apprenez les modes d'entrée, le chaînage de cadres et le coût de votre première génération vidéo.

Pour appeler l'API Seedance 2.5 sur reAPI, créez une clé API, envoyez une demande à /api/v1/videos/generations avec model: "doubao-seedance-2.5-face", puis interrogez le id renvoyé. La tâche terminée contient une URL vidéo. Vous utilisez le même identifiant de modèle pour les demandes texte, image, première/dernière image et de référence multimodales.[1]

Commencez par une demande texte de quatre secondes afin qu'il n'y ait pas de fichiers téléchargés à diagnostiquer. Au tarif du 12 septembre de 0,118589 $ par seconde pour 480p sans vidéo de référence, cette demande coûte 475 crédits, soit 0,475 $ après arrondi des crédits. La page du modèle Seedance 2.5 contient la table tarifaire actualisée et un espace de test pour vérifier les mêmes paramètres.[2]

Résumé

  • Créez une clé Bearer dans Clés API, puis envoyez model: "doubao-seedance-2.5-face". Le slug de page seedance-2-5 n'est pas l'identifiant de modèle de la demande.[1]
  • Soumettez une seule fois, conservez l'id de la réponse, et interrogez /api/v1/tasks/{id}. Un POST réussi démarre une tâche ; cela ne signifie pas que la vidéo est prête.[1]
  • Choisissez duration entre 4 et 30 secondes et resolution parmi 480p, 720p ou 1080p. Utilisez une durée fixe pour une réserve initiale prévisible.[1]
  • Définissez size: "adaptive" pour les entrées explicites de première/dernière image. La sortie suit la forme du cadre.[1]
  • Une demande de dix secondes en 720p sans vidéo de référence coûte 2 669 crédits, soit 2,669 $, selon le tarif du 12 septembre. La facturation des vidéos de référence compte plus que la seule durée de sortie.[1][2]

Créez une clé API Seedance 2.5 et préparez une demande

Connectez-vous à reAPI, ouvrez Clés API, et créez une clé pour l'espace de travail qui paiera la génération. Copiez-la dans une variable d'environnement locale nommée REAPI_API_KEY. Gardez la clé en dehors du JavaScript du navigateur, des dépôts publics et des captures d'écran. Les demandes s'authentifient via l'en-tête Authorization: Bearer ... ; le flux documenté ne nécessite pas d'en-tête de projet distinct.[1]

Vous avez aussi besoin de suffisamment de crédits pour la réserve initiale de la demande. Les crédits promotionnels, lorsqu'ils sont offerts à un compte admissible, sont distincts de la possibilité de financer complètement une vidéo particulière. Lisez le montant affiché dans votre compte. Ce tutoriel suppose un compte approvisionné et ne promet pas une génération gratuite.[2]

Gardez la première charge utile petite. Un prompt, une durée fixe, un rapport de dimensions et une résolution suffisent pour une demande texte. Ajoutez des images ou du son après que le chemin de soumission et d'interrogation fonctionne. Cela facilite le diagnostic d'une première tentative échouée : elle ne peut pas être causée par une URL de référence inaccessible ou un fichier source incompatible.

Envoyez la première demande cURL et conservez son identifiant de tâche

Avec REAPI_API_KEY déjà défini dans votre shell, soumettez cette demande :

curl --fail-with-body https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer $REAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.5-face",
    "prompt": "A matte cobalt ceramic mug stands on an ivory turntable. One continuous studio shot. Over four seconds the turntable rotates clockwise by about 45 degrees. The camera stays fixed at mug height. Keep the handle, rim and glaze consistent. Soft side light, plain background, no text or logos.",
    "duration": 4,
    "size": "16:9",
    "resolution": "480p",
    "generate_audio": false,
    "return_last_frame": true
  }'

Conservez l'id de la réponse avant de faire quoi que ce soit d'autre. Cet identifiant appartient à cette génération et est la valeur que vous utilisez pour les demandes GET suivantes. Ne le remplacez pas par l'identifiant de modèle, une URL de fichier ou un identifiant deviné. La réponse inclut aussi un statut de tâche ; les URL vidéo apparaissent lorsque la tâche se termine.[1]

L'exemple demande aussi la dernière image ainsi que la vidéo. Vous pouvez ignorer cette image pour un clip autonome, ou l'utiliser plus tard lors du chaînage de plans. Le même prompt et les mêmes paramètres sont inclus dans notre bibliothèque de prompts testés, où vous pouvez inspecter le rendu généré au lieu de traiter la formulation comme une garantie de qualité.

Soumettez et interrogez une tâche API Seedance 2.5 en Python

L'exemple Python ci-dessous est une alternative à l'exemple cURL : il crée une nouvelle tâche vidéo et l'interroge. Choisissez une méthode de soumission pour votre premier test. Exécuter les deux exemples crée deux générations payantes.

Le script attend jusqu'à 30 minutes localement. Ce délai d’expiration est un exemple de réglage côté client, pas un délai de génération garanti. Il signale une erreur HTTP au lieu de démarrer silencieusement un autre travail. Installez requests et définissez REAPI_API_KEY avant de l'exécuter.

import os
import time
import requests

BASE = "https://reapi.ai/api/v1"
headers = {"Authorization": f"Bearer {os.environ['REAPI_API_KEY']}"}
payload = {
    "model": "doubao-seedance-2.5-face",
    "prompt": "A ceramic mug on a table. Locked camera, soft daylight.",
    "duration": 4,
    "resolution": "480p",
    "size": "16:9",
    "generate_audio": False,
}

submitted = requests.post(
    f"{BASE}/videos/generations",
    headers=headers,
    json=payload,
    timeout=120,
)
submitted.raise_for_status()
task_id = submitted.json()["id"]
print("Save this task id:", task_id, flush=True)

deadline = time.monotonic() + 30 * 60
while time.monotonic() < deadline:
    response = requests.get(
        f"{BASE}/tasks/{task_id}", headers=headers, timeout=60
    )
    if response.status_code in (429, 500, 502, 503, 504):
        time.sleep(10)
        continue
    response.raise_for_status()
    task = response.json()
    if task["status"] == "completed":
        for url in task["output"]["video_urls"]:
            print(url)
        break
    if task["status"] == "failed":
        raise RuntimeError(task.get("error"))
    time.sleep(10)
else:
    raise TimeoutError(f"Resume polling existing task {task_id}")

L'interrogation ne consomme pas de crédits de génération. Si le processus local expire, conservez l'identifiant sauvegardé et reprenez les demandes GET pour cette tâche. Un délai d'expiration local seul n'établit pas que la génération distante a échoué. De même, si une connexion POST s'interrompt avant que vous receviez une réponse, vérifiez votre historique des tâches avant de soumettre le même travail à nouveau.[1]

Pour une intégration de service, persistez l'identifiant de tâche dans votre propre base de données immédiatement après la soumission. La distinction importante est entre relire une tâche existante et créer une nouvelle tâche. Cette dernière est une autre demande de génération.

Sélectionnez quatre modes d'entrée via les champs média

Les champs média sélectionnent la forme de la demande. Utilisez ce tableau avec la documentation complète de l'API Seedance 2.5.[1]

Demande envisagéeChamps à envoyerContrainte à retenir
Texte en vidéopromptUne demande fondée uniquement sur du texte nécessite un prompt
Image de référence en vidéoimage_urls plus prompt de mouvementURL d'images publiques ; jusqu'à 30 images
Première image seule ou première et dernière images explicitesimage_with_rolesUtilisez size: "adaptive" ; une dernière image nécessite une première image
Référence multimodaleimage_urls, video_urls et/ou audio_urlsChaque type média a ses propres limites de fichier et de durée

Par exemple, remplacez les entrées image de la requête fondée uniquement sur du texte par une première image explicite :

{
  "image_with_roles": [
    {
      "url": "https://file.deepytb.com/landing/qwen-image-2/playground-input.webp",
      "role": "first_frame"
    }
  ],
  "size": "adaptive"
}

Ce bloc montre les champs à fusionner dans une demande complète, non un corps POST complet. Remplacez l'échantillon par une image que vous êtes autorisé à utiliser. N'envoyez pas à la fois image_urls et image_with_roles ; ils s'excluent mutuellement. Et ne mélangez pas les rôles de cadre et les rôles reference_image dans le même tableau.[1]

Pour l'entrée vidéo, un clip source doit durer 2 à 30 secondes, avec au maximum dix clips et pas plus de 30 secondes combinées. L'audio a des limites distinctes de dix pistes et 30 secondes combinées. Plus de fichiers ne rendent pas une demande plus contrôlée par eux-mêmes ; attribuez à chaque référence un rôle clair dans le prompt.[1]

Réutilisez une dernière image sans supposer une continuité parfaite

Définissez return_last_frame: true dans la première demande. Lorsque cette tâche se termine, lisez output.last_frame_url et placez cette URL dans le tableau image_with_roles de la demande suivante avec role: "first_frame". Utilisez size: "adaptive" à nouveau.[1]

Reprenez la description pertinente du sujet, des vêtements, du décor et de l'action envisagée. Une image de limite partagée donne au plan suivant un point de départ visuel ; elle ne prouve pas que les cadres ultérieurs préserveront tous les détails. Inspectez la jonction, notamment les mains en mouvement, la direction des yeux et les objets de fond, avant d'utiliser la paire comme une séquence.

L'édition vidéo est une forme de demande différente. Un omni_reference_task_type: "edit" explicite nécessite une vidéo source, une taille adaptative et une durée auto. Ce n'est pas le bon paramètre pour une nouvelle scène qui utilise simplement une photo comme guide. Gardez la première intégration sur un chemin de génération simple, puis ajoutez l'édition lorsque vous devez modifier un clip existant.[1]

Calculez le coût de la demande avant d'ajouter une vidéo source

Pour les demandes sans vidéo de référence, multipliez le prix par seconde par la durée de sortie, convertissez les dollars en crédits et arrondissez au supérieur à un crédit entier. Un crédit vaut 0,001 $.[1]

DemandeTarif du 12 septembreCalculTotal payable
4 secondes, 480p, pas de vidéo de référence0,118589 $/sceil(0.118589 × 4 × 1000)475 crédits / 0,475 $
10 secondes, 720p, pas de vidéo de référence0,266824 $/sceil(0.266824 × 10 × 1000)2 669 crédits / 2,669 $
Sortie 10 secondes, référence 3 secondes, 720p0,160094 $/sceil(0.160094 × 17 × 1000)2 722 crédits / 2,722 $

La dernière ligne facture 17 secondes car les demandes d'entrée vidéo utilisent le plus grand de la sortie plus la durée source arrondie et ceil(5 × output / 3). Un tarif vidéo de référence plus bas ne signifie donc pas nécessairement une charge finale plus basse. Les références d'images et d'audio n'ajoutent pas de secondes source.[1][2]

La durée auto, duration: -1, réserve par rapport au plafond de 30 secondes et se règle plus tard sur la longueur livrée. Utilisez une durée fixe lorsque la réserve doit rester petite. Pour des comparaisons de plateforme plus larges, consultez le guide de tarification API.

Gardez les instructions de l'hôte API ensemble

Les recherches de Seedance 2.5 sur OpenRouter, fal ou GitHub peuvent conduire à des clients et des spécifications de service différents. La clé, le point de terminaison, l'identifiant de modèle et l'enveloppe de tâche de ce tutoriel vont ensemble. Un dépôt qui appelle un autre service n'est pas un remplacement direct pour cette demande.

Avant d'adapter un échantillon, vérifiez son URL de base, l'en-tête d'authentification, les noms de modèle acceptés, le schéma d'entrée et le point de terminaison d'état. Utilisez la documentation de l'hôte qui recevra réellement la demande. Vous n'avez pas besoin d'un wrapper GitHub tiers pour exécuter les exemples cURL et Python ici ; ils utilisent l'interface HTTP documentée de reAPI.[1]

FAQ

Clé API Seedance 2.5

Créez une clé dans Clés API reAPI et utilisez-la comme jeton Bearer. Gardez-la sur votre serveur ou environnement local, avec suffisamment de crédits d'espace de travail pour la demande.[1]

Documentation API Seedance 2.5

La référence du modèle documente les champs acceptés, les modes, les contraintes et la facturation. Utilisez la page du modèle pour les prix actuels par seconde.[1][2]

Tutoriel API Seedance 2.5

Soumettez une demande texte avec durée fixe, conservez son id, puis interrogez jusqu'à achèvement ou défaillance. Ajoutez des fichiers de référence seulement après que ce chemin fonctionne.[1]

GitHub Seedance 2.5 API

Un client GitHub est facultatif. Inspectez quel service il appelle et si ses champs correspondent à la documentation API actuelle avant d'utiliser ses charges utiles exemple.[1]

Accès API Seedance 2.5

reAPI expose doubao-seedance-2.5-face via son point de terminaison vidéo asynchrone. Le slug de modèle du site n'est pas la valeur de modèle à soumettre.[1]

Coût API Seedance 2.5

Une demande 480p de quatre secondes sans vidéo source coûte 0,475 $ après arrondi des crédits au tarif du 12 septembre. La durée, la résolution et la facturation des vidéos de référence changent le total.[1][2]

Terminez une demande avant d'élargir le flux de travail

Conservez la première charge utile réussie et son identifiant de tâche comme base de référence de votre intégration API Seedance 2.5. Pour la demande suivante, ajoutez le type média dont votre plan a besoin et vérifiez la vidéo renvoyée avant d'introduire le chaînage ou l'édition.

Références

  1. reAPI. Seedance 2.5 API — Parameters, Modes & Billing. Consulté dans le navigateur le 12 septembre 2026. reapi.ai/docs/seedance-2-5.
  2. reAPI. Seedance 2.5 model page, rendered pricing table and FAQ. Consulté dans le navigateur le 12 septembre 2026. reapi.ai/models/seedance-2-5.