Wan 2.6 Reference-to-Video
curl --request POST \
--url https://api.novita.ai/v3/async/wan2.6-v2v \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--data '
{
"input": {
"prompt": "<string>",
"reference_urls": [
"<string>"
],
"negative_prompt": "<string>"
},
"parameters": {
"seed": 123,
"size": "<string>",
"duration": 123,
"shot_type": "<string>",
"watermark": true,
"prompt_extend": true
}
}
'import requests
url = "https://api.novita.ai/v3/async/wan2.6-v2v"
payload = {
"input": {
"prompt": "<string>",
"reference_urls": ["<string>"],
"negative_prompt": "<string>"
},
"parameters": {
"seed": 123,
"size": "<string>",
"duration": 123,
"shot_type": "<string>",
"watermark": True,
"prompt_extend": True
}
}
headers = {
"Content-Type": "<content-type>",
"Authorization": "<authorization>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', Authorization: '<authorization>'},
body: JSON.stringify({
input: {prompt: '<string>', reference_urls: ['<string>'], negative_prompt: '<string>'},
parameters: {
seed: 123,
size: '<string>',
duration: 123,
shot_type: '<string>',
watermark: true,
prompt_extend: true
}
})
};
fetch('https://api.novita.ai/v3/async/wan2.6-v2v', 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.novita.ai/v3/async/wan2.6-v2v",
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([
'input' => [
'prompt' => '<string>',
'reference_urls' => [
'<string>'
],
'negative_prompt' => '<string>'
],
'parameters' => [
'seed' => 123,
'size' => '<string>',
'duration' => 123,
'shot_type' => '<string>',
'watermark' => true,
'prompt_extend' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$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.novita.ai/v3/async/wan2.6-v2v"
payload := strings.NewReader("{\n \"input\": {\n \"prompt\": \"<string>\",\n \"reference_urls\": [\n \"<string>\"\n ],\n \"negative_prompt\": \"<string>\"\n },\n \"parameters\": {\n \"seed\": 123,\n \"size\": \"<string>\",\n \"duration\": 123,\n \"shot_type\": \"<string>\",\n \"watermark\": true,\n \"prompt_extend\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("Authorization", "<authorization>")
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.novita.ai/v3/async/wan2.6-v2v")
.header("Content-Type", "<content-type>")
.header("Authorization", "<authorization>")
.body("{\n \"input\": {\n \"prompt\": \"<string>\",\n \"reference_urls\": [\n \"<string>\"\n ],\n \"negative_prompt\": \"<string>\"\n },\n \"parameters\": {\n \"seed\": 123,\n \"size\": \"<string>\",\n \"duration\": 123,\n \"shot_type\": \"<string>\",\n \"watermark\": true,\n \"prompt_extend\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novita.ai/v3/async/wan2.6-v2v")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["Authorization"] = '<authorization>'
request.body = "{\n \"input\": {\n \"prompt\": \"<string>\",\n \"reference_urls\": [\n \"<string>\"\n ],\n \"negative_prompt\": \"<string>\"\n },\n \"parameters\": {\n \"seed\": 123,\n \"size\": \"<string>\",\n \"duration\": 123,\n \"shot_type\": \"<string>\",\n \"watermark\": true,\n \"prompt_extend\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"task_id": "<string>"
}Video Generator
Wan 2.6 Reference-to-Video
POST
/
v3
/
async
/
wan2.6-v2v
Wan 2.6 Reference-to-Video
curl --request POST \
--url https://api.novita.ai/v3/async/wan2.6-v2v \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--data '
{
"input": {
"prompt": "<string>",
"reference_urls": [
"<string>"
],
"negative_prompt": "<string>"
},
"parameters": {
"seed": 123,
"size": "<string>",
"duration": 123,
"shot_type": "<string>",
"watermark": true,
"prompt_extend": true
}
}
'import requests
url = "https://api.novita.ai/v3/async/wan2.6-v2v"
payload = {
"input": {
"prompt": "<string>",
"reference_urls": ["<string>"],
"negative_prompt": "<string>"
},
"parameters": {
"seed": 123,
"size": "<string>",
"duration": 123,
"shot_type": "<string>",
"watermark": True,
"prompt_extend": True
}
}
headers = {
"Content-Type": "<content-type>",
"Authorization": "<authorization>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', Authorization: '<authorization>'},
body: JSON.stringify({
input: {prompt: '<string>', reference_urls: ['<string>'], negative_prompt: '<string>'},
parameters: {
seed: 123,
size: '<string>',
duration: 123,
shot_type: '<string>',
watermark: true,
prompt_extend: true
}
})
};
fetch('https://api.novita.ai/v3/async/wan2.6-v2v', 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.novita.ai/v3/async/wan2.6-v2v",
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([
'input' => [
'prompt' => '<string>',
'reference_urls' => [
'<string>'
],
'negative_prompt' => '<string>'
],
'parameters' => [
'seed' => 123,
'size' => '<string>',
'duration' => 123,
'shot_type' => '<string>',
'watermark' => true,
'prompt_extend' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$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.novita.ai/v3/async/wan2.6-v2v"
payload := strings.NewReader("{\n \"input\": {\n \"prompt\": \"<string>\",\n \"reference_urls\": [\n \"<string>\"\n ],\n \"negative_prompt\": \"<string>\"\n },\n \"parameters\": {\n \"seed\": 123,\n \"size\": \"<string>\",\n \"duration\": 123,\n \"shot_type\": \"<string>\",\n \"watermark\": true,\n \"prompt_extend\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("Authorization", "<authorization>")
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.novita.ai/v3/async/wan2.6-v2v")
.header("Content-Type", "<content-type>")
.header("Authorization", "<authorization>")
.body("{\n \"input\": {\n \"prompt\": \"<string>\",\n \"reference_urls\": [\n \"<string>\"\n ],\n \"negative_prompt\": \"<string>\"\n },\n \"parameters\": {\n \"seed\": 123,\n \"size\": \"<string>\",\n \"duration\": 123,\n \"shot_type\": \"<string>\",\n \"watermark\": true,\n \"prompt_extend\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novita.ai/v3/async/wan2.6-v2v")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["Authorization"] = '<authorization>'
request.body = "{\n \"input\": {\n \"prompt\": \"<string>\",\n \"reference_urls\": [\n \"<string>\"\n ],\n \"negative_prompt\": \"<string>\"\n },\n \"parameters\": {\n \"seed\": 123,\n \"size\": \"<string>\",\n \"duration\": 123,\n \"shot_type\": \"<string>\",\n \"watermark\": true,\n \"prompt_extend\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"task_id": "<string>"
}AI-powered reference-to-video service. Generate high-quality video content from reference images or reference videos combined with text prompts. Provides professional video generation capabilities with ready-to-use REST inference APIs, high performance, no cold starts, and affordable pricing.
This is an asynchronous API; only the task_id will be returned. You should use the task_id to request the Task Result API to retrieve the video generation results.
Request Headers
string
erforderlich
Supports:
application/jsonstring
erforderlich
Bearer authentication format, for example: Bearer {{API Key}}.
Request Body
object
erforderlich
Ausblenden properties
Ausblenden properties
string
erforderlich
Text prompt describing the expected elements and visual characteristics in the generated video. Chinese and English are supported. Each Chinese character, letter, or punctuation mark counts as one character, and content beyond the limit is automatically truncated. Use identifiers such as character1 and character2 to reference characters. Each reference video or image should contain only a single character.Length limit: 0 - 1500
string[]
erforderlich
Array of reference image or reference video URLs, used to extract character appearance and voice tone if available. Image count: 0 to 5. Video count: 0 to 3. Total image plus video count must not exceed 5. When multiple reference files are provided, character order follows the array order: the first URL corresponds to character1, the second to character2, and so on. Reference video requirements: duration 1s to 30s, file size up to 100 MB. Reference image requirements: width and height must both be within [240, 8000] pixels, file size up to 20 MB.Array length: 1 - 5
string
Negative prompt describing content that should not appear in the video. It can be used to constrain the video image. Chinese and English are supported. The length must not exceed 500 characters, and content beyond the limit is automatically truncated.Length limit: 0 - 500
object
Ausblenden properties
Ausblenden properties
integer
Random seed. Valid range: [0, 2147483647]. If not specified, the system automatically generates a random seed. To improve reproducibility, set a fixed seed value. Note that because model generation is probabilistic, using the same seed does not guarantee identical results every time.Value range: [0, 2147483647]
string
Standard:"1920*1080"
Specifies the generated video resolution in widthheight format. Supports 720P options (1280720/7201280/960960/1088832/8321088) and 1080P options (19201080/10801920/14401440/16321248/1248*1632).Optional values:
1280*720, 720*1280, 960*960, 1088*832, 832*1088, 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632integer
Standard:5
Generated video duration in seconds. Available values are 5 and 10. The default value is 5. duration directly affects cost: cost = unit price (based on resolution) x duration (seconds). Confirm model pricing before calling the API.Optional values:
5, 10string
Standard:"single"
Video generation mode. single: default value, outputs a single-shot video. multi: outputs a multi-shot video. Parameter priority: shot_type > prompt.Optional values:
single, multiboolean
Standard:false
Whether to add a watermark. The watermark is located in the lower-right corner of the video and the fixed text is “AI generated”. false: default value, no watermark. true: add watermark.
boolean
Standard:true
Whether to enable intelligent prompt rewriting. When enabled, a large language model rewrites the input prompt. This noticeably improves generation quality for shorter prompts, but increases processing time. true: default value, enable intelligent rewriting. false: disable intelligent rewriting.
Response
string
erforderlich
Use the task_id to request the Task Result API to retrieve the generated outputs.
Zuletzt geändert am 10. August 2026
⌘I