curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"}],
"resolution": "1080P",
"duration": 8
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"}],
"resolution": "1080P",
"duration": 8
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "wan2.7-r2v",
prompt: "This person walks down the street surrounded by heavy traffic",
image_with_roles: [{ url: "https://cdn.example.com/character.jpg", role: "reference_image" }],
resolution: "1080P",
duration: 8
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/videos/generations"
payload := map[string]interface{}{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": []map[string]string{
{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"},
},
"resolution": "1080P",
"duration": 8,
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/videos/generations";
String payload = """
{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"}],
"resolution": "1080P",
"duration": 8
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/videos/generations";
$payload = [
"model" => "wan2.7-r2v",
"prompt" => "This person walks down the street surrounded by heavy traffic",
"image_with_roles" => [["url" => "https://cdn.example.com/character.jpg", "role" => "reference_image"]],
"resolution" => "1080P",
"duration" => 8
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/videos/generations")
payload = {
model: "wan2.7-r2v",
prompt: "This person walks down the street surrounded by heavy traffic",
image_with_roles: [{ url: "https://cdn.example.com/character.jpg", role: "reference_image" }],
resolution: "1080P",
duration: 8
}
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 = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!
let payload: [String: Any] = [
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [["url": "https://cdn.example.com/character.jpg", "role": "reference_image"]],
"resolution": "1080P",
"duration": 8
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/videos/generations";
var payload = @"{
""model"": ""wan2.7-r2v"",
""prompt"": ""This person walks down the street surrounded by heavy traffic"",
""image_with_roles"": [{""url"": ""https://cdn.example.com/character.jpg"", ""role"": ""reference_image""}],
""resolution"": ""1080P"",
""duration"": 8
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Invalid authentication credentials",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance. Please top up your account",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Rate limit exceeded. Please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later",
"type": "server_error"
}
}
Wan2.7
Wan2.7-R2V Referensi-ke-Video
- Model referensi-ke-video Alibaba Cloud Wanxiang 2.7
- Buat video baru dengan gaya, karakter, dan adegan yang konsisten berdasarkan satu atau beberapa gambar/video referensi
- Mendukung konsistensi karakter, transfer gaya, dan kombinasi multi-aset
- Mendukung suara referensi (reference_voice) untuk mengontrol suara karakter
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"}],
"resolution": "1080P",
"duration": 8
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"}],
"resolution": "1080P",
"duration": 8
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "wan2.7-r2v",
prompt: "This person walks down the street surrounded by heavy traffic",
image_with_roles: [{ url: "https://cdn.example.com/character.jpg", role: "reference_image" }],
resolution: "1080P",
duration: 8
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/videos/generations"
payload := map[string]interface{}{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": []map[string]string{
{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"},
},
"resolution": "1080P",
"duration": 8,
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/videos/generations";
String payload = """
{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"}],
"resolution": "1080P",
"duration": 8
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/videos/generations";
$payload = [
"model" => "wan2.7-r2v",
"prompt" => "This person walks down the street surrounded by heavy traffic",
"image_with_roles" => [["url" => "https://cdn.example.com/character.jpg", "role" => "reference_image"]],
"resolution" => "1080P",
"duration" => 8
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/videos/generations")
payload = {
model: "wan2.7-r2v",
prompt: "This person walks down the street surrounded by heavy traffic",
image_with_roles: [{ url: "https://cdn.example.com/character.jpg", role: "reference_image" }],
resolution: "1080P",
duration: 8
}
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 = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!
let payload: [String: Any] = [
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [["url": "https://cdn.example.com/character.jpg", "role": "reference_image"]],
"resolution": "1080P",
"duration": 8
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/videos/generations";
var payload = @"{
""model"": ""wan2.7-r2v"",
""prompt"": ""This person walks down the street surrounded by heavy traffic"",
""image_with_roles"": [{""url"": ""https://cdn.example.com/character.jpg"", ""role"": ""reference_image""}],
""resolution"": ""1080P"",
""duration"": 8
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Invalid authentication credentials",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance. Please top up your account",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Rate limit exceeded. Please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later",
"type": "server_error"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"}],
"resolution": "1080P",
"duration": 8
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"}],
"resolution": "1080P",
"duration": 8
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "wan2.7-r2v",
prompt: "This person walks down the street surrounded by heavy traffic",
image_with_roles: [{ url: "https://cdn.example.com/character.jpg", role: "reference_image" }],
resolution: "1080P",
duration: 8
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/videos/generations"
payload := map[string]interface{}{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": []map[string]string{
{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"},
},
"resolution": "1080P",
"duration": 8,
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/videos/generations";
String payload = """
{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [{"url": "https://cdn.example.com/character.jpg", "role": "reference_image"}],
"resolution": "1080P",
"duration": 8
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/videos/generations";
$payload = [
"model" => "wan2.7-r2v",
"prompt" => "This person walks down the street surrounded by heavy traffic",
"image_with_roles" => [["url" => "https://cdn.example.com/character.jpg", "role" => "reference_image"]],
"resolution" => "1080P",
"duration" => 8
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/videos/generations")
payload = {
model: "wan2.7-r2v",
prompt: "This person walks down the street surrounded by heavy traffic",
image_with_roles: [{ url: "https://cdn.example.com/character.jpg", role: "reference_image" }],
resolution: "1080P",
duration: 8
}
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 = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!
let payload: [String: Any] = [
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [["url": "https://cdn.example.com/character.jpg", "role": "reference_image"]],
"resolution": "1080P",
"duration": 8
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/videos/generations";
var payload = @"{
""model"": ""wan2.7-r2v"",
""prompt"": ""This person walks down the street surrounded by heavy traffic"",
""image_with_roles"": [{""url"": ""https://cdn.example.com/character.jpg"", ""role"": ""reference_image""}],
""resolution"": ""1080P"",
""duration"": 8
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Invalid authentication credentials",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance. Please top up your account",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Rate limit exceeded. Please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later",
"type": "server_error"
}
}
Otorisasi
Semua endpoint API memerlukan autentikasi Bearer TokenDapatkan API Key Anda:Kunjungi Halaman Manajemen API Key untuk mendapatkan API Key AndaTambahkan ke header permintaan:
Authorization: Bearer YOUR_API_KEY
Parameter Permintaan
Nama model pembuatan video, tetap sebagai
wan2.7-r2vDeskripsi konten video, hingga 5000 karakterUntuk beberapa gambar/video, gunakan “gambar 1”, “gambar 2”, “video 1”, dll. untuk merujuk ke aset referensi terkait (sesuai urutan input)Contoh:
"The character in image 1 enters the scene in image 2 and looks around"Array gambar dengan role; setidaknya salah satu dari field ini dan
video_urls harus disediakanField untuk setiap objek:url(string): URL gambarrole(string): role gambarreference_image- gambar referensi (default)first_frame- bingkai pertama yang ditentukan (saat disediakan,sizediabaikan dan rasio aspek mengikuti gambar bingkai pertama)
reference_voice(string, opsional): URL sampel audio suara untuk karakter referensi tersebut, digunakan untuk mengontrol suara karakter dalam video yang dihasilkan
[
{
"url": "https://cdn.example.com/character.jpg",
"role": "reference_image",
"reference_voice": "https://cdn.example.com/voice_sample.mp3"
},
{ "url": "https://cdn.example.com/start.jpg", "role": "first_frame" }
]
Array URL video referensi, hingga 5 video (total gambar + video ≤ 5)Setidaknya salah satu dari field ini dan
image_with_roles harus disediakanBatasan video:
- Format: mp4, mov
- Durasi: 1–30 detik
- Resolusi: lebar dan tinggi dalam rentang [240, 4096] piksel
- Rasio aspek: 1:8 – 8:1
- Ukuran file: hingga 100MB
Prompt negatif yang menjelaskan konten yang tidak diinginkan, hingga 500 karakter
Resolusi videoOpsi:
720P- Standar1080P- Definisi tinggi (default)
Durasi video (detik)Rentang yang didukung:
2 ~ 15 detikDefault: 5Ketika aset referensi mencakup video: bilangan bulat antara [2, 10].Ketika aset referensi tidak mencakup video: bilangan bulat antara [2, 15].
Rasio aspekFormat yang didukung:
16:9- Lanskap layar lebar (default)9:16- Potret1:1- Persegi4:3- Lanskap3:4- Potret
Saat
first_frame disediakan melalui image_with_roles, parameter ini diabaikan dan rasio aspek mengikuti gambar frame pertamaApakah mengaktifkan penulisan ulang prompt cerdasSecara signifikan meningkatkan hasil untuk prompt pendek, namun menambah waktu pemrosesanDefault:
trueApakah akan menambahkan watermark “AI Generated” ke video yang dihasilkan
true: tambahkan watermarkfalse: tanpa watermark (default)
Seed bilangan bulat yang digunakan untuk mengontrol keacakan konten yang dihasilkanRentang nilai: bilangan bulat
≥0- Untuk permintaan yang identik, model menghasilkan hasil yang berbeda saat menerima nilai seed yang berbeda (misalnya, menghilangkan seed)
- Untuk permintaan yang identik, model menghasilkan hasil yang serupa saat menerima nilai seed yang sama, namun konsistensi yang tepat tidak dijamin
Respons
Kode status respons, 200 jika berhasil
Kasus Penggunaan
Kasus 1: Satu Gambar Referensi (Paling Sederhana)
{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street surrounded by heavy traffic",
"image_with_roles": [
{ "url": "https://cdn.example.com/character.jpg", "role": "reference_image" }
]
}
Kasus 2: Beberapa Gambar Referensi
{
"model": "wan2.7-r2v",
"prompt": "The character in image 1 enters the scene in image 2 and mimics the pose in image 3",
"image_with_roles": [
{ "url": "https://cdn.example.com/person.jpg", "role": "reference_image" },
{ "url": "https://cdn.example.com/background.jpg", "role": "reference_image" },
{ "url": "https://cdn.example.com/pose.jpg", "role": "reference_image" }
],
"resolution": "1080P",
"duration": 8,
"size": "16:9"
}
Kasus 3: Pembuatan Berdasarkan Video Referensi
{
"model": "wan2.7-r2v",
"prompt": "Generate a beach sunset scene in the style of the reference video",
"video_urls": ["https://cdn.example.com/style_reference.mp4"],
"resolution": "720P",
"duration": 8
}
Kasus 4: Bingkai Pertama Ditentukan + Gambar Referensi
{
"model": "wan2.7-r2v",
"prompt": "The reference character starts from this position and walks forward",
"image_with_roles": [
{ "url": "https://cdn.example.com/character.jpg", "role": "reference_image" },
{ "url": "https://cdn.example.com/start.jpg", "role": "first_frame" }
],
"resolution": "1080P",
"duration": 8
}
Kasus 5: Gambar Referensi + Suara Referensi (Presisi)
{
"model": "wan2.7-r2v",
"prompt": "This person walks down the street while speaking",
"image_with_roles": [
{
"url": "https://cdn.example.com/character.jpg",
"role": "reference_image",
"reference_voice": "https://cdn.example.com/voice_sample.mp3"
}
],
"resolution": "1080P",
"duration": 10
}
Aturan Referensi Gambar
Dengan beberapa gambar referensi, gunakan indeks numerik dalamprompt untuk merujuknya:
- Gambar ke-1 → “gambar 1” atau “gambar pertama”
- Video ke-1 → “video 1” atau “video pertama”
Kueri Hasil TugasPembuatan video adalah tugas asinkron yang mengembalikan
task_id saat dikirim. Gunakan endpoint Dapatkan Status Tugas untuk mengueri progres dan hasil pembuatan.⌘I