seedintegerOptional0 bis 2147483647. Festhalten, während Sie Auflösung oder Dauer abstimmen, sonst ändert jede Wiederholung zwei Dinge gleichzeitig.
- Standardwert
- Nicht festgelegt
- Einschränkungen
- minimum:0maximum:2147483647
Wan 3.0 Pro Prime Referenz-zu-Video fixiert Gesicht, Kleidung, Set, Bewegung oder Stimme mit bis zu 10 Bild-, 5 Video- und 5 Audioreferenzen. Es rendert 2 bis 30 Sekunden in 1080p, 2K oder 4K, darüber aus 1080p hochgerechnet.
Die Beispiele verwenden die öffentlichen Parameter des gewählten Endpunkts. Ersetzen Sie API-Schlüssel und Beispielmedien und senden Sie die Anfrage von Ihrem Server.
SDKs & Integrationenhttps://api.spicyapi.ai/api/v1/jobs/createTaskBewahren Sie den API-Schlüssel serverseitig in der Umgebungsvariablen SPICY_API_KEY auf. Verwenden Sie Bearer-Authentifizierung und für JSON-Anfragen Content-Type: application/json.
Authorization: Bearer $SPICY_API_KEY# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "alibaba/wan-3.0-pro-prime/reference-to-video",
"input": {
"aspect_ratio": "adaptive",
"duration_seconds": 5,
"reference_image_urls": [
"https://example.com/reference.png"
],
"resolution": "1080p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"Erzeugt aus dem Eingabeschema dieses Modells – genau dem, gegen das die API jede Anfrage prüft.
Diese Felder gehören in das input-Objekt des Request-Bodys. Namen und Typen entsprechen der API. Wo kein Standardwert angegeben ist, dürfen Sie auch keinen annehmen.
Zwischen einigen Feldern bestehen Abhängigkeiten: Bedingt erforderliche Felder hängen von anderen Eingaben ab. Die vollständigen Regeln stehen im JSON-Schema weiter unten.
seedintegerOptional0 bis 2147483647. Festhalten, während Sie Auflösung oder Dauer abstimmen, sonst ändert jede Wiederholung zwei Dinge gleichzeitig.
enable_prompt_expansionbooleanOptionalIn dieser Familie standardmäßig an. Sie füllt dünne Briefings auf und schreibt ausführliche um – ausschalten, sobald Ihr Prompt eine präzise Shot-Beschreibung ist. Eine Referenzdatei oder ein Weblink braucht sie eingeschaltet: Lassen Sie sie ungesetzt oder auf true, wenn Sie reference_file_url oder reference_link_url anhängen, weil das Dokument oder die Seite in diesem Schritt gelesen wird. Ein ausdrückliches false zusammen mit Datei oder Link wird abgelehnt.
generate_audiobooleanOptionalStandardmäßig an. Der Ton entsteht zusammen mit dem Bild und kommt in derselben Datei. Auf false setzen, wenn ein Komponist den Spot vertont.
duration_secondsintegerOptionalPreisrelevantJede ganze Zahl von 2 bis 30, Vorgabe 5, oder -1 für die automatische Dauer: Sie reserviert das Maximum und rechnet nach der tatsächlich gelieferten Länge ab. Mit Referenzvideos dürfen deren Gesamtlänge und die Ausgabe zusammen 30 Sekunden nicht überschreiten, und beides wird abgerechnet. Finden Sie die Einstellung bei 5 Sekunden und 1080p, bevor Sie ein langes 4K-Rendering bezahlen.
-123456789101112131415161718192021222324252627282930aspect_ratiostringOptional16:9, 4:3, 1:1, 3:4, 9:16 oder adaptive. Vorgabe ist adaptive, womit das Modell wählt; nennen Sie ein Verhältnis, wenn das Ausgabeformat feststeht.
"16:9""4:3""1:1""3:4""9:16""adaptive"resolutionstringOptionalPreisrelevant1080p, 2k oder 4k, Vorgabe 1080p. Ein natives Wan-3.0-Prime-Rendering reicht höchstens bis 1080p; die Stufen darüber – 2k und 4k – entstehen also durch Vergrößern dieses Renderings und nicht durch natives Rendern in dieser Größe. Die zusätzlichen Pixel stammen aus der Vergrößerung und sind nur so gut wie das Rendering darunter. Stufen mit 480p oder 720p gibt es hier nicht; für diese Größen nehmen Sie Wan 3.0 oder Wan 3.0 Prime.
"1080p""2k""4k"reference_link_urlstringBedingt erforderlichEine öffentliche Webseite, die das Modell als Referenz liest, etwa ein Artikel, eine Produktseite oder ein Charakterprofil. Sie muss sich ohne Login öffnen lassen. Manche Websites sperren automatische Leser, und eine Seite mit zu wenig Text lässt sich nicht verwenden; in beiden Fällen schlägt die Aufgabe mit dem Hinweis fehl, dass die URL nicht gelesen werden konnte, und fehlgeschlagene Aufgaben werden nicht berechnet. Nicht zusammen mit reference_file_url; ist enable_prompt_expansion nicht gesetzt, schaltet auch ein Link die Prompt-Erweiterung ein. Links werden nicht berechnet.
reference_file_urlstringBedingt erforderlichEin Dokument, das das Modell liest, bevor es die Einstellung inszeniert: ein Charakterblatt, ein Skript, eine Shotliste oder ein Produkt-Briefing. PDF, DOCX, DOC, TXT, MD, PPTX, PPT, XLSX, XLS, KEY, PAGES oder NUMBERS, bis 100 MB und 50 Seiten. Es funktioniert allein oder zusammen mit Referenzbildern, -videos und -audio, aber nicht gemeinsam mit reference_link_url. Ist enable_prompt_expansion nicht gesetzt, schaltet eine angehängte Datei die Prompt-Erweiterung für diese Anfrage ein, weil das Dokument über diesen Schritt gelesen wird. Dateien werden nicht berechnet.
reference_audio_urlsarray<string>Bedingt erforderlichBis zu 5 Clips, je 1 bis 15 Sekunden und insgesamt 15 Sekunden – eine Stimme, eine gesprochene Zeile oder ein Raumklang, zu dem die Einstellung passen muss. Referenzaudio wird nicht abgerechnet. WAV oder MP3, 15 MB pro Clip. Wie bei den Videogrenzen wird erst während der Generierung geprüft, nicht bei der Annahme des Auftrags.
reference_video_urlsarray<string>Bedingt erforderlichPreisrelevantBis zu 5 Clips, je 1 bis 15 Sekunden und insgesamt 15 Sekunden. Nutzen Sie sie für Bewegung und Kamerastil, nicht für ein Gesicht. Ihre Länge wird zusammen mit der Ausgabe abgerechnet, und Referenzvideo plus Ausgabe müssen innerhalb von 30 Sekunden bleiben. MP4 oder MOV, mindestens 16 fps, 240 bis 4096 px pro Seite, Seitenverhältnis höchstens 8:1, 100 MB pro Clip. Diese Grenzen werden erst während der Generierung geprüft, nicht bei der Annahme des Auftrags – prüfen Sie die Cliplängen also vor dem Absenden.
reference_image_urlsarray<string>Bedingt erforderlich1 bis 10 Bilder als Plates für Identität, Garderobe und Set. Benennen Sie jedes im Prompt – Figur, Kleidungsstück, Set –, sonst werden sie gemittelt. Referenzbilder werden nicht abgerechnet. JPEG, PNG ohne Transparenz, BMP oder WEBP; 240 bis 8000 px pro Seite, Seitenverhältnis höchstens 8:1, je Bild maximal 20 MB.
promptstringOptionalOptional, aber hier werden die Referenzen voneinander getrennt – welche Platte welche Figur ist, wofür Video und Audio da sind – und die Handlung benannt.
{
"additionalProperties": false,
"anyOf": [
{
"required": [
"reference_image_urls"
]
},
{
"required": [
"reference_video_urls"
]
},
{
"required": [
"reference_audio_urls"
]
},
{
"required": [
"reference_file_url"
]
},
{
"required": [
"reference_link_url"
]
}
],
"properties": {
"aspect_ratio": {
"default": "adaptive",
"description": "Output aspect ratio; adaptive follows the input media and the intent.",
"enum": [
"16:9",
"4:3",
"1:1",
"3:4",
"9:16",
"adaptive"
],
"type": "string",
"x-ui": {
"order": 60,
"widget": "select"
}
},
"duration_seconds": {
"default": 5,
"description": "Output duration in seconds. Pass -1 for smart duration: the model picks the length from the prompt and any input media instead of a fixed number. With reference videos, their total length plus the output length must not exceed 30 seconds, and the reference video seconds are billed together with the output seconds.",
"enum": [
-1,
2,
3,
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
],
"type": "integer",
"x-ui": {
"affects_price": true,
"enum_labels": {
"-1": "Smart"
},
"order": 50,
"widget": "slider"
}
},
"enable_prompt_expansion": {
"default": true,
"description": "Expand the prompt before generation.",
"type": "boolean",
"x-ui": {
"order": 30,
"widget": "switch"
}
},
"generate_audio": {
"default": true,
"description": "Include an audio track in the output.",
"type": "boolean",
"x-ui": {
"order": 40,
"widget": "switch"
}
},
"prompt": {
"description": "Describe the subject, motion and camera.",
"maxLength": 20000,
"minLength": 1,
"type": "string",
"x-ui": {
"order": 100,
"reference_tokens": {
"reference_audio_urls": "Audio {index}",
"reference_image_urls": "Image {index}",
"reference_video_urls": "Video {index}"
},
"widget": "textarea"
}
},
"reference_audio_urls": {
"description": "Reference audio, up to 5 clips of 1 to 15 seconds each and 15 seconds in total.",
"items": {
"contentMediaType": [
"audio/mpeg",
"audio/wav"
],
"format": "uri",
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"type": "array",
"x-ui": {
"max_total_duration_seconds": 15,
"order": 86,
"widget": "multi-upload"
}
},
"reference_file_url": {
"contentMediaType": [
"application/pdf",
"application/msword",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/vnd.ms-powerpoint",
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
"application/vnd.apple.keynote",
"application/vnd.apple.pages",
"application/vnd.apple.numbers",
"text/plain",
"text/markdown"
],
"description": "One reference document (PDF, DOCX, TXT, MD and similar) that the model reads for characters, wardrobe, setting and action.",
"format": "uri",
"type": "string",
"x-ui": {
"order": 76,
"widget": "upload"
}
},
"reference_image_urls": {
"description": "Ordered reference images used to guide the scene.",
"items": {
"contentMediaType": [
"image/jpeg",
"image/png",
"image/webp",
"image/gif"
],
"format": "uri",
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array",
"x-ui": {
"order": 90,
"primary": true,
"widget": "multi-upload"
}
},
"reference_link_url": {
"description": "One public web page the model reads for reference. It must open without a login.",
"format": "uri",
"type": "string",
"x-ui": {
"order": 74,
"placeholder": "https://",
"widget": "text"
}
},
"reference_video_urls": {
"description": "Reference videos, up to 5 clips of 1 to 15 seconds each and 15 seconds in total.",
"items": {
"contentMediaType": [
"video/mp4",
"video/webm",
"video/quicktime"
],
"format": "uri",
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"type": "array",
"x-ui": {
"affects_price": true,
"max_total_duration_seconds": 15,
"order": 88,
"widget": "multi-upload"
}
},
"resolution": {
"default": "1080p",
"description": "Output resolution tier. A native Wan 3.0 Prime render tops out at 1080p; 2k and 4k are enlarged from that render, not rendered natively.",
"enum": [
"1080p",
"2k",
"4k"
],
"type": "string",
"x-ui": {
"affects_price": true,
"order": 70,
"widget": "radio"
}
},
"seed": {
"description": "Random seed. Omit for a generated seed.",
"maximum": 2147483647,
"minimum": 0,
"type": "integer",
"x-ui": {
"order": 10,
"widget": "number"
}
}
},
"type": "object",
"x-pricing": {
"billingMode": "duration_capped",
"variantFields": [
"resolution"
]
}
}HTTP 202 bestätigt die Annahme, nicht den Abschluss. Speichern Sie die zurückgegebene taskId und fragen Sie diesen Auftrag ab. Erstellen Sie währenddessen keinen weiteren Auftrag.
HTTP/1.1 202 Accepted
Location: /api/v1/jobs/recordInfo?taskId=job_01k3m8x9q2z4v7n5p6r8s0t1w3
{
"code": 200,
"msg": "success",
"request_id": "req_example_create",
"data": {
"taskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
"state": "queued",
"estimatedCost": "0.750000"
}
}Diese Antwort enthält bereits die Kostenschätzung, damit Ihre Anwendung in Auftragsverlauf und Abrechnung denselben Betrag anzeigen kann.
curl --get "https://api.spicyapi.ai/api/v1/jobs/recordInfo" \
--data-urlencode "taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"Beginnen Sie mit etwa 2 Sekunden Abstand und verlängern Sie das Intervall schrittweise. Bei einem Endzustand hören Sie auf. Nach einem Verbindungsfehler fragen Sie dieselbe taskId ab. Neu anlegen nur mit demselben Idempotency-Key und demselben Request-Body.
import { verifyWebhook } from "@spicyapi/sdk";
// express.raw keeps the bytes we signed; express.json never matches.
app.post("/hooks/spicy", express.raw({ type: "application/json" }), (req, res) => {
const { payload } = verifyWebhook({
rawBody: req.body,
timestamp: req.header("X-Webhook-Timestamp"),
signature: req.header("X-Webhook-Signature"),
payloadVersion: Number(req.header("X-Webhook-Payload-Version")),
secret: process.env.SPICY_WEBHOOK_SECRET,
});
res.status(200).end();
void handleFinishedTask(payload);
});Übergeben Sie callBackUrl beim Anlegen der Aufgabe, dann wird Ihnen der fertige Datensatz per POST zugestellt — ganz ohne Polling-Schleife. Jede Zustellung trägt X-Webhook-Timestamp, X-Webhook-Signature und X-Webhook-Payload-Version. Die Signatur ist ein base64-HMAC-SHA256 über taskId.timestamp.sha256(body) und muss deshalb gegen die Rohbytes geprüft werden: Wer das JSON parst und neu serialisiert, verändert sie, und die Prüfung schlägt fehl. Fehlgeschlagene Zustellungen werden wiederholt, dieselbe taskId kann also zweimal ankommen — machen Sie den Handler idempotent. Antworten Sie zuerst mit 2xx und arbeiten Sie danach; ein langsamer Handler gilt als fehlgeschlagene Zustellung.
Lesen Sie output erst aus, wenn state den Wert succeeded hat. Nutzen Sie bei Fehlern errorCode, errorMessage und request_id zur Diagnose. Beispielkosten und -zustände bilden keine tatsächliche Abrechnung ab.
{
"code": 200,
"msg": "success",
"request_id": "req_example_record",
"data": {
"taskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
"model": "alibaba/wan-3.0-pro-prime/reference-to-video",
"state": "succeeded",
"output": {
"assets": [
{
"key": "tasks/2026/08/28/job_01k3m8x9q2z4v7n5p6r8s0t1w3/3f7a1c9e5b2d48f0a6c1e3d5b7f9a1c3.mp4",
"mime": "video/mp4",
"url": "https://example.r2.cloudflarestorage.com/results/job_01k3m8x9q2z4v7n5p6r8s0t1w3/result.mp4?X-Amz-Signature=SIGNATURE_FROM_RESPONSE",
"expiresAt": "2026-08-28T12:20:08.000Z"
}
]
},
"cost": "0.750000",
"settled": true,
"createdAt": "2026-08-28T12:00:00Z",
"completedAt": "2026-08-28T12:00:30Z"
}
}Verfügbare Dateien lassen sich direkt über assets[].url ohne API-Authorization-Header öffnen oder herunterladen. Der signierte Link läuft zu expiresAt ab. Fragen Sie den Auftrag innerhalb der Aufbewahrungsfrist erneut ab, um den Link zu erneuern. Noch ausstehende oder nicht verfügbare Dateien haben keine URL. Behandeln Sie signierte Links vertraulich.
Nutzen Sie SpicyAPI in Ihrer App, im Terminal, mit KI-Assistenten oder in visuellen Workflows. Wählen Sie die passende Anleitung.
Weitere Integrationen
Den Code oben müssen Sie nicht schreiben. Verbinden Sie den MCP-Server einmal, und jeder Agent, der MCP spricht — Claude Code, Codex, Cursor, Windsurf, VS Code, Gemini CLI, Cline, LibreChat — ruft dieses Modell beim Namen auf. Oder Sie starten es mit einem einzigen Befehl in der Shell.
Nimm alibaba/wan-3.0-pro-prime/reference-to-video für fünf Sekunden Dachterrasse im Neonlicht der Dämmerung, langsame Fahrt nach vorn, und speichere das Ergebnis in ./out/.
Der Agent schlägt das Modell im Katalog nach, lädt die lokale Datei für Sie hoch und zeigt Ihnen dann den genauen Kostenvoranschlag samt Höchstbetrag — und wartet auf Ihre Bestätigung. Vorher wird nichts abgerechnet.
claude mcp add spicyapi -e SPICY_API_KEY=$SPICY_API_KEY \
-- npx --yes --package=@spicyapi/mcp spicyapi-mcp
npx skills add spicyapi-ai/spicy-skillDie erste Zeile gibt dem Agent die Werkzeuge, die zweite den Skill — die Spielregeln dazu: erst Preis nennen, dann abrechnen; lokale Dateien hochladen statt Bytes einzufügen; die URL des fertigen Ergebnisses lesen statt sie zu raten. Alle anderen Clients binden denselben Server über ihre eigene Konfigurationsdatei ein, siehe Entwicklerbereich.
npx @spicyapi/cli tasks create --model alibaba/wan-3.0-pro-prime/reference-to-video \
--input-json '{"aspect_ratio":"adaptive","duration_seconds":5,"reference_image_urls":["https://example.com/reference.png"],"resolution":"1080p"}' \
--waitDie Eingabe stammt aus dem Schema dieses Endpunkts, genau wie die Beispiele oben. --wait wartet den Task ab und gibt ihn aus; --yes überspringt die Rückfrage in der CI. Setzen Sie vorher SPICY_API_KEY – ein Schlüssel für API, CLI und MCP-Server.
npx @spicyapi/cli tasks create --model alibaba/wan-3.0-pro-prime/reference-to-video \
--input-json '{…}' --retention 1h --wait
npx @spicyapi/cli tasks get $TASK_ID # read back the retention that applied--retention verkürzt die Aufbewahrung nur — 30m, 1h, 7d, oder 0: löschen, sobald die Aufgabe einen Endzustand erreicht. Es gilt immer der kürzeste Wert aus Anfrage, Kontoeinstellung und Plattform-Obergrenze; lesen Sie ihn deshalb aus dem Datensatz zurück, statt den angefragten Wert vorauszusetzen. Ein längeres Fenster als vom Konto erlaubt bewirkt nichts.
Installieren Sie die SpicyAPI-Nodes über den ComfyUI Manager oder mit dem Befehl unten und suchen Sie auf der Arbeitsfläche nach Wan 3.0 Pro Prime · Reference To Video. Der Node bietet dieselben Optionen wie diese Seite und zeigt seinen Preis, bevor er läuft.
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapiDas eingebettete Panel liest dasselbe Schema wie diese Seite und kann daher nicht von der API abweichen. Soll der Inhalt in Ihrer Dokumentation durchsuchbar bleiben, holen Sie stattdessen das JSON unter /api/embed/models/ und rendern es selbst.
<iframe src="https://spicyapi.ai/embed/de/models/wan-3-0-pro-prime/api?model=alibaba%2Fwan-3.0-pro-prime%2Freference-to-video" width="100%" height="560" loading="lazy" title="Anfragebeispiel" style="border:1px solid rgba(0,0,0,.12)"></iframe>