curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "wan2.6-text-to-video",
"prompt": "A cat playing piano"
}
'import requests
url = "https://api.evolink.ai/v1/videos/generations"
payload = {
"model": "wan2.6-text-to-video",
"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: 'wan2.6-text-to-video', 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' => 'wan2.6-text-to-video',
'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\": \"wan2.6-text-to-video\",\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\": \"wan2.6-text-to-video\",\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\": \"wan2.6-text-to-video\",\n \"prompt\": \"A cat playing piano\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1757169743,
"id": "task-unified-1757169743-7cvnl5zw",
"model": "wan2.6-text-to-video",
"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-text-to-video",
"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 Text-zu-Video
- WAN2.6 (wan2.6-text-to-video) Modell unterstützt Text-zu-Video-Generierung
- Asynchroner Verarbeitungsmodus, verwenden Sie die zurückgegebene Aufgaben-ID, um den Status abzufragen
- 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-text-to-video",
"prompt": "A cat playing piano"
}
'import requests
url = "https://api.evolink.ai/v1/videos/generations"
payload = {
"model": "wan2.6-text-to-video",
"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: 'wan2.6-text-to-video', 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' => 'wan2.6-text-to-video',
'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\": \"wan2.6-text-to-video\",\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\": \"wan2.6-text-to-video\",\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\": \"wan2.6-text-to-video\",\n \"prompt\": \"A cat playing piano\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1757169743,
"id": "task-unified-1757169743-7cvnl5zw",
"model": "wan2.6-text-to-video",
"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-text-to-video",
"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üssel-Verwaltungsseite, um Ihren API-Schlüssel zu erhalten
Zum Anfrage-Header hinzufügen:
Authorization: Bearer YOUR_API_KEY
Body
Modellname
wan2.6-text-to-video "wan2.6-text-to-video"
Prompt zur Beschreibung des zu generierenden Videos, begrenzt auf 1500 Zeichen
1500"A cat playing piano"
Video-Seitenverhältnis, Standard ist 16:9
Optionen:
720p: Unterstützt16:9(Querformat),9:16(Hochformat),1:1(Quadrat),4:3,3:41080p: Unterstützt16:9(Querformat),9:16(Hochformat),1:1(Quadrat),4:3,3:4
"16:9"
Videoqualität, Standard ist 720p
Optionen:
720p: Standardauflösung, Standardpreis, dies ist die Voreinstellung1080p: Hohe Auflösung, höherer Preis
Hinweis: Verschiedene Qualitätsstufen unterstützen unterschiedliche Seitenverhältnisse, siehe Parameter aspect_ratio
"720p"
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
Ob intelligentes Prompt-Umschreiben aktiviert werden soll. Wenn aktiviert, optimiert ein großes Modell den Prompt, was die Ergebnisse bei einfachen oder unzureichend beschreibenden Prompts erheblich verbessert. Standard ist true
true
Modellparameterkonfiguration
Show child attributes
Show child attributes
Audio-Datei-URL. Das Modell verwendet dieses Audio zur Videogenerierung.
Formatanforderungen:
- Unterstütztes Format:
mp3 - Dauer:
3~30Sekunden - Dateigröße: Bis zu
15MB
Überlaufbehandlung:
- Wenn die Audiolänge den
duration-Wert (5 oder 10 Sekunden) überschreitet, werden die ersten 5 oder 10 Sekunden automatisch extrahiert und der Rest verworfen - Wenn die Audiolänge kürzer als die Videodauer ist, ist der Teil, der die Audiolänge überschreitet, stumm. Wenn das Audio beispielsweise 3 Sekunden und die Videodauer 5 Sekunden beträgt, hat das Ausgabevideo in den ersten 3 Sekunden Ton und ist in den letzten 2 Sekunden stumm
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/xxx.mp3"
HTTPS-Callback-URL für Aufgabenabschluss
Callback-Zeitpunkt:
- Wird ausgelöst, wenn die Aufgabe abgeschlossen, fehlgeschlagen oder abgebrochen wurde
- Wird nach Abrechnungsbestätigung gesendet
Sicherheitsbeschränkungen:
- Nur HTTPS-Protokoll wird unterstützt
- Callbacks an interne IP-Adressen sind untersagt (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, usw.)
- URL-Länge darf
2048Zeichen nicht überschreiten
Callback-Mechanismus:
- Timeout:
10Sekunden - Bis zu
3Wiederholungsversuche nach Fehlschlag (Wiederholung nach1/2/4Sekunden nach Fehlschlag) - Das Callback-Antwortformat entspricht der Antwort der Aufgabenabfrage-API
- 2xx-Statuscodes gelten als erfolgreich, andere Statuscodes lösen Wiederholungsversuche aus
"https://your-domain.com/webhooks/video-task-completed"
Antwort
Videoaufgabe erfolgreich erstellt
Zeitstempel der Aufgabenerstellung
1757169743
Aufgaben-ID
"task-unified-1757169743-7cvnl5zw"
Tatsächlich verwendeter Modellname
"wan2.6-text-to-video"
Aufgabentyp
video.generation.task Aufgabenfortschritt in Prozent (0-100)
0 <= x <= 1000
Aufgabenstatus
pending, processing, completed, failed "pending"
Details zur Videoaufgabe
Show child attributes
Show child attributes
Aufgaben-Ausgabetyp
text, image, audio, video "video"
Nutzungs- und Abrechnungsinformationen
Show child attributes
Show child attributes