Aller au contenu
Référence API
Référence API

Seedance Texte en vidéo

Utilisez le point de terminaison texte vers vidéo pour créer une tâche asynchrone.

01

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

  1. Créez une clé API et définissez-la comme RUNAPI_API_KEY.
  2. Choisissez un modèle pris en charge et envoyez une requête POST dont le corps correspond au schéma de ce modèle.
  3. 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

POST /api/v1/seedance/text_to_video
URL de base
https://runapi.ai
Version de l'API
v1
Authentification
Authorization: Bearer YOUR_API_TOKEN
02

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.

03

Schéma de requête

Corps JSON

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_ratiostring
Optionnel Valeurs autorisées: 1:1, 4:3, 3:4, 16:9, 9:16, 21:9
callback_urlstring
Optionnel
duration_secondsinteger
Requis Plage: 4 - 12
enable_safety_checkerboolean
Optionnel
generate_audioboolean
Optionnel
lock_cameraboolean
Optionnel
modelstring
Optionnel
output_resolutionstring
Optionnel Valeurs autorisées: 480p, 720p, 1080p
promptstring
Optionnel
seedinteger
Optionnel Plage: -1 - 2147483647
source_image_urlsarray
Optionnel Limite d'éléments: 2
seedance-2-mini13 champs
aspect_ratiostring
Optionnel Valeurs autorisées: 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, auto
callback_urlstring
Optionnel
duration_secondsinteger
Optionnel Par défaut: 5 Plage: 4 - 15
first_frame_image_urlstring
Optionnel
generate_audioboolean
Optionnel
last_frame_image_urlstring
Optionnel
modelstring
Optionnel
output_resolutionstring
Optionnel Valeurs autorisées: 480p, 720p
promptstring
Optionnel
reference_audio_urlsarray
Optionnel Limite d'éléments: 3
reference_image_urlsarray
Optionnel Limite d'éléments: 9
reference_video_urlsarray
Optionnel Limite d'éléments: 3
web_searchboolean
Optionnel
seedance-2.014 champs
aspect_ratiostring
Optionnel Valeurs autorisées: 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, auto
callback_urlstring
Optionnel
duration_secondsinteger
Optionnel Par défaut: 5 Plage: 4 - 15
enable_safety_checkerboolean
Optionnel
first_frame_image_urlstring
Optionnel
generate_audioboolean
Optionnel
last_frame_image_urlstring
Optionnel
modelstring
Optionnel
output_resolutionstring
Optionnel Valeurs autorisées: 480p, 720p, 1080p, 4k
promptstring
Optionnel
reference_audio_urlsarray
Optionnel Limite d'éléments: 3
reference_image_urlsarray
Optionnel Limite d'éléments: 9
reference_video_urlsarray
Optionnel Limite d'éléments: 3
web_searchboolean
Optionnel
seedance-2.0-fast14 champs
aspect_ratiostring
Optionnel Valeurs autorisées: 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, auto
callback_urlstring
Optionnel
duration_secondsinteger
Optionnel Par défaut: 5 Plage: 4 - 15
enable_safety_checkerboolean
Optionnel
first_frame_image_urlstring
Optionnel
generate_audioboolean
Optionnel
last_frame_image_urlstring
Optionnel
modelstring
Optionnel
output_resolutionstring
Optionnel Valeurs autorisées: 480p, 720p
promptstring
Optionnel
reference_audio_urlsarray
Optionnel Limite d'éléments: 3
reference_image_urlsarray
Optionnel Limite d'éléments: 9
reference_video_urlsarray
Optionnel Limite d'éléments: 3
web_searchboolean
Optionnel
seedance-2.516 champs
aspect_ratiostring
Optionnel

Ratio 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_urlstring
Optionnel

URL de webhook pour les mises à jour de tâches asynchrones.

duration_secondsinteger
Optionnel

Duré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_checkerboolean
Optionnel

