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"
}
}
Wan2.6
Pembuatan Video Wan2.6
- Alibaba Cloud Wanxiang video pembuatan model
- Mendukung Teks-ke-Video dan Gambar-ke-Video
- Mendukung 720p/1080p resolusi, 5/10/15 detik durasi
- Mendukung perluasan prompt otomatis dan pembuatan audio
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.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"
}
}
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
string
wajib
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
string
wajib
Nama model pembuatan video, tetap sebagai
wan2.6boolean
default:"false"
Menentukan apakah moderasi konten dijalankan sebelum tugas video dikirim.
true: periksa prompt dan gambar input denganomni-moderation-latestfalseatau dihilangkan: tidak mengirim permintaan moderasi, tanpa biaya atau latensi moderasi tambahan (default)
string
wajib
Deskripsi konten videoWajib untuk mode teks-ke-video. Jelaskan adegan, aksi, dan gaya secara detail untuk hasil yang lebih baikContoh:
"A cute cat stretching in the sunlight"array<url>
Array URL gambar referensi (hanya 1 gambar didukung)Wajib untuk mode gambar-ke-video. Mendukung URL gambar yang dapat diakses publikContoh:
["https://example.com/image.jpg"]Sistem otomatis memilih mode teks-ke-video atau gambar-ke-video berdasarkan apakah
image_urls disertakanstring
Prompt negatif yang menjelaskan konten yang tidak diinginkanContoh:
"blurry, low quality, distorted"string
default:"16:9"
Rasio aspek videoOpsi:
16:9- Lanskap (default)9:16- Potret1:1- Persegi4:3- Lanskap3:4- Potret
16:9Tidak didukung dalam mode gambar-ke-video
string
default:"720p"
Resolusi videoOpsi:
720p- Standar (default)1080p- Definisi tinggi
720pResolusi 480p tidak didukung
Ditagih per detik. Harga bervariasi berdasarkan resolusi. Silakan lihat marketplace model untuk harga spesifik
integer
default:"5"
Durasi video (detik)Nilai yang didukung: hanya
5, 10, atau 15 detikDefault: 5integer
Seed acak untuk hasil yang dapat direproduksiContoh:
12345boolean
Apakah memperluas prompt secara otomatisJika diaktifkan, sistem akan otomatis mengoptimalkan dan memperkaya prompt Anda
boolean
Apakah akan menambahkan audio secara otomatisJika diaktifkan, sistem akan membuat audio yang sesuai untuk video
string
URL audio yang ditentukanMemiliki prioritas di atas parameter
audioDurasi audio tidak boleh melebihi durasi video. Jika audio lebih pendek dari durasi video, bagian pertama video akan memiliki suara sementara sisanya akan tanpa suara.
string
Jenis shotOpsi:
single- Shot tunggalmulti- Beberapa shot
boolean
Apakah menambahkan watermark
string
Nama template efek untuk mode efek khusus gambar-ke-videoEfek Umum:
Saat menggunakan mode efek:
- Hanya satu gambar yang wajib (diberikan melalui
image_urls) - Prompt tidak diperlukan (model mengabaikan field
prompt)
squish- Squish & Squeezerotation- Rotationpoke- Pokeinflate- Balloon Inflatedissolve- Molecular Dissolvemelt- Heat Wave Melticecream- Ice Cream Planetflying- Magic Levitation
carousel- Time Carouselsingleheart- Love Youdance1- Swing Momentdance2- Dance Move
Kombinasi Resolusi dan Rasio Aspek
| Aspek Rasio | Deskripsi | 720p Size | 1080p Size |
|---|---|---|---|
16:9 | Lanskap (default) | 1280×720 | 1920×1080 |
9:16 | Potret | 720×1280 | 1080×1920 |
1:1 | Persegi | 960×960 | 1440×1440 |
4:3 | Lanskap | 1088×832 | 1632×1248 |
3:4 | Potret | 832×1088 | 1248×1632 |
Respons
integer
Kode status respons, 200 jika berhasil
array
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
promptwajib - Parameter
image_urlstidak diperlukan
Gambar-ke-Video
- Parameter
image_urlswajib (hanya 1 gambar didukung) - Parameter
promptopsional, digunakan untuk menjelaskan aksi yang diharapkan
Sistem otomatis memilih mode berdasarkan apakah
image_urls disertakan dalam permintaanKueri Hasil TugasPembuatan video adalah tugas asinkron yang mengembalikan
task_id saat dikirim. Gunakan endpoint Dapatkan Status Tugas untuk mengueri progres dan hasil pembuatan.