Seedance Texte en vidéo
Utilisez le point de terminaison texte vers vidéo pour créer une tâche asynchrone.
Vue d'ensemble
Utilisez le point de terminaison texte vers vidéo avec un modèle compatible. Utilisez l'ID de tâche retourné pour récupérer son état, ou fournissez callback_url pour les livraisons documentées ci-dessous.
Démarrage rapide
- Créez une clé API et définissez-la comme RUNAPI_API_KEY.
- Choisissez un modèle pris en charge et envoyez une requête POST dont le corps correspond au schéma de ce modèle.
- Enregistrez l'identifiant de tâche retourné, puis interrogez l'état jusqu'à atteindre un état terminal ou gérez les callbacks documentés ci-dessous.
Point de terminaison
- URL de base
https://runapi.ai- Version de l'API
v1- Authentification
Authorization: Bearer YOUR_API_TOKEN
Modèles pris en charge
Ouvrez une page de modèle pour consulter la tarification actuelle, les limites de débit et les conditions d'utilisation commerciale.
Schéma de requête
Les champs et les valeurs autorisées dépendent du modèle sélectionné. Lorsqu'il est fourni, callback_url reçoit les livraisons de tâches documentées ci-dessous.
seedance-1.5-pro11 champs
aspect_ratiostring1:1, 4:3, 3:4, 16:9, 9:16, 21:9
callback_urlstringduration_secondsinteger4 - 12
enable_safety_checkerbooleangenerate_audiobooleanlock_camerabooleanmodelstringoutput_resolutionstring480p, 720p, 1080p
promptstringseedinteger-1 - 2147483647
source_image_urlsarray2
seedance-2-mini13 champs
aspect_ratiostring1:1, 4:3, 3:4, 16:9, 9:16, 21:9, auto
callback_urlstringduration_secondsinteger5
Plage: 4 - 15
first_frame_image_urlstringgenerate_audiobooleanlast_frame_image_urlstringmodelstringoutput_resolutionstring480p, 720p
promptstringreference_audio_urlsarray3
reference_image_urlsarray9
reference_video_urlsarray3
web_searchbooleanseedance-2.014 champs
aspect_ratiostring1:1, 4:3, 3:4, 16:9, 9:16, 21:9, auto
callback_urlstringduration_secondsinteger5
Plage: 4 - 15
enable_safety_checkerbooleanfirst_frame_image_urlstringgenerate_audiobooleanlast_frame_image_urlstringmodelstringoutput_resolutionstring480p, 720p, 1080p, 4k
promptstringreference_audio_urlsarray3
reference_image_urlsarray9
reference_video_urlsarray3
web_searchbooleanseedance-2.0-fast14 champs
aspect_ratiostring1:1, 4:3, 3:4, 16:9, 9:16, 21:9, auto
callback_urlstringduration_secondsinteger5
Plage: 4 - 15
enable_safety_checkerbooleanfirst_frame_image_urlstringgenerate_audiobooleanlast_frame_image_urlstringmodelstringoutput_resolutionstring480p, 720p
promptstringreference_audio_urlsarray3
reference_image_urlsarray9
reference_video_urlsarray3
web_searchbooleanseedance-2.516 champs
aspect_ratiostringRatio d'aspect de la sortie ; auto laisse RunAPI le sélectionner.
Valeurs autorisées:1:1, 4:3, 3:4, 16:9, 9:16, 21:9, auto
Par défaut: auto
callback_urlstringURL de webhook pour les mises à jour de tâches asynchrones.
duration_secondsintegerDurée de la vidéo en secondes ; -1 sélectionne automatiquement la durée.
Valeurs autorisées:-1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
Par défaut: 5
enable_safety_checkerbooleanIndique si RunAPI vérifie le contenu généré pour la sécurité.
first_frame_image_urlstringURL d'image de première image publique pour la génération guidée par images.
generate_audiobooleanIndique si un audio synchronisé doit être généré.
Par défaut:true
last_frame_image_urlstringURL d'image de dernière image publique ; nécessite first_frame_image_url.
modelstringIdentifiant de modèle RunAPI.
output_formatstringFormat de conteneur vidéo de sortie.
Valeurs autorisées:mp4, mov
Par défaut: mp4
output_resolutionstringRésolution vidéo de sortie.
Valeurs autorisées:480p, 720p, 1080p
Par défaut: 720p
promptstringPrompt de génération vidéo.
Plage:3 - 30000
reference_audio_urlsarrayURLs audio de référence publiques ; jusqu'à 10 fichiers audio.
Limite d'éléments:10
reference_image_urlsarrayURLs d'images de référence publiques ; jusqu'à 30 images.
Limite d'éléments:30
reference_video_urlsarrayURLs de vidéos de référence publiques ; jusqu'à 10 vidéos.
Limite d'éléments:10
return_last_framebooleanIndique si la dernière image de la vidéo générée doit être retournée.
Par défaut:false
web_searchbooleanIndique si le prompt doit être enrichi par une recherche web.
seedance-v1-pro10 champs
aspect_ratiostring1:1, 4:3, 3:4, 16:9, 9:16, 21:9
callback_urlstringduration_secondsinteger5, 10
enable_safety_checkerbooleanfirst_frame_image_urlstringlock_camerabooleanmodelstringoutput_resolutionstring480p, 720p, 1080p
promptstringseedintegerseedance-v1-pro-fast8 champs
callback_urlstringduration_secondsinteger5, 10
enable_safety_checkerbooleanfirst_frame_image_urlstringmodelstringoutput_resolutionstring720p, 1080p
promptstringseedinteger-1 - 2147483647
Règles conditionnelles
Ces exigences s'appliquent lorsque toutes les conditions listées sont réunies.
-
Lorsque
first_frame_image_url = {"present" => true},model = seedance-2.5- Requis
- Non accepté
reference_image_urls,reference_video_urls,reference_audio_urls
-
Lorsque
last_frame_image_url = {"present" => true},model = seedance-2.5- Requis
first_frame_image_url- Non accepté
reference_image_urls,reference_video_urls,reference_audio_urls
-
Lorsque
model = seedance-1.5-pro- Requis
- Non accepté
first_frame_image_url,last_frame_image_url,reference_image_urls,reference_video_urls,reference_audio_urls,web_search,return_last_frame,output_format
-
Lorsque
model = seedance-2-mini- Requis
- Non accepté
source_image_urls,lock_camera,seed,enable_safety_checker,return_last_frame,output_format
-
Lorsque
model = seedance-2.0- Requis
- Non accepté
source_image_urls,lock_camera,seed,return_last_frame,output_format
-
Lorsque
model = seedance-2.0-fast- Requis
- Non accepté
source_image_urls,lock_camera,seed,return_last_frame,output_format
-
Lorsque
model = seedance-2.5- Requis
- Non accepté
source_image_urls,lock_camera,seed
-
Lorsque
model = seedance-v1-pro- Requis
- Non accepté
source_image_urls,last_frame_image_url,reference_image_urls,reference_video_urls,reference_audio_urls,web_search,generate_audio,return_last_frame,output_format
-
Lorsque
model = seedance-v1-pro-fast- Requis
- Non accepté
aspect_ratio,source_image_urls,lock_camera,last_frame_image_url,reference_image_urls,reference_video_urls,reference_audio_urls,web_search,generate_audio,return_last_frame,output_format
Créer une acceptation
POST /api/v1/seedance/text_to_video
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"id": {
"type": "string"
},
"status": {
"enum": [
"processing"
],
"type": "string"
},
"task_replayed": {
"type": "boolean"
}
},
"required": [
"id",
"status",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "processing"
}
Interrogation en cours
GET /api/v1/seedance/text_to_video/:id
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"id": {
"type": "string"
},
"status": {
"enum": [
"processing"
],
"type": "string"
}
},
"required": [
"id",
"status",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "processing"
}
Interrogation terminée
GET /api/v1/seedance/text_to_video/:id
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"id": {
"type": "string"
},
"last_frame_image_url": {
"type": "string",
"x-runapi-generated-media": true
},
"status": {
"enum": [
"completed"
],
"type": "string"
},
"videos": {
"items": {
"properties": {
"url": {
"type": "string",
"x-runapi-generated-media": true
}
},
"required": [
"url"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
}
},
"required": [
"id",
"status",
"videos",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "completed",
"videos": [
{
"url": "https://file.runapi.ai/reference-video.mp4"
}
]
}
Échec de l'interrogation
GET /api/v1/seedance/text_to_video/:id
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"error": {
"type": "string"
},
"id": {
"type": "string"
},
"status": {
"enum": [
"failed"
],
"type": "string"
}
},
"required": [
"id",
"status",
"error",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"error": "Task processing failed.",
"id": "tsk_reference_demo",
"status": "failed"
}
Rappel client : terminé
POST callback_url
Schéma de réponse
{
"properties": {
"id": {
"type": "string"
},
"last_frame_image_url": {
"type": "string",
"x-runapi-generated-media": true
},
"status": {
"enum": [
"completed"
],
"type": "string"
},
"videos": {
"items": {
"properties": {
"url": {
"type": "string",
"x-runapi-generated-media": true
}
},
"required": [
"url"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
}
},
"required": [
"id",
"status",
"videos"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"id": "tsk_reference_demo",
"status": "completed",
"videos": [
{
"url": "https://file.runapi.ai/reference-video.mp4"
}
]
}
Rappel client : échoué
POST callback_url
Schéma de réponse
{
"properties": {
"error": {
"oneOf": [
{
"type": "string"
},
{
"properties": {
"code": {
"type": "string"
},
"limit_cents": {
"type": "integer"
},
"message": {
"type": "string"
},
"reset_at": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"used_cents": {
"type": "integer"
},
"window": {
"enum": [
"1h",
"1d",
"7d",
"daily",
"weekly",
"monthly",
"lifetime"
],
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object",
"unevaluatedProperties": false
}
]
},
"id": {
"type": "string"
},
"status": {
"enum": [
"failed"
],
"type": "string"
}
},
"required": [
"id",
"status",
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": {
"code": "generation_failed",
"message": "Task processing failed."
},
"id": "tsk_reference_demo",
"status": "failed"
}
Erreurs
POST /api/v1/seedance/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Authentication required"
}
Erreurs
GET /api/v1/seedance/text_to_video/:id
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Authentication required"
}
Erreurs
POST /api/v1/seedance/text_to_video
Schéma de réponse
{
"oneOf": [
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
},
{
"properties": {
"error": {
"description": "Résumé de validation lisible par l'humain.",
"type": "string"
},
"errors": {
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"description": "Messages de validation indexés par champ de requête public, avec un tableau de chaînes lisibles par l'humain pour chaque champ.",
"type": "object"
}
},
"required": [
"error",
"errors"
],
"type": "object",
"unevaluatedProperties": false
}
]
}
Exemple de réponse
{
"error": "model must be one of: seedance-1.5-pro, seedance-2-mini, seedance-2.0, seedance-2.0-fast, seedance-2.5, seedance-v1-pro, seedance-v1-pro-fast"
}
Erreurs
POST /api/v1/seedance/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Insufficient balance"
}
Erreurs
POST /api/v1/seedance/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "API key credit limit exceeded"
}
Erreurs
POST /api/v1/seedance/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "The request uses features that are not supported for the selected model"
}
Erreurs
POST /api/v1/seedance/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Rate limit reached. Please retry later."
}
Erreurs
POST /api/v1/seedance/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Service under maintenance, please try again later"
}
Erreurs
POST /api/v1/seedance/text_to_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "The request timed out"
}
Erreurs
GET /api/v1/seedance/text_to_video/:id
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Task with id 'tsk_reference_demo' not found"
}
Exemples de code générés
Utilisez directement cURL, ou installez un SDK pour votre langage. Chaque exemple soumet la requête validée indiquée dans cette référence.
Installer
pip install runapi-seedance
import os
from runapi.seedance import SeedanceClient
client = SeedanceClient(api_key=os.environ["RUNAPI_API_KEY"])
task = client.text_to_video.create(
model="seedance-1.5-pro",
duration_seconds=5,
prompt="A time-lapse of clouds moving over a mountain lake."
)