All Products
Search
Document Center

Alibaba Cloud Model Studio:Wan - referensi API text-to-video (2.1-2.6)

Last Updated:Sep 02, 2026

Model text-to-video Wan menghasilkan video yang mulus dari text prompts .

Referensi: Panduan pengguna

Ketersediaan

Untuk memastikan pemanggilan berhasil, model, URL Endpoint, dan Kunci API harus berada di wilayah yang sama. Pemanggilan lintas-wilayah akan gagal.

  • Pilih model: Konfirmasi wilayah model tersebut.
  • Pilih URL: Gunakan URL Endpoint regional yang sesuai. Didukung URL HTTP dan URL SDK DashScope.
  • Konfigurasikan Kunci API: Pilih wilayah, dapatkan Kunci API, lalu konfigurasikan Kunci API sebagai Variabel lingkungan (fitur ini akan segera digabung ke dalam konfigurasi Kunci API).
  • Instal SDK: Untuk melakukan pemanggilan menggunakan SDK, Anda harus menginstal SDK DashScope.

CatatanKode contoh dalam topik ini berlaku untuk wilayah Singapura.

PentingAlibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah China (Beijing) dan Singapura. Domain khusus baru ini memberikan performa lebih unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi ke domain baru:

  • China (Beijing): dari https://dashscope.aliyuncs.com ke https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapura: dari https://dashscope-intl.aliyuncs.com ke https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

{WorkspaceId} adalah ID ruang kerja Anda, yang dapat ditemukan di halaman Detail Ruang Kerja pada Konsol Alibaba Cloud Model Studio. Domain yang ada tetap berfungsi penuh.

HTTP

PentingAPI ini menggunakan protokol lama dan mendukung model wan2.6 serta versi sebelumnya (wan2.5/wan2.2/wan2.1).

Karena tugas text-to-video memerlukan waktu lama (biasanya 1 hingga 5 menit), API ini menggunakan pemanggilan asinkron. Seluruh proses mencakup dua langkah utama: Buat tugas → Polling hasil. Alurnya sebagai berikut:

Langkah 1: Buat tugas dan dapatkan ID tugas

Singapura

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Virginia

POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Frankfurt

POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Beijing

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Catatan

  • Setelah tugas dibuat, gunakan task_id yang dikembalikan untuk menanyakan hasilnya. task_id berlaku selama 24 jam. Jangan membuat tugas duplikat. Sebagai gantinya, gunakan polling untuk mengambil hasilnya.
  • Untuk panduan pemula, lihat Panggil API dengan Postman atau cURL.

Parameter permintaan

Header permintaan

Content-Type string (Wajib)

Tipe konten permintaan. Harus application/json.

Authorization string (Wajib)

Mengotentikasi permintaan dengan Kunci API Model Studio. Contoh: Bearer sk-xxxx.

X-DashScope-Async string (Wajib)

Mengaktifkan pemrosesan asinkron. Permintaan HTTP hanya mendukung pemanggilan asinkron. Harus enable.

PentingJika header permintaan ini tidak ada, kesalahan "current user api does not support synchronous calls" dikembalikan.

Body permintaan

model string (Wajib)

Nama model yang akan digunakan. Untuk daftar model yang tersedia, lihat daftar model.

Contoh: wan2.6-t2v.

input object (Wajib)

Berisi informasi input dasar, seperti prompt.

Properti

prompt string (Wajib)

Text prompt. Menggambarkan elemen dan karakteristik visual yang diinginkan dari video yang dihasilkan.

Prompt dapat dalam bahasa Tiongkok atau Inggris. Panjang diukur dalam karakter, di mana setiap karakter Tiongkok atau huruf dihitung sebagai satu karakter. Teks yang melebihi batas karakter akan dipotong secara otomatis. Batas panjang bervariasi berdasarkan versi model:

  • Model seri wan2.6 dan wan2.5: Maksimal 1.500 karakter.
  • Model seri wan2.2 dan wan2.1: Maksimal 800 karakter.

Contoh: Seekor anak kucing berlari di bawah cahaya bulan.

Untuk informasi lebih lanjut, lihat Panduan prompt text-to-video/image-to-video.

negative_prompt string (Opsional)

Prompt yang menggambarkan konten yang harus dikecualikan dari video. Ini membantu memperhalus konten yang dihasilkan.

