cURL
Python
JavaScript
Go
Java
PHP
Ruby
Swift
C#
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.6",
"prompt": "A cute cat running on the grass",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model" : "wan2.6" ,
"prompt" : "A cute cat running on the grass" ,
"aspect_ratio" : "16:9" ,
"resolution" : "720p" ,
"duration" : 5
}
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.6" ,
prompt: "A cute cat running on the grass" ,
aspect_ratio: "16:9" ,
resolution: "720p" ,
duration: 5
};
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.6" ,
"prompt" : "A cute cat running on the grass" ,
"aspect_ratio" : "16:9" ,
"resolution" : "720p" ,
"duration" : 5 ,
}
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.6",
"prompt": "A cute cat running on the grass",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
""" ;
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.6" ,
"prompt" => "A cute cat running on the grass" ,
"aspect_ratio" => "16:9" ,
"resolution" => "720p" ,
"duration" => 5
];
$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.6" ,
prompt: "A cute cat running on the grass" ,
aspect_ratio: "16:9" ,
resolution: "720p" ,
duration: 5
}
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.6" ,
"prompt" : "A cute cat running on the grass" ,
"aspect_ratio" : "16:9" ,
"resolution" : "720p" ,
"duration" : 5
]
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.6 "" ,
"" prompt "" : "" A cute cat running on the grass "" ,
"" aspect_ratio "" : "" 16:9 "" ,
"" resolution "" : "" 720p "" ,
"" duration "" : 5
}" ;
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 Token Dapatkan API Key Anda: Kunjungi Halaman Manajemen API Key untuk mendapatkan API Key Anda Tambahkan ke header permintaan: Authorization: Bearer YOUR_API_KEY
Parameter Permintaan
Nama model pembuatan video, tetap sebagai wan2.6
Deskripsi konten video Wajib untuk mode teks-ke-video. Jelaskan adegan, aksi, dan gaya secara detail untuk hasil yang lebih baik Contoh: "A cute cat stretching in the sunlight"
Array URL gambar referensi (hanya 1 gambar didukung) Wajib untuk mode gambar-ke-video. Mendukung URL gambar yang dapat diakses publik Contoh: ["https://example.com/image.jpg"] Sistem otomatis memilih mode teks-ke-video atau gambar-ke-video berdasarkan apakah image_urls disertakan
Prompt negatif yang menjelaskan konten yang tidak diinginkan Contoh: "blurry, low quality, distorted"
Rasio aspek video Opsi:
16:9 - Lanskap (default)
9:16 - Potret
1:1 - Persegi
4:3 - Lanskap
3:4 - Potret
Default: 16:9 Tidak didukung dalam mode gambar-ke-video
Resolusi video Opsi:
720p - Standar (default)
1080p - Definisi tinggi
Default: 720p Resolusi 480p tidak didukung
Ditagih per detik. Harga bervariasi berdasarkan resolusi. Silakan lihat marketplace model untuk harga spesifik
Durasi video (detik) Nilai yang didukung: hanya 5, 10, atau 15 detik Default: 5
Seed acak untuk hasil yang dapat direproduksi Contoh: 12345
Apakah memperluas prompt secara otomatis Jika diaktifkan, sistem akan otomatis mengoptimalkan dan memperkaya prompt Anda
Apakah akan menambahkan audio secara otomatis Jika diaktifkan, sistem akan membuat audio yang sesuai untuk video
URL audio yang ditentukan Memiliki prioritas di atas parameter audio Durasi audio tidak boleh melebihi durasi video. Jika audio lebih pendek dari durasi video, bagian pertama video akan memiliki suara sementara sisanya akan tanpa suara.
Jenis shot Opsi:
single - Shot tunggal
multi - Beberapa shot
Apakah menambahkan watermark
Nama template efek untuk mode efek khusus gambar-ke-video Saat menggunakan mode efek:
Hanya satu gambar yang wajib (diberikan melalui image_urls)
Prompt tidak diperlukan (model mengabaikan field prompt)
Efek Umum:
squish - Squish & Squeeze
rotation - Rotation
poke - Poke
inflate - Balloon Inflate
dissolve - Molecular Dissolve
melt - Heat Wave Melt
icecream - Ice Cream Planet
flying - Magic Levitation
Efek Satu Orang:
carousel - Time Carousel
singleheart - Love You
dance1 - Swing Moment
dance2 - Dance Move
Untuk efek lebih banyak, lihat Dokumentasi Template Alibaba Wanxiang
Kombinasi Resolusi dan Rasio Aspek
Aspek Rasio Deskripsi 720p Size 1080p Size 16:9Lanskap (default) 1280×720 1920×1080 9:16Potret 720×1280 1080×1920 1:1Persegi 960×960 1440×1440 4:3Lanskap 1088×832 1632×1248 3:4Potret 832×1088 1248×1632
Respons
Kode status respons, 200 jika berhasil
Respons data array Status tugas, submitted saat pertama kali dikirim
Pengidentifikasi tugas unik untuk mengueri status dan hasil tugas
Kasus Penggunaan
Kasus 1: Teks-ke-Video (Permintaan Sederhana)
{
"model" : "wan2.6" ,
"prompt" : "A cute cat stretching in the sunlight"
}
Kasus 2: Teks-ke-Video (Parameter Lengkap)
{
"model" : "wan2.6" ,
"prompt" : "A cute cat running on the grass" ,
"negative_prompt" : "blurry, low quality, distorted" ,
"aspect_ratio" : "16:9" ,
"resolution" : "720p" ,
"duration" : 5 ,
"seed" : 12345 ,
"prompt_extend" : true ,
"audio" : true ,
"shot_type" : "single" ,
"watermark" : false
}
Kasus 3: Gambar-ke-Video
{
"model" : "wan2.6" ,
"prompt" : "A kitten running on the ground" ,
"image_urls" : [ "https://upload.apimart.ai/f/apimart-models-images/9998233432754770-c059992d-9b01-47d5-810d-ea0502ac9279-image_task_01KD7SSXDBCEWZ869D6PF249ZW_0.png" ],
"resolution" : "1080p" ,
"duration" : 10
}
Kasus 4: Gambar-ke-Video (Base64 Gambar)
{
"model" : "wan2.6" ,
"prompt" : "Make the cat stand up and walk" ,
"image_urls" : [ "data:image/png;base64,iVBORw0KGgo..." ],
"duration" : 5
}
Deskripsi Mode
Teks-ke-Video
Parameter prompt wajib
Parameter image_urls tidak diperlukan
Gambar-ke-Video
Parameter image_urls wajib (hanya 1 gambar didukung)
Parameter prompt opsional, digunakan untuk menjelaskan aksi yang diharapkan
Sistem otomatis memilih mode berdasarkan apakah image_urls disertakan dalam permintaan
Kueri Hasil Tugas Pembuatan video adalah tugas asinkron yang mengembalikan task_id saat dikirim. Gunakan endpoint Dapatkan Status Tugas untuk mengueri progres dan hasil pembuatan.