Indique si RunAPI vérifie le contenu généré pour la sécurité.

first_frame_image_urlstring
Optionnel

URL d'image de première image publique pour la génération guidée par images.

generate_audioboolean
Optionnel

Indique si un audio synchronisé doit être généré.

Par défaut: true
last_frame_image_urlstring
Optionnel

URL d'image de dernière image publique ; nécessite first_frame_image_url.

modelstring
Requis

Identifiant de modèle RunAPI.

output_formatstring
Optionnel

Format de conteneur vidéo de sortie.

Valeurs autorisées: mp4, mov Par défaut: mp4
output_resolutionstring
Optionnel

Résolution vidéo de sortie.

Valeurs autorisées: 480p, 720p, 1080p Par défaut: 720p
promptstring
Requis

Prompt de génération vidéo.

Plage: 3 - 30000
reference_audio_urlsarray
Optionnel

URLs audio de référence publiques ; jusqu'à 10 fichiers audio.

Limite d'éléments: 10
reference_image_urlsarray
Optionnel

URLs d'images de référence publiques ; jusqu'à 30 images.

Limite d'éléments: 30
reference_video_urlsarray
Optionnel

URLs de vidéos de référence publiques ; jusqu'à 10 vidéos.

Limite d'éléments: 10
return_last_frameboolean
Optionnel

Indique si la dernière image de la vidéo générée doit être retournée.

Par défaut: false
web_searchboolean
Optionnel

Indique si le prompt doit être enrichi par une recherche web.

seedance-v1-pro10 champs
aspect_ratiostring
Optionnel Valeurs autorisées: 1:1, 4:3, 3:4, 16:9, 9:16, 21:9
callback_urlstring
Optionnel
duration_secondsinteger
Requis Valeurs autorisées: 5, 10
enable_safety_checkerboolean
Optionnel
first_frame_image_urlstring
Optionnel
lock_cameraboolean
Optionnel
modelstring
Optionnel
output_resolutionstring
Optionnel Valeurs autorisées: 480p, 720p, 1080p
promptstring
Optionnel
seedinteger
Optionnel
seedance-v1-pro-fast8 champs
callback_urlstring
Optionnel
duration_secondsinteger
Requis Valeurs autorisées: 5, 10
enable_safety_checkerboolean
Optionnel
first_frame_image_urlstring
Requis
modelstring
Optionnel
output_resolutionstring
Optionnel Valeurs autorisées: 720p, 1080p
promptstring
Optionnel
seedinteger
Optionnel Plage: -1 - 2147483647

Règles conditionnelles

Ces exigences s'appliquent lorsque toutes les conditions listées sont réunies.

  1. Lorsque first_frame_image_url = {"present" => true}, model = seedance-2.5
    Requis
    Non accepté
    reference_image_urls, reference_video_urls, reference_audio_urls
  2. 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
  3. 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
  4. Lorsque model = seedance-2-mini
    Requis
    Non accepté
    source_image_urls, lock_camera, seed, enable_safety_checker, return_last_frame, output_format
  5. Lorsque model = seedance-2.0
    Requis
    Non accepté
    source_image_urls, lock_camera, seed, return_last_frame, output_format
  6. Lorsque model = seedance-2.0-fast
    Requis
    Non accepté
    source_image_urls, lock_camera, seed, return_last_frame, output_format
  7. Lorsque model = seedance-2.5
    Requis
    Non accepté
    source_image_urls, lock_camera, seed
  8. 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
  9. 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
04

Créer une acceptation

HTTP 202

POST /api/v1/seedance/text_to_video

Schéma de réponse
JSON
{
  "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

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "status": "processing"
}
05

Interrogation en cours

HTTP 200

GET /api/v1/seedance/text_to_video/:id

Schéma de réponse
JSON
{
  "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

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "status": "processing"
}
06

Interrogation terminée

HTTP 200

GET /api/v1/seedance/text_to_video/:id