Prompt dapat dalam bahasa Tiongkok atau Inggris. Panjang maksimum 500 karakter. Teks yang melebihi batas ini akan dipotong secara otomatis.

Contoh: resolusi rendah, error, kualitas terburuk, kualitas rendah, cacat, jari ekstra, proporsi buruk.

audio_url string (Opsional)

Model yang didukung: model seri wan2.6 dan wan2.5.

URL file audio. Model akan menggunakan audio ini untuk menghasilkan video.

Format input yang didukung:

  1. URL publik:

Batas audio:

  • Format: wav, mp3.
  • Durasi: 3 hingga 30 detik.
  • Ukuran file: Maksimal 15 MB.
  • Penanganan audio yang melebihi durasi yang ditentukan: Jika audio lebih panjang dari nilai yang ditentukan untuk parameter duration (misalnya, 5 detik), audio akan dipotong menjadi durasi yang ditentukan. Jika audio lebih pendek dari durasi video, bagian video yang tersisa akan diam. Misalnya, jika audio berdurasi 3 detik dan video berdurasi 5 detik, 3 detik pertama video akan memiliki audio dan 2 detik terakhir akan diam.

parameters object (Opsional)

Parameter pemrosesan video, seperti mengatur resolusi video, mengaktifkan penulisan ulang prompt, dan menambahkan Watermark.

Properti

size string (Opsional)

Penting

  • Ukuran secara langsung memengaruhi biaya. Sebelum melakukan pemanggilan, tinjau harga model.
  • Ukuran harus diatur ke nilai spesifik, seperti 1280*720, bukan rasio aspek seperti 1:1 atau tier resolusi seperti 480P.

Menentukan resolusi video yang dihasilkan dalam format lebar*tinggi. Nilai default dan nilai yang valid untuk parameter ini bergantung pada parameter model, seperti dijelaskan di bawah ini:

  • wan2.6-t2v: Nilai default adalah 1920*1080 (1080P). Resolusi yang valid mencakup semua resolusi di tier 720P dan 1080P.
  • wan2.6-t2v-us: Nilai default adalah 1920*1080 (1080P). Resolusi yang valid mencakup semua resolusi di tier 720P dan 1080P.
  • wan2.5-t2v-preview: Nilai default adalah 1920*1080 (1080P). Resolusi yang valid mencakup semua resolusi di tier 480P, 720P, dan 1080P.
  • wan2.2-t2v-plus: Nilai default adalah 1920*1080 (1080P). Resolusi yang valid mencakup semua resolusi di tier 480P dan 1080P.
  • wan2.1-t2v-turbo: Nilai default adalah 1280*720 (720P). Resolusi yang valid mencakup semua resolusi di tier 480P dan 720P.
  • wan2.1-t2v-plus: Nilai default adalah 1280*720 (720P). Resolusi yang valid mencakup semua resolusi di tier 720P.

Tier 480P: Resolusi video yang valid dan rasio aspeknya adalah:

  • 832*480: 16:9.
  • 480*832: 9:16.
  • 624*624: 1:1.

Tier 720P: Resolusi video yang valid dan rasio aspeknya adalah:

  • 1280*720: 16:9.
  • 720*1280: 9:16.
  • 960*960: 1:1.
  • 1088*832: 4:3.
  • 832*1088: 3:4.

Tier 1080P: Resolusi video yang valid dan rasio aspeknya adalah:

  • 1920*1080: 16:9.
  • 1080*1920: 9:16.
  • 1440*1440: 1:1.
  • 1632*1248: 4:3.
  • 1248*1632: 3:4.

duration integer (Opsional)

PentingDurasi secara langsung memengaruhi biaya. Biaya = Harga satuan (berdasarkan resolusi) × Durasi (dalam detik). Sebelum melakukan pemanggilan, tinjau harga model.

Durasi video yang dihasilkan dalam detik. Nilai yang valid untuk parameter ini bergantung pada parameter model:

  • wan2.6-t2v: Bilangan bulat dari 2 hingga 15. Nilai default adalah 5.
  • wan2.6-t2v-us: Nilai yang valid adalah 5 dan 10. Nilai default adalah 5.
  • wan2.5-t2v-preview: Nilai yang valid adalah 5 dan 10. Nilai default adalah 5.
  • wan2.2-t2v-plus: Tetap 5 detik dan tidak dapat diubah.
  • wan2.1-t2v-plus: Tetap 5 detik dan tidak dapat diubah.
  • wan2.1-t2v-turbo: Tetap 5 detik dan tidak dapat diubah.

