API de Génération Vidéo Seedance 2.0 Mini
Paramètres Seedance 2.0 Mini, médias de référence, tâches asynchrones, téléchargements authentifiés et facturation à la durée sur APIMaster.
Génération vidéo Seedance 2.0 Mini
Utilisez seedance-2.0-mini pour la génération texte-à-vidéo, image-à-vidéo, première/dernière image, et les références vidéo ou audio. Mini prend en charge 480p et 720p, avec des durées de sortie de 4 à 15 secondes.
Pour la génération de première/dernière image, définissez explicitement
aspect_ratio: "adaptive". L'audio de référence doit accompagner une image ou une vidéo. Conservez votre clé API APIMaster sur votre serveur.
Points de terminaison et authentification
URL de base : https://apimaster.ai/v1. Envoyez Authorization: Bearer YOUR_API_KEY lors de la soumission, de l'interrogation et du téléchargement.
| Opération | Méthode et chemin |
|---|---|
| Créer une vidéo | POST /v1/videos/generations |
| Interroger un résultat compatible | GET /v1/video/generations/{task_id} |
| Interroger un résultat de style OpenAI | GET /v1/videos/{task_id} |
| Télécharger la vidéo | GET /v1/videos/{task_id}/content |
| Télécharger la dernière image demandée | GET /v1/videos/{task_id}/last-frame |
Utilisez le task_id public renvoyé par APIMaster. Les tâches vidéo et les tâches de révision de médias sont des ressources différentes : utilisez les points de terminaison d'interrogation vidéo ci-dessus pour les vidéos. Une requête acceptée crée une tâche asynchrone ; un succès HTTP ne signifie pas que la vidéo est terminée.
Paramètres
| Champ | Type | Requis / défaut | Description |
|---|---|---|---|
model |
chaîne | Requis | seedance-2.0-mini |
prompt |
chaîne | Requis | Aucune limite de longueur de prompt spécifique au modèle n'est imposée par APIMaster. Décrivez le sujet, le mouvement, la scène, la caméra et l'audio souhaité ; des prompts concis sont plus faciles à contrôler. |
duration |
entier | 5 |
Longueur de sortie, 4–15 secondes. -1 n'est pas pris en charge. |
resolution |
chaîne | 720p |
480p ou 720p ; 1080p et 4k ne sont pas pris en charge. |
aspect_ratio |
chaîne | 16:9 |
16:9, 9:16, 1:1, 4:3, 3:4, 21:9, ou adaptive. |
ratio |
chaîne | Identique à aspect_ratio |
Alias APIMaster. Si les deux apparaissent, leurs valeurs doivent correspondre. |
size |
chaîne | Identique à aspect_ratio |
Un ratio tel que 16:9 ou adaptive. Préférez aspect_ratio et resolution pour exprimer les deux dimensions séparément. Des spécifications conflictuelles renvoient 400. |
seed |
entier | Omis | Contrôle la variation ; des graines identiques ne garantissent pas une sortie identique. |
generate_audio |
booléen | true |
Générer un audio d'accompagnement ; utilisez false pour une sortie silencieuse. |
image_urls |
tableau de chaînes | Omis | Jusqu'à 9 images de référence. URLs d'images publiques ou IDs APIMaster asset:// approuvés. |
image_with_roles |
tableau d'objets | Omis | Objets image avec url et role ; ne peut pas apparaître avec image_urls. Voir les règles de rôle ci-dessous. |
video_urls |
tableau de chaînes | Omis | Jusqu'à 3 vidéos de référence, avec une durée d'entrée facturable totale d'au plus 15 secondes. Voir les exigences de matériel. |
audio_urls |
tableau de chaînes | Omis | Jusqu'à 3 fichiers audio de référence, durée combinée d'au plus 15 secondes. Nécessite des références image ou vidéo. |
return_last_frame |
booléen | false |
En cas de succès, renvoie une URL de téléchargement APIMaster authentifiée pour la dernière image lorsque le résultat inclut une dernière image. |
nsfw_check |
booléen | false |
Demande une modération du contenu texte/image avant la génération. Les vidéos et l'audio ne sont pas inclus dans cette passe de modération. |
tools |
tableau d'objets | Omis | Déclaration d'outil de recherche : [{"type":"web_search"}]. |
La génération d'ébauche et les améliorations d'ébauche sont exclusives à Seedance 2.5. Ne passez pas draft: true ou draft_task_id à ce modèle.
Matériaux de référence
Fournissez des URL HTTPS accessibles publiquement, ou des identifiants approuvés de votre bibliothèque multimédia APIMaster. Les fichiers situés derrière des pages de connexion ou nécessitant vos propres en-têtes d'autorisation ne peuvent pas être récupérés. Un téléchargement d'image réussi n'implique pas l'approbation du contenu ou sa conformité à chaque exigence du modèle.
| Matériel | Exigences |
|---|---|
| Images de référence | Jusqu'à 9 ; utilisez des images JPEG/PNG RVB lisibles. Le point de terminaison de téléchargement d'images d'APIMaster a sa propre limite de 20 MiB et accepte JPEG, PNG, GIF et WebP. |
| Vidéos de référence | Jusqu'à 3 ; vidéo MP4/MOV, H.264/H.265 ; audio AAC/MP3 lorsque présent. Utilisez une vidéo de référence de 480p–720p. La durée combinée de référence doit tenir dans 15 secondes facturables. APIMaster vérifie la durée accessible du MP4/MOV avant de facturer ; les durées des clips d'entrée sont arrondies à la seconde supérieure pour cette vérification et la facturation. |
| Audio de référence | Jusqu'à 3 ; WAV ou MP3, au maximum 20 MB par fichier, durée combinée au maximum 15 secondes. Toujours accompagner une image ou une vidéo de référence. |
Utilisez des images claires avec suffisamment de détails, évitez les fichiers corrompus ou incomplets, et assurez-vous que le mouvement des vidéos de référence est cohérent avec votre prompt. Les médias peuvent échouer à une vérification asynchrone de format ou de contenu même si la soumission est acceptée.
Rôles des images
role |
Signification |
|---|---|
first_frame |
Image de départ ; au plus une |
last_frame |
Image de fin ; au plus une, et nécessite une première image |
reference_image |
Image de référence, y compris les assets de personnage approuvés |
Pour les tâches première/dernière image, définissez aspect_ratio sur adaptive et omettez video_urls et audio_urls. Utilisez image_with_roles pour les rôles explicites ; ne passez pas également image_urls.
{
"model": "seedance-2.0-mini",
"prompt": "A paper boat drifts gently from the starting composition to the ending composition",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_with_roles": [
{"url": "https://your-storage.example/start.png", "role": "first_frame"},
{"url": "https://your-storage.example/end.png", "role": "last_frame"}
],
"generate_audio": false
}
Téléchargements et bibliothèque multimédia
Téléchargez une image locale avec POST /v1/uploads/images en utilisant le champ multipart file et l'autorisation Bearer. Le url de niveau supérieur retourné peut être utilisé comme entrée d'image publique.
curl "https://apimaster.ai/v1/uploads/images" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@reference.png"
Pour les matériaux réutilisables ou de personnage, créez un groupe avec POST /v1/seedance2/private-avatar/groups, soumettez les matériaux avec POST /v1/seedance2/private-avatar/assets, interrogez l'examen avec GET /v1/tasks/{asset_task_id}, et utilisez uniquement les assets Active comme asset://{asset_id}. Ces ressources appartiennent à votre compte. Spécifiez explicitement model: "seedance-2.0-mini". Les identifiants d'asset d'une autre plateforme ou compte ne peuvent pas être utilisés ici.
Voir le flux de travail de la bibliothèque multimédia pour la création, la soumission, l'examen, les échecs partiels et la suppression. Les points de terminaison de téléchargement et de gestion des assets sont partagés ; les limites de génération sur cette page s'appliquent à Mini. Un examen échoué peut ne retourner aucune raison détaillée ; utilisez des matériaux clairs et conformes dans un format pris en charge et soumettez un nouvel examen. Ne recréez pas de manière répétée une tâche pendant qu'un examen existant est encore en cours de traitement.
Soumettre une vidéo
curl "https://apimaster.ai/v1/videos/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model":"seedance-2.0-mini",
"prompt":"A small paper boat on calm water at sunrise, gentle tracking shot",
"duration":5,
"resolution":"720p",
"aspect_ratio":"16:9",
"generate_audio":true,
"return_last_frame":true
}'
Réponse de création :
{"code":200,"data":[{"status":"submitted","task_id":"task_PUBLIC_VIDEO_ID"}]}
Un délai d'expiration à la soumission est ambigu : la requête peut avoir été acceptée. Vérifiez votre historique de tâches avant de soumettre à nouveau ; une autre soumission réussie crée une tâche facturable séparée.
Références vidéo et audio
{
"model": "seedance-2.0-mini",
"prompt": "Follow the reference motion and keep the scene consistent with the image",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_urls": ["https://your-storage.example/reference.png"],
"video_urls": ["https://your-storage.example/reference.mp4"],
"audio_urls": ["https://your-storage.example/reference.mp3"],
"generate_audio": true
}
Interroger et télécharger
Interrogez toutes les 3–5 secondes. Arrêtez lorsque c'est réussi ou échoué.
curl "https://apimaster.ai/v1/video/generations/task_PUBLIC_VIDEO_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
Succès de requête compatible :
{
"code":"success",
"message":"",
"data":{
"error":null,
"format":"mp4",
"metadata":null,
"status":"succeeded",
"task_id":"task_PUBLIC_VIDEO_ID",
"url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content",
"actual_time":138,
"last_frame_url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame"
}
}
L'exemple inclut des champs de complétion optionnels. actual_time est le temps écoulé entre la soumission et la complétion en secondes, et non la durée facturable de la vidéo. last_frame_url est omis si une dernière image n'a pas été demandée ou n'est pas disponible. Les tâches échouées n'incluent pas les champs de temps écoulé ou de dernière image réservés aux succès.
Requête de style OpenAI :
curl "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
| Signification | data.status compatible |
status de style OpenAI |
|---|---|---|
| En attente | queued |
queued |
| En génération | processing |
in_progress |
| Succès | succeeded |
completed |
| Échec | failed |
failed |
L'objet de style OpenAI utilise id pour l'ID public de la tâche et url pour l'URL de téléchargement de la vidéo. Les champs optionnels actual_time et last_frame_url apparaissent au niveau supérieur. En cas d'échec, consultez error.message dans l'objet de résultat correspondant. Les réponses n'incluent pas de champs monétaires.
Téléchargez avec la clé API du même compte. Ouvrir une URL de résultat sans autorisation est insuffisant. Sauvegardez la sortie rapidement.
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content" \
-H "Authorization: Bearer YOUR_API_KEY" -o output.mp4
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame" \
-H "Authorization: Bearer YOUR_API_KEY" -o last-frame.jpg
Flux de travail Python complet
import os
import time
import requests
base = "https://apimaster.ai/v1"
headers = {"Authorization": f"Bearer {os.environ['APIMASTER_API_KEY']}"}
response = requests.post(base + "/videos/generations", headers=headers, json={
"model": "seedance-2.0-mini",
"prompt": "A small paper boat on calm water at sunrise",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"generate_audio": True,
"return_last_frame": True,
}, timeout=90)
response.raise_for_status()
task_id = response.json()["data"][0]["task_id"]
for _ in range(240):
response = requests.get(base + "/video/generations/" + task_id,
headers=headers, timeout=30)
response.raise_for_status()
task = response.json()["data"]
if task["status"] == "failed":
raise RuntimeError((task.get("error") or {}).get("message", "Video failed"))
if task["status"] == "succeeded":
print("Elapsed seconds:", task.get("actual_time"))
for field, filename in [("url", "output.mp4"), ("last_frame_url", "last-frame.jpg")]:
if task.get(field):
with requests.get(task[field], headers=headers, stream=True, timeout=120) as result:
result.raise_for_status()
with open(filename, "wb") as out:
for chunk in result.iter_content(1024 * 1024):
out.write(chunk)
break
time.sleep(5)
else:
raise TimeoutError("Task still processing; query the same task_id later")
Facturation à la durée
Il existe quatre paliers : 480P, 720P, 480P-input et 720P-input. Un palier intitulé « vidéos téléchargées » signifie que la requête contient une entrée vidéo de référence. Sélectionnez le palier d'entrée correspondant à la résolution de sortie demandée, même si des références image/audio sont également présentes.
- Sans vidéo de référence : secondes de vidéo générées × le prix unitaire correspondant à la résolution.
- Avec vidéo de référence : (durée totale de la vidéo de référence en secondes + secondes de vidéo générées) × le prix unitaire du palier d'entrée correspondant.
- Le prix unitaire de base configuré est multiplié par les coefficients applicables du canal et du compte/groupe pour obtenir votre prix unitaire final. Consultez la fiche de votre modèle et les relevés de consommation de votre portefeuille pour connaître le prix applicable.
Par exemple, une vidéo de référence de 4 secondes et une sortie de 5 secondes utilisent 9 secondes facturables au palier d'entrée. Le prix unitaire du palier d'entrée peut différer du palier standard ; ne calculez pas uniquement la durée de sortie et n'appliquez pas le palier standard aux références vidéo. Les images et l'audio n'ajoutent pas de secondes de vidéo de référence. L'audio généré n'introduit pas de palier son/silence séparé pour ces quatre prix configurés.
La soumission réserve la durée de sortie demandée, plus la durée vérifiée de la vidéo d'entrée lorsqu'elle est présente. Une durée de sortie omise réserve 5 secondes de sortie. La tâche conserve son tarif au moment de la soumission ; l'achèvement réconcilie la durée réelle. Un échec de génération rembourse le coût de la tâche vidéo.
Erreurs et dépannage
Les requêtes invalides renvoient une erreur HTTP. Lisez le message d'erreur JSON ainsi que le code de statut. La validation des paramètres utilise l'encapsuleur d'erreur d'APIMaster, par exemple :
{"code":"invalid_request","message":"First/last-frame tasks require adaptive aspect_ratio","data":null}
| Problème | Action |
|---|---|
| Résolution / durée non prise en charge | Choisissez 480p ou 720p, et une durée entière de 4 à 15. |
| Ratio ou taille contradictoire | Utilisez des valeurs cohérentes pour aspect_ratio, ratio, size et resolution ; de préférence, conservez uniquement la paire ratio/résolution explicite. |
| Contraintes de première/dernière image | Utilisez adaptive, au plus un de chaque rôle, et omettez les références vidéo/audio. |
| La vidéo de référence ne peut pas être inspectée | Fournissez un fichier MP4/MOV complet accessible avec une durée valide. |
| Audio de référence sans image/vidéo | Ajoutez des références image/vidéo ou supprimez la référence audio. |
| Rejet par modération de contenu | Modifiez le texte ou l'image et soumettez une nouvelle requête. Un échec du service de modération peut permettre à la génération de continuer ; ce n'est pas une garantie de sécurité absolue. |
FormatUnsupported / Rejet asynchrone de format/contenu |
Lisez le error.message de la tâche échouée, vérifiez les formats et les exigences matérielles, et remplacez la source. |
401 |
Fournissez une clé API Bearer valide. |
| Solde insuffisant | Rechargez ou utilisez une clé avec un quota suffisant. |
429 / erreur temporaire du service |
Attendez et réessayez avec un délai d'attente exponentiel ; évitez les soumissions en double après un délai d'expiration ambigu. |
Les requêtes synchrones avec paramètres invalides ne créent pas de tâches vidéo ni ne facturent la génération. Les tâches acceptées peuvent toujours échouer de manière asynchrone ; vérifiez le statut final de la tâche avant d'utiliser un résultat.
Voir aussi : Vue d'ensemble de la génération vidéo, Seedance 2.0, Seedance 2.0 Fast et Seedance 2.5.