Schéma de réponse
JSON
{
  "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

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "status": "completed",
  "videos": [
    {
      "url": "https://file.runapi.ai/reference-video.mp4"
    }
  ]
}
07

Échec de l'interrogation

HTTP 200

GET /api/v1/seedance/text_to_video/:id

Schéma de réponse
JSON
{
  "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

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "error": "Task processing failed.",
  "id": "tsk_reference_demo",
  "status": "failed"
}
08

Rappel client : terminé

HTTP 200

POST callback_url

Schéma de réponse
JSON
{
  "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

JSON
{
  "id": "tsk_reference_demo",
  "status": "completed",
  "videos": [
    {
      "url": "https://file.runapi.ai/reference-video.mp4"
    }
  ]
}
09

Rappel client : échoué

HTTP 200

POST callback_url

Schéma de réponse
JSON
{
  "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

JSON
{
  "error": {
    "code": "generation_failed",
    "message": "Task processing failed."
  },
  "id": "tsk_reference_demo",
  "status": "failed"
}
10

Erreurs

HTTP 401

POST /api/v1/seedance/text_to_video

Schéma de réponse
JSON
{
  "properties": {
    "error": {
      "description": "Message d'erreur lisible par l'humain.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Exemple de réponse

JSON
{
  "error": "Authentication required"
}
11

Erreurs

HTTP 401

GET /api/v1/seedance/text_to_video/:id

Schéma de réponse
JSON
{
  "properties": {
    "error": {
      "description": "Message d'erreur lisible par l'humain.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Exemple de réponse

JSON
{
  "error": "Authentication required"
}
12

Erreurs

HTTP 400

POST /api/v1/seedance/text_to_video

Schéma de réponse
JSON
{
  "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

JSON
{
  "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"
}
13

Erreurs

HTTP 402

POST /api/v1/seedance/text_to_video

Schéma de réponse
JSON
{
  "properties": {
    "error": {
      "description": "Message d'erreur lisible par l'humain.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Exemple de réponse

JSON
{
  "error": "Insufficient balance"
}
14

Erreurs

HTTP 429

POST /api/v1/seedance/text_to_video

Schéma de réponse
JSON
{
  "properties": {
    "error": {
      "description": "Message d'erreur lisible par l'humain.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Exemple de réponse

JSON
{
  "error": "API key credit limit exceeded"
}
15

Erreurs

HTTP 409

POST /api/v1/seedance/text_to_video

Schéma de réponse
JSON
{
  "properties": {
    "error": {
      "description": "Message d'erreur lisible par l'humain.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Exemple de réponse

JSON
{
  "error": "The request uses features that are not supported for the selected model"
}
16

Erreurs

HTTP 429

POST /api/v1/seedance/text_to_video

Schéma de réponse
JSON
{
  "properties": {
    "error": {
      "description": "Message d'erreur lisible par l'humain.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Exemple de réponse

JSON
{
  "error": "Rate limit reached. Please retry later."
}
17

Erreurs

HTTP 503

POST /api/v1/seedance/text_to_video

Schéma de réponse
JSON
{
  "properties": {
    "error": {
      "description": "Message d'erreur lisible par l'humain.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Exemple de réponse

JSON
{
  "error": "Service under maintenance, please try again later"
}
18

Erreurs

HTTP 504

POST /api/v1/seedance/text_to_video

Schéma de réponse
JSON
{
  "properties": {
    "error": {
      "description": "Message d'erreur lisible par l'humain.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Exemple de réponse

JSON
{
  "error": "The request timed out"
}
19

Erreurs

HTTP 404

GET /api/v1/seedance/text_to_video/:id

Schéma de réponse
JSON
{
  "properties": {
    "error": {
      "description": "Message d'erreur lisible par l'humain.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Exemple de réponse

JSON
{
  "error": "Task with id 'tsk_reference_demo' not found"
}
20

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

Shell
pip install runapi-seedance
PYTHON
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."
)