prompt_extendboolean (Opsional)

Menentukan apakah akan mengaktifkan penulisan ulang prompt. Saat diaktifkan, model secara cerdas menulis ulang prompt input. Ini secara signifikan meningkatkan kualitas video yang dihasilkan untuk prompt yang lebih pendek tetapi meningkatkan waktu eksekusi.

  • true (default)
  • false

shot_type string (Opsional)

Model yang didukung: model wan2.6.

Menentukan jenis shot video yang dihasilkan, yaitu apakah video terdiri dari satu shot berkelanjutan atau beberapa shot yang berubah.

Nilai yang valid:

  • single: Nilai default. Menghasilkan video single-shot.
  • multi: Menghasilkan video multi-shot.

Kondisi: Parameter ini hanya berlaku ketika "prompt_extend": true diatur.

Prioritas parameter: shot_type > prompt. Misalnya, jika shot_type diatur ke "single", model menghasilkan video single-shot meskipun prompt berisi "generate a multi-shot video".

watermark boolean (Opsional)

Menentukan apakah akan menambahkan Watermark. Watermark ditempatkan di pojok kanan bawah video dengan teks tetap "AI Generated".

  • false (default)
  • true

seed integer (Opsional)

Bilangan acak seed harus berupa bilangan bulat dalam rentang [0, 2147483647].

Jika tidak ditentukan, seed acak akan dihasilkan. Seed tetap meningkatkan kemampuan reproduksi.

Karena generasi model bersifat probabilistik, seed yang sama tidak menjamin hasil identik.

Narasi multi-shot

  • Untuk video multi-shot, shot_type harus diatur ke "multi".
  • Untuk video multi-shot, prompt_extend harus diatur ke true untuk mengaktifkan penulisan ulang prompt demi optimasi deskripsi shot.

# URL wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.6-t2v",
    "input": {
        "prompt": "Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: \"Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya\".",
        "audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3"
    },
    "parameters": {
        "size": "1280*720",
        "prompt_extend": true,
        "duration": 10,
        "shot_type":"multi"
    }
}'

Sediakan file audio

Model yang didukung: model seri wan2.6/wan2.5.

Anda dapat menyediakan URL file audio kustom menggunakan parameter input.audio_url.


# URL wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.5-t2v-preview",
    "input": {
        "prompt": "Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: \"Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya\".",
        "audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3"
    },
    "parameters": {
        "size": "832*480",
        "prompt_extend": true,
        "duration": 10
    }
}'

Dubbing otomatis

Model yang didukung: model seri wan2.6/wan2.5.

Jika Anda tidak menyediakan input.audio_url, model secara otomatis menghasilkan musik latar atau efek suara yang sesuai berdasarkan konten video.


# URL wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.5-t2v-preview",
    "input": {
        "prompt": "Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: \"Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya\""
    },
    "parameters": {
        "size": "832*480",
        "prompt_extend": true,
        "duration": 10
    }
}'

Hasilkan video tanpa suara

Hanya model seri wan2.2 dan wan2.1 yang mendukung pembuatan video tanpa suara. Model-model ini menghasilkan video tanpa suara secara default dan tidak memerlukan konfigurasi tambahan.

Model seri wan2.6 dan wan2.5 menghasilkan video dengan audio secara default.


# URL wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.2-t2v-plus",
    "input": {
        "prompt": "Kontras rendah, di stasiun subway bergaya retro tahun 70-an, seorang musisi jalanan bermain di tengah warna redup dan tekstur kasar. Ia mengenakan jaket kuno, memegang gitar, dan bermain dengan konsentrasi. Para komuter berlalu-lalang, dan kerumunan kecil perlahan berkumpul untuk mendengarkan. Kamera perlahan bergerak ke kanan, menangkap adegan di mana suara instrumen menyatu dengan hiruk-pikuk kota, dengan rambu-rambu subway bergaya lama dan dinding belang-belang di latar belakang."
    },
    "parameters": {
        "size": "832*480",
        "prompt_extend": true
    }
}'

Gunakan prompt negatif

Model yang didukung: Semua model.

Gunakan parameter negative_prompt untuk mengecualikan elemen "bunga" dan mencegahnya muncul dalam video.


