doubao-seedance-1.0-pro-fast API
curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "doubao-seedance-1.0-pro-fast",
"prompt": "A cat playing piano"
}
'import requests
url = "https://api.evolink.ai/v1/videos/generations"
payload = {
"model": "doubao-seedance-1.0-pro-fast",
"prompt": "A cat playing piano"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({model: 'doubao-seedance-1.0-pro-fast', prompt: 'A cat playing piano'})
};
fetch('https://api.evolink.ai/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.evolink.ai/v1/videos/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'doubao-seedance-1.0-pro-fast',
'prompt' => 'A cat playing piano'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.evolink.ai/v1/videos/generations"
payload := strings.NewReader("{\n \"model\": \"doubao-seedance-1.0-pro-fast\",\n \"prompt\": \"A cat playing piano\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.evolink.ai/v1/videos/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"doubao-seedance-1.0-pro-fast\",\n \"prompt\": \"A cat playing piano\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/videos/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"doubao-seedance-1.0-pro-fast\",\n \"prompt\": \"A cat playing piano\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1761313744,
"id": "task-unified-1761313744-vux2jw0k",
"model": "doubao-seedance-1.0-pro-fast",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 165,
"video_duration": 8
},
"type": "video",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 8,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: doubao-seedance-1.0-pro-fast",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Seedance 1.0 Pro Fast
Seedance-1.0-Pro-Fast Génération vidéo
- Le modèle Seedance 1.0 Pro Fast (doubao-seedance-1.0-pro-fast) prend en charge plusieurs modes de génération, notamment texte-vers-vidéo et image-vers-vidéo
- Mode de traitement asynchrone, utilisez l’ID de tâche retourné pour consulter le statut
- Les liens vidéo générés sont valides pendant 24 heures, veuillez les sauvegarder rapidement
POST
/
v1
/
videos
/
generations
doubao-seedance-1.0-pro-fast API
curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "doubao-seedance-1.0-pro-fast",
"prompt": "A cat playing piano"
}
'import requests
url = "https://api.evolink.ai/v1/videos/generations"
payload = {
"model": "doubao-seedance-1.0-pro-fast",
"prompt": "A cat playing piano"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({model: 'doubao-seedance-1.0-pro-fast', prompt: 'A cat playing piano'})
};
fetch('https://api.evolink.ai/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.evolink.ai/v1/videos/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'doubao-seedance-1.0-pro-fast',
'prompt' => 'A cat playing piano'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.evolink.ai/v1/videos/generations"
payload := strings.NewReader("{\n \"model\": \"doubao-seedance-1.0-pro-fast\",\n \"prompt\": \"A cat playing piano\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.evolink.ai/v1/videos/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"doubao-seedance-1.0-pro-fast\",\n \"prompt\": \"A cat playing piano\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/videos/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"doubao-seedance-1.0-pro-fast\",\n \"prompt\": \"A cat playing piano\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1761313744,
"id": "task-unified-1761313744-vux2jw0k",
"model": "doubao-seedance-1.0-pro-fast",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 165,
"video_duration": 8
},
"type": "video",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 8,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: doubao-seedance-1.0-pro-fast",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Autorisations
##Toutes les API nécessitent une authentification Bearer Token##
Obtenir une clé API :
Visitez la Page de gestion des clés API pour obtenir votre clé API
Ajouter à l'en-tête de requête :
Authorization: Bearer YOUR_API_KEY
Corps
application/json
Spécifie la durée de la vidéo générée (en secondes), par défaut 5 secondes
Note :
- Prend en charge toute valeur entière entre
2et12secondes - La facturation d'une requête est basée sur la valeur de
duration; des durées plus longues entraînent des coûts plus élevés
Plage requise:
2 <= x <= 12Rapport d'aspect vidéo
Mode texte-vers-vidéo :
- Valeur par défaut :
16:9 - Valeurs prises en charge :
16:9(paysage),9:16(portrait),1:1(carré),4:3,3:4,21:9(ultra-large)
Mode image-vers-vidéo (lors de l'utilisation de image_urls) :
- Valeur par défaut :
adaptive - Valeurs prises en charge : En plus des 6 rapports ci-dessus, prend également en charge
keep_ratio(conserver le rapport d'aspect original) etadaptive(adaptatif)
Exemple:
"16:9"
Liste d'URLs d'images de référence pour la fonctionnalité image-vers-vidéo
Note :
- Nombre d'images prises en charge par requête :
1image - Taille de l'image : Ne dépassant pas
10MB - Formats de fichiers pris en charge :
.jpg,.jpeg,.png,.webp - Les URLs des images doivent être directement consultables par le serveur, ou l'URL doit déclencher un téléchargement direct lors de l'accès (généralement ces URLs se terminent par des extensions d'image comme
.png,.jpg)
Maximum array length:
1Exemple:
["https://example.com/image.jpg"]
URL de rappel HTTPS après l'achèvement de la tâche
Moment du rappel :
- Déclenché lorsque la tâche est terminée, échouée ou annulée
- Envoyé après la confirmation de la facturation
Restrictions de sécurité :
- Seul le protocole HTTPS est pris en charge
- Les rappels vers les adresses IP du réseau interne sont interdits (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
- La longueur de l'URL ne doit pas dépasser
2048caractères
Mécanisme de rappel :
- Délai d'expiration :
10secondes - Maximum de
3tentatives après échec (les tentatives ont lieu après1/2/4secondes suivant l'échec) - Le format du corps de réponse du rappel est cohérent avec le format de réponse de l'API de consultation de tâche
- Un code de statut 2xx retourné par l'URL de rappel est considéré comme réussi ; les autres codes de statut déclencheront des tentatives
Exemple:
"https://your-domain.com/webhooks/video-task-completed"
Réponse
Tâche de génération vidéo créée avec succès