curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "wan2.6-image-to-video-flash",
"prompt": "Eine Katze spielt Klavier"
}
'import requests
url = "https://api.evolink.ai/v1/videos/generations"
payload = {
"model": "wan2.6-image-to-video-flash",
"prompt": "Eine Katze spielt Klavier"
}
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: 'wan2.6-image-to-video-flash', prompt: 'Eine Katze spielt Klavier'})
};
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' => 'wan2.6-image-to-video-flash',
'prompt' => 'Eine Katze spielt Klavier'
]),
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\": \"wan2.6-image-to-video-flash\",\n \"prompt\": \"Eine Katze spielt Klavier\"\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\": \"wan2.6-image-to-video-flash\",\n \"prompt\": \"Eine Katze spielt Klavier\"\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\": \"wan2.6-image-to-video-flash\",\n \"prompt\": \"Eine Katze spielt Klavier\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1757169743,
"id": "task-unified-1757169743-7cvnl5zw",
"model": "wan2.6-image-to-video-flash",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 120
},
"type": "video",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 5,
"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: wan2.6-image-to-video-flash",
"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"
}
}Wan2.6 Bild-zu-Video Flash
- Das WAN2.6 Flash (wan2.6-image-to-video-flash)-Modell unterstützt die Erstbild-zu-Video-Generierung mit höherer Geschwindigkeit
- Asynchroner Verarbeitungsmodus, verwenden Sie die zurückgegebene Task-ID zum Status abfragen
- Generierte Video-Links sind 24 Stunden gültig, bitte speichern Sie diese umgehend
curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "wan2.6-image-to-video-flash",
"prompt": "Eine Katze spielt Klavier"
}
'import requests
url = "https://api.evolink.ai/v1/videos/generations"
payload = {
"model": "wan2.6-image-to-video-flash",
"prompt": "Eine Katze spielt Klavier"
}
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: 'wan2.6-image-to-video-flash', prompt: 'Eine Katze spielt Klavier'})
};
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' => 'wan2.6-image-to-video-flash',
'prompt' => 'Eine Katze spielt Klavier'
]),
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\": \"wan2.6-image-to-video-flash\",\n \"prompt\": \"Eine Katze spielt Klavier\"\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\": \"wan2.6-image-to-video-flash\",\n \"prompt\": \"Eine Katze spielt Klavier\"\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\": \"wan2.6-image-to-video-flash\",\n \"prompt\": \"Eine Katze spielt Klavier\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1757169743,
"id": "task-unified-1757169743-7cvnl5zw",
"model": "wan2.6-image-to-video-flash",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 120
},
"type": "video",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 5,
"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: wan2.6-image-to-video-flash",
"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"
}
}Autorisierungen
##Alle APIs erfordern Bearer Token-Authentifizierung##
API-Schlüssel erhalten:
Besuchen Sie die API-Schlüsselverwaltungsseite, um Ihren API-Schlüssel zu erhalten
Zum Request-Header hinzufügen:
Authorization: Bearer YOUR_API_KEY
Body
Modellname
wan2.6-image-to-video-flash "wan2.6-image-to-video-flash"
Prompt, der das gewünschte Video beschreibt, begrenzt auf 1500 Zeichen
1500"Eine Katze spielt Klavier"
Referenzbild-URL-Liste für die Erstbild-zu-Video-Generierung
Hinweis:
- Anzahl der Bilder pro Anfrage:
1Bild - Bildgröße: nicht mehr als
10MB - Unterstützte Bildformate:
.jpeg,.jpg,.png(keine Transparenz),.bmp,.webp - Bildauflösung: Breite und Höhe im Bereich
[360, 2000]Pixel - Bild-URL muss direkt anzeigbar oder herunterladbar sein (typischerweise URLs, die mit Bilderweiterungen wie
.png,.jpgenden)
1["https://example.com/image1.png"]
Gibt die Dauer des generierten Videos an (in Sekunden)
Hinweis:
- Unterstützt beliebige ganzzahlige Werte zwischen
2~15Sekunden - Jede Anfrage wird basierend auf dem
duration-Wert vorab berechnet, die tatsächliche Abrechnung erfolgt anhand der generierten Videodauer
2 <= x <= 155
Videoqualität, Standard ist 720p
Optionen:
720p: Standardqualität, Standardpreis, dies ist der Standard1080p: Hohe Qualität, höherer Preis
"720p"
Ob intelligentes Prompt-Umschreiben aktiviert werden soll. Wenn aktiviert, wird ein großes Modell verwendet, um den Prompt zu optimieren, besonders effektiv für einfache oder unzureichend beschreibende Prompts. Standard ist true
true
Modellparameterkonfiguration
Show child attributes
Show child attributes
Audio-Datei-URL, das Modell wird dieses Audio verwenden, um das Video zu generieren
Formatanforderungen:
- Unterstütztes Format:
mp3 - Dauerbereich:
3~30Sekunden - Dateigröße: nicht mehr als
15MB
Überlaufbehandlung:
- Wenn die Audiolänge den
duration-Wert (5 oder 10 Sekunden) überschreitet, werden automatisch die ersten 5 oder 10 Sekunden abgeschnitten, der Rest wird verworfen - Wenn die Audiolänge kürzer als die Videodauer ist, ist der Teil über die Audiolänge hinaus stumm. Zum Beispiel, wenn das Audio 3 Sekunden beträgt und die Videodauer 5 Sekunden, hat das Ausgabevideo die ersten 3 Sekunden Ton und die letzten 2 Sekunden sind stumm
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/xxx.mp3"
Ob Audio generiert werden soll, Standard ist true
Optionen:
true: Video mit Audio generieren, höherer Preisfalse: Video ohne Audio generieren, niedrigerer Preis
true
HTTPS-Callback-URL für Task-Abschluss
Callback-Zeitpunkt:
- Wird ausgelöst, wenn die Task abgeschlossen, fehlgeschlagen oder abgebrochen wurde
- Wird nach Abschluss der Abrechnungsbestätigung gesendet
Sicherheitsbeschränkungen:
- Nur HTTPS-Protokoll unterstützt
- Kein Callback an interne IP-Adressen (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
- URL-Länge nicht mehr als
2048Zeichen
Callback-Mechanismus:
- Timeout:
10Sekunden - Maximal
3Wiederholungen bei Fehler (Wiederholungen bei1/2/4Sekunden nach Fehler) - Callback-Antwortformat ist konsistent mit Task-Abfrage-API-Antwort
- Callback-URL, die 2xx-Statuscode zurückgibt, gilt als erfolgreich, andere Statuscodes lösen Wiederholungen aus
"https://your-domain.com/webhooks/video-task-completed"
Antwort
Video-Task erfolgreich erstellt
Task-Erstellungszeitstempel
1757169743
Task-ID
"task-unified-1757169743-7cvnl5zw"
Tatsächlich verwendeter Modellname
"wan2.6-image-to-video-flash"
Spezifischer Task-Typ
video.generation.task Task-Fortschritt in Prozent (0-100)
0 <= x <= 1000
Task-Status
pending, processing, completed, failed "pending"
Video-Task-Details
Show child attributes
Show child attributes
Task-Ausgabetyp
text, image, audio, video "video"
Nutzungs- und Abrechnungsinformationen
Show child attributes
Show child attributes