# URL wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.2-t2v-plus",
    "input": {
        "prompt": "Seekor anak kucing berlari di bawah cahaya bulan",
        "negative_prompt": "flower"
    },
    "parameters": {
        "size": "832*480"
    }
}'

Parameter respons

output object

Berisi informasi output tugas.

Properti

task_id string

ID tugas. Berlaku untuk kueri selama 24 jam.

task_status string

Status tugas.

Nilai enumerasi

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: Tugas tidak ada atau statusnya tidak diketahui.

request_id string

Pengidentifikasi permintaan unik untuk pelacakan dan troubleshooting.

code string

Kode kesalahan. Dikembalikan hanya untuk permintaan yang gagal. Lihat Kode kesalahan.

message string

Pesan kesalahan terperinci. Dikembalikan hanya untuk permintaan yang gagal. Lihat Kode kesalahan.

Respons berhasil

Simpan task_id untuk menanyakan status dan hasil tugas.

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

Respons error

Pembuatan tugas gagal. Lihat Kode kesalahan.

{
    "code": "InvalidApiKey",
    "message": "Invalid API-key provided.",
    "request_id": "7438d53d-6eb8-4596-8835-xxxxxx"
}

Langkah 2: Tanyakan hasil berdasarkan ID tugas

Singapura

GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Virginia

GET https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Frankfurt

GET https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Beijing

GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Catatan

  • Rekomendasi polling: Pembuatan video memerlukan beberapa menit. Gunakan mekanisme polling dengan interval yang masuk akal, misalnya 15 detik.
  • Transisi status tugas: PENDING → RUNNING → SUCCEEDED atau FAILED.
  • Tautan hasil: Setelah tugas berhasil, URL video yang berlaku selama 24 jam dikembalikan. Unduh dan simpan video ke penyimpanan permanen, seperti OSS.
  • task_idmasa berlaku: 24 jam. Setelah periode ini, kueri mengembalikan status tugas sebagai UNKNOWN.

Parameter permintaan

Header permintaan

Authorization string (Wajib)

Mengotentikasi permintaan dengan Kunci API Model Studio. Contoh: Bearer sk-xxxx.

Parameter path URL

task_id string (Wajib)

ID tugas.

Tanyakan hasil tugas

Ganti {task_id} dengan nilai task_id yang dikembalikan oleh pemanggilan API sebelumnya. task_id berlaku untuk kueri selama 24 jam, Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Parameter respons

outputobject

Berisi informasi output tugas.

Properti

task_id string

ID tugas. Berlaku untuk kueri selama 24 jam.

task_status string

Status tugas.

Nilai enumerasi

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: Tugas tidak ada atau statusnya tidak diketahui.
Transisi status selama polling:
  • PENDING → RUNNING → SUCCEEDED atau FAILED.
  • Status kueri awal biasanya PENDING atau RUNNING.
  • Saat status berubah menjadi SUCCEEDED, respons berisi URL video yang dihasilkan.
  • Jika statusnya FAILED, periksa pesan kesalahan dan coba lagi tugas tersebut.

submit_time string

Waktu saat tugas diajukan. Waktu dalam UTC+8 dan formatnya YYYY-MM-DD HH:mm:ss.SSS.

scheduled_time string

Waktu saat tugas dieksekusi. Waktu dalam UTC+8 dan formatnya YYYY-MM-DD HH:mm:ss.SSS.

end_time string

Waktu saat tugas selesai. Waktu dalam UTC+8 dan formatnya YYYY-MM-DD HH:mm:ss.SSS.

video_url string

URL video yang dihasilkan. Dikembalikan hanya saat task_status adalah SUCCEEDED.

Berlaku selama 24 jam. Video dalam format MP4 dengan encoding H.264.

orig_prompt string

Prompt input asli, sesuai dengan parameter permintaan prompt.

actual_prompt string

Saat prompt_extend=true, sistem menulis ulang prompt input. Bidang ini mengembalikan prompt yang dioptimalkan yang digunakan untuk generasi.

  • Jika prompt_extend=false, bidang ini tidak dikembalikan.
  • Catatan: Model wan2.6 tidak mengembalikan bidang ini, terlepas dari nilai prompt_extend.

code string

Kode kesalahan. Dikembalikan hanya untuk permintaan yang gagal. Lihat Kode kesalahan.

message string

Pesan kesalahan terperinci. Dikembalikan hanya untuk permintaan yang gagal. Lihat Kode kesalahan.

usage object

Berisi statistik tentang output. Informasi ini hanya diberikan untuk tugas yang berhasil.

Properti

video_duration integer

Dikembalikan hanya saat menggunakan model wan2.5 dan versi sebelumnya. Digunakan untuk penagihan.

Durasi video yang dihasilkan dalam detik. Nilai yang valid adalah 5 dan 10.

duration float

Dikembalikan hanya saat menggunakan model wan2.6. Digunakan untuk penagihan.

Menunjukkan total durasi video, di mana duration = input_video_duration + output_video_duration.

input_video_duration integer

Dikembalikan hanya saat menggunakan model wan2.6. Tetap 0.

output_video_duration integer

Dikembalikan hanya saat menggunakan model wan2.6.

Durasi video output dalam detik. Nilainya sama dengan nilai input.duration.

SR integer

Dikembalikan hanya saat menggunakan model wan2.6. Tier resolusi video yang dihasilkan. Contoh: 720.

size string

Dikembalikan hanya saat menggunakan model wan2.6. Resolusi video yang dihasilkan. Formatnya "lebartinggi". Contoh: 19201080.

video_ratio string

Dikembalikan hanya saat menggunakan model wan2.5 dan versi sebelumnya. Resolusi video yang dihasilkan. Formatnya "lebartinggi". Contoh: 832480.

video_count integer

Jumlah video yang dihasilkan. Tetap 1.

request_id string

Pengidentifikasi permintaan unik untuk pelacakan dan troubleshooting.

Tugas berhasil

URL video hanya berlaku selama 24 jam, lalu secara otomatis dihapus. Segera simpan video yang dihasilkan.

{
    "request_id": "abbf7aa3-9652-4785-a622-xxxxxx",
    "output": {
        "task_id": "38513c71-5190-48e1-9f3b-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-09-29 14:05:22.119",
        "scheduled_time": "2025-09-29 14:05:28.278",
        "end_time": "2025-09-29 14:10:00.437",
        "orig_prompt": "Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: 'Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya'",
        "video_url": "https://dashscope-result-sh.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx"
    },
    "usage": {
        "duration": 10,
        "size": "1280*720",
        "input_video_duration": 0,
        "output_video_duration": 10,
        "video_count": 1,
        "SR": 720
    }
}

Tugas gagal

Saat tugas gagal, task_status adalah FAILED dengan kode dan pesan kesalahan. Lihat Kode kesalahan.

{
    "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-a0c6a421c010",
        "task_status": "FAILED",
        "code": "InvalidParameter",
        "message": "The size is not match xxxxxx"
    }
}

Kueri tugas kedaluwarsa

task_id berlaku selama 24 jam. Setelah periode ini, kueri mengembalikan kesalahan berikut.

{
    "request_id": "a4de7c32-7057-9f82-8581-xxxxxx",
    "output": {
        "task_id": "502a00b1-19d9-4839-a82f-xxxxxx",
        "task_status": "UNKNOWN"
    }
}

DashScope SDK

Nama parameter dalam SDK sebagian besar konsisten dengan API HTTP, dan struktur parameter dienkapsulasi agar sesuai dengan fitur bahasa pemrograman.

Karena tugas text-to-video memerlukan waktu lama untuk diselesaikan (biasanya 1 hingga 5 menit), SDK mengenkapsulasi proses pemanggilan asinkron HTTP dan mendukung metode pemanggilan sinkron maupun asinkron.

Waktu pemrosesan aktual bergantung pada jumlah tugas dalam antrian dan status layanan. Tunggu hasilnya.

Python

PentingPastikan versi SDK Python DashScope Anda minimal1.25.16 sebelum menjalankan kode berikut.

Jika Anda menggunakan versi lama, Anda mungkin mengalami kesalahan seperti "url error, please check url!". Untuk memperbarui SDK, lihat Instal SDK.

Atur dashscope.base_http_api_url berdasarkan wilayah tempat model berada:

Singapura

dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Virginia

dashscope.base_http_api_url = 'https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1'

Beijing

dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1'

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Frankfurt

dashscope.base_http_api_url = 'https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1'

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Pemanggilan sinkron

Contoh permintaan
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os

# URL untuk wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/text-to-video-api-reference.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# Jika tidak ada variabel lingkungan yang dikonfigurasi, ganti dengan Kunci API Model Studio Anda: api_key="sk-xxx".
# Kunci API bervariasi berdasarkan wilayah. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key = os.getenv("DASHSCOPE_API_KEY")

def sample_sync_call_t2v():
    # Panggil API sinkron dan kembalikan hasilnya.
    print('Mohon tunggu...')
    rsp = VideoSynthesis.call(api_key=api_key,
                              model='wan2.6-t2v',
                              prompt="Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: 'Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya.'",
                              audio_url='https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3',
                              size='1280*720',
                              duration=10,
                              negative_prompt="",
                              prompt_extend=True,
                              watermark=False,
                              seed=12345)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.video_url)
    else:
        print('Gagal. Kode status: %s, kode: %s, pesan: %s' %
              (rsp.status_code, rsp.code, rsp.message))

if __name__ == '__main__':
    sample_sync_call_t2v()
Contoh respons

video_url berlaku selama 24 jam. Segera unduh.

{
    "status_code": 200,
    "request_id": "167f3beb-3dd0-47fe-a83c-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "5b65411f-d946-4e29-859e-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
        "submit_time": "2025-10-23 11:47:23.879",
        "scheduled_time": "2025-10-23 11:47:34.351",
        "end_time": "2025-10-23 11:52:35.323",
        "orig_prompt": "Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: 'Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya '."
    },
    "usage": {
        "video_count": 1,
        "duration": 10,
        "size": "1280*720",
        "input_video_duration": 0,
        "output_video_duration": 10,
        "SR": 720
    }
}

Pemanggilan asinkron

Contoh permintaan
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os

# Ini adalah URL wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah. Untuk informasi lebih lanjut, lihat: https://www.alibabacloud.com/help/en/model-studio/text-to-video-api-reference
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# Jika variabel lingkungan tidak dikonfigurasi, ganti ini dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API bervariasi berdasarkan wilayah. Untuk informasi lebih lanjut, lihat: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

def sample_async_call_t2v():
    # Panggil API asinkron dan kembalikan informasi tugas.
    # Gunakan ID tugas untuk memeriksa status.
    rsp = VideoSynthesis.async_call(api_key=api_key,
                                    model='wan2.6-t2v',
                                    prompt="Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: 'Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya '.",
                                    audio_url='https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3',
                                    size='1280*720',
                                    duration=10,
                                    negative_prompt="",
                                    prompt_extend=True,
                                    watermark=False,
                                    seed=12345)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print("task_id: %s" % rsp.output.task_id)
    else:
        print('Gagal. Kode status: %s, kode: %s, pesan: %s' %
              (rsp.status_code, rsp.code, rsp.message))

    # Ambil informasi tugas, termasuk status tugas.
    status = VideoSynthesis.fetch(task=rsp, api_key=api_key)
    if status.status_code == HTTPStatus.OK:
        print(status.output.task_status)  # Periksa status tugas.
    else:
        print('Gagal. Kode status: %s, kode: %s, pesan: %s' %
              (status.status_code, status.code, status.message))

    # Tunggu hingga tugas selesai. Metode ini memanggil fetch secara berkala dan memeriksa apakah tugas berada dalam status selesai.
    rsp = VideoSynthesis.wait(task=rsp, api_key=api_key)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.video_url)
    else:
        print('Gagal. Kode status: %s, kode: %s, pesan: %s' %
              (rsp.status_code, rsp.code, rsp.message))

if __name__ == '__main__':
    sample_async_call_t2v()
Contoh respons
  1. Contoh respons terhadap permintaan pembuatan tugas
{
	"status_code": 200,
	"request_id": "c86ff7ba-8377-917a-90ed-xxxxxx",
	"code": "",
	"message": "",
	"output": {
		"task_id": "721164c6-8619-4a35-a6d9-xxxxxx",
		"task_status": "PENDING",
		"video_url": ""
	},
	"usage": null
}
  1. Contoh respons terhadap permintaan kueri tugas

URL video kedaluwarsa dalam 24 jam. Harap unduh video sebelum kedaluwarsa.

{
    "status_code": 200,
    "request_id": "167f3beb-3dd0-47fe-a83c-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "5b65411f-d946-4e29-859e-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
        "submit_time": "2025-10-23 11:47:23.879",
        "scheduled_time": "2025-10-23 11:47:34.351",
        "end_time": "2025-10-23 11:52:35.323",
        "orig_prompt": "Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: 'Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya '."
    },
    "usage": {
        "video_count": 1,
        "duration": 10,
        "size": "1280*720",
        "input_video_duration": 0,
        "output_video_duration": 10,
        "SR": 720
    }
}

Java

PentingPastikan versi kit pengembangan perangkat lunak (SDK) Java DashScope Anda minimal2.22.14 sebelum menjalankan kode berikut.

Jika Anda menggunakan versi lama, Anda mungkin mengalami kesalahan seperti "url error, please check url!". Untuk memperbarui SDK, lihat Instal SDK.

Atur Constants.baseHttpApiUrl berdasarkan wilayah tempat model berada:

Singapura

Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Virginia

Constants.baseHttpApiUrl = "https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1";

Beijing

Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Frankfurt

Constants.baseHttpApiUrl = "https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1";

Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.

Pemanggilan sinkron

Contoh permintaan
// Copyright (c) Alibaba, Inc. dan afiliasinya.

// SDK dashscope versi 2.18.2 atau lebih baru
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

import java.util.HashMap;
import java.util.Map;

public class Text2Video {

    static {
        // URL wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/text-to-video-api-reference.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // Jika tidak ada variabel lingkungan yang dikonfigurasi, ganti nilai ini dengan Kunci API Model Studio Anda: apiKey = "sk-xxx".
    // Kunci API bervariasi berdasarkan wilayah. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
    public static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void text2Video() throws ApiException, NoApiKeyException, InputRequiredException {
        VideoSynthesis vs = new VideoSynthesis();
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", 12345);

        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.6-t2v")
                        .prompt("Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: 'Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya'.")
                        .audioUrl("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3")
                        .negativePrompt("")
                        .size("1280*720")
                        .duration(10)
                        .parameters(parameters)
                        .build();
        System.out.println("Mohon tunggu...");
        VideoSynthesisResult result = vs.call(param);
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        try {
            text2Video();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
Contoh respons

video_url berlaku selama 24 jam. Segera unduh.

{
    "request_id": "c1209113-8437-424f-a386-xxxxxx",
    "output": {
        "task_id": "966cebcd-dedc-4962-af88-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-sh.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
        "orig_prompt": "Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: 'Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya '",
        "submit_time": "2026-01-22 23:13:40.553",
        "scheduled_time": "2026-01-22 23:13:49.415",
        "end_time": "2026-01-22 23:17:56.380"
    },
    "usage": {
        "video_count": 1,
        "duration": 10.0,
        "size": "1280*720",
        "input_video_duration": 0,
        "output_video_duration": 10,
        "SR": 720
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Pemanggilan asinkron

Contoh permintaan
// Copyright (c) Alibaba, Inc. dan afiliasinya.

import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisListResult;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.task.AsyncTaskListParam;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

import java.util.HashMap;
import java.util.Map;

public class Text2Video {
    static {
        // URL untuk wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/text-to-video-api-reference
        Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

     // Jika variabel lingkungan tidak diatur, ganti placeholder ini dengan Kunci API Model Studio Anda, misalnya: apiKey="sk-xxx"
    // Kunci API bervariasi berdasarkan wilayah. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
    public static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void text2Video() throws ApiException, NoApiKeyException, InputRequiredException {
        VideoSynthesis vs = new VideoSynthesis();
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", 12345);

        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.6-t2v")
                        .prompt("Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: 'Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya '.")
                        .audioUrl("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250929/stjqnq/%E7%8B%90%E7%8B%B8.mp3")
                        .negativePrompt("")
                        .size("1280*720")
                        .duration(10)
                        .parameters(parameters)
                        .build();

        // Lakukan pemanggilan asinkron.
        VideoSynthesisResult task = vs.asyncCall(param);
        System.out.println(JsonUtils.toJson(task));
        System.out.println("mohon tunggu...");

        // Ambil hasilnya.
        VideoSynthesisResult result = vs.wait(task, apiKey);
        System.out.println(JsonUtils.toJson(result));
    }

     // Ambil daftar tugas.
    public static void listTask() throws ApiException, NoApiKeyException {
        VideoSynthesis is = new VideoSynthesis();
        AsyncTaskListParam param = AsyncTaskListParam.builder().build();
        param.setApiKey(apiKey);
        VideoSynthesisListResult result = is.list(param);
        System.out.println(result);
    }

    // Ambil hasil satu tugas.
    public static void fetchTask(String taskId) throws ApiException, NoApiKeyException {
        VideoSynthesis is = new VideoSynthesis();
        // Jika Anda mengatur variabel lingkungan DASHSCOPE_API_KEY, Anda bisa mengatur apiKey ke null.
        VideoSynthesisResult result = is.fetch(taskId, apiKey);
        System.out.println(result.getOutput());
        System.out.println(result.getUsage());
    }

    public static void main(String[] args) {
        try {
            text2Video();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
Contoh respons
  1. Contoh respons terhadap permintaan pembuatan tugas.
{
        "request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
	"output": {
		"task_id": "7277e20e-aa01-4709-xxxxxxxx",
		"task_status": "PENDING"
	}
}
  1. Contoh respons terhadap permintaan kueri tugas

video_url berlaku selama 24 jam. Segera unduh.

{
    "request_id": "c1209113-8437-424f-a386-xxxxxx",
    "output": {
        "task_id": "966cebcd-dedc-4962-af88-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-sh.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
        "orig_prompt": "Shot dari sudut rendah, close-up medium, dengan nada hangat, pencahayaan campuran (cahaya praktis dari lampu meja menyatu dengan cahaya mendung dari jendela), pencahayaan samping, dan komposisi sentral. Di kantor detektif klasik, rak buku kayu dipenuhi berkas kasus lama dan asbak. Lampu meja hijau menerangi berkas kasus yang tersebar di tengah meja. Seekor rubah, mengenakan trench coat coklat tua dan fedora abu-abu muda, duduk di kursi kulit, bulunya merah tua, ekornya bertumpu ringan di tepi, jarinya perlahan membalik halaman-halaman yang menguning. Di luar, gerimis ringan turun di bawah langit biru, meninggalkan jejak berkelok di kaca. Perlahan ia mengangkat kepala, telinganya bergerak sedikit, matanya yang kuning keemasan menatap langsung ke kamera, mulutnya jelas bergerak saat berbicara dengan suara halus dan sinis: 'Kasus ini dingin, lebih dingin dari ikan di musim dingin. Tapi setiap ayam punya rahasia, dan saya, untuk satu hal, berniat menemukannya '",
        "submit_time": "2026-01-22 23:13:40.553",
        "scheduled_time": "2026-01-22 23:13:49.415",
        "end_time": "2026-01-22 23:17:56.380"
    },
    "usage": {
        "video_count": 1,
        "duration": 10.0,
        "size": "1280*720",
        "input_video_duration": 0,
        "output_video_duration": 10,
        "SR": 720
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Kode kesalahan

Jika pemanggilan model gagal dan mengembalikan pesan kesalahan, lihat Kode kesalahan untuk penyelesaian.

FAQ

T: Bagaimana cara mengonversi tautan video sementara menjadi tautan permanen?

J: Anda tidak dapat mengonversi tautan secara langsung. Prosedur yang benar adalah layanan backend Anda mengambil URL tersebut, mengunduh file videonya, lalu mengunggahnya ke layanan penyimpanan objek permanen, seperti Alibaba Cloud Object Storage Service (OSS), untuk menghasilkan tautan akses permanen baru.

Kode contoh: Unduh video ke perangkat lokal

import requests

def download_and_save_video(video_url, save_path):
    try:
        response = requests.get(video_url, stream=True, timeout=300) # Atur timeout
        response.raise_for_status() # Bangkitkan pengecualian jika kode status HTTP bukan 200
        with open(save_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                f.write(chunk)
        print(f"Video berhasil diunduh ke: {save_path}")
        # Tambahkan logika untuk mengunggah ke penyimpanan permanen di sini
    except requests.exceptions.RequestException as e:
        print(f"Gagal mengunduh video: {e}")

if __name__ == '__main__':
    video_url = "http://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxxx"
    save_path = "video.mp4"
    download_and_save_video(video_url, save_path)

T: Apakah tautan video yang dikembalikan dapat diputar langsung di browser?

J: Tidak. Anda sebaiknya tidak memutar tautan tersebut langsung di browser karena akan kedaluwarsa setelah 24 jam. Sebagai gantinya, Anda harus mengunduh dan menyimpan video tersebut, lalu menggunakan tautan permanen untuk pemutaran.