All Products
Search
Document Center

Alibaba Cloud Model Studio:Wan 2.7 - API image-to-video

Last Updated:Sep 02, 2026

Model image-to-video Wan 2.7 mendukung input multimodal (teks, gambar, audio, dan video) serta menjalankan tiga tugas: first-frame-to-video, first-and-last-frame-to-video, dan video continuation .

Referensi: Panduan pengguna

CatatanAPI image-to-video baru (model wan2.7) mendukung ketiga tugas tersebut. API image-to-video dari frame pertama sebelumnya (wan2.6 dan versi lebih lama) hanya mendukung first-frame-to-video.

Ketersediaan

Model, URL endpoint, dan Kunci API harus berada dalam Wilayah yang sama. Pemanggilan lintas-Wilayah akan gagal.

  • Pilih model: Pastikan model tersedia di Wilayah target Anda.
  • Pilih URL: Gunakan URL endpoint yang sesuai dengan Wilayah model Anda. URL HTTP dan SDK DashScope didukung.
  • Konfigurasikan Kunci API: Dapatkan Kunci API untuk Wilayah tersebut, lalu konfigurasikan Kunci API sebagai Variabel lingkungan.
  • Instal SDK: Untuk melakukan pemanggilan API menggunakan SDK, instal 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 menyarankan 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 pada halaman Detail Ruang Kerja di Konsol Alibaba Cloud Model Studio. Domain lama tetap berfungsi sepenuhnya.

HTTP

PentingAPI ini menggunakan protokol image-to-video baru dan hanya mendukung model wan2.7.

Tugas image-to-video biasanya memerlukan waktu 1 hingga 5 menit, sehingga API menggunakan pemanggilan asinkron. Alur kerja terdiri dari dua langkah: buat tugas, lalu poll hasilnya.

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

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 mengkueri 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

Generasi video dari frame pertama

Buat video berdasarkan gambar frame pertama dan audio.


# URL berikut untuk Wilayah Singapura. Saat memanggil, 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.7-i2v-2026-04-25",
        "input": {
            "prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life on a concrete wall. He sings an English rap song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The light comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of the rap, with no other dialogue or noise.",
            "media": [
                {
                    "type": "first_frame",
                    "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"
                },
                {
                    "type": "driving_audio",
                    "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"

                }
            ]
        },
        "parameters": {
            "resolution": "720P",
            "duration": 10,
            "prompt_extend": true,
            "watermark": true
        }
    }'

Generasi video dari frame pertama dan terakhir

Kirim frame pertama dan frame terakhir untuk menghasilkan video.


# URL berikut untuk Wilayah Singapura. Saat memanggil, 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.7-i2v-2026-04-25",
        "input": {
            "prompt": "Realistic style, a small black cat looks up at the sky curiously. The camera angle gradually rises from eye level, finally capturing its curious gaze from a top-down view.",
            "media": [
                {
                    "type": "first_frame",
                    "url": "https://wanx.alicdn.com/material/20250318/first_frame.png"
                },
                {
                    "type": "last_frame",
                    "url": "https://wanx.alicdn.com/material/20250318/last_frame.png"
                }
            ]
        },
        "parameters": {
            "resolution": "720P",
            "duration": 10,
            "prompt_extend": false,
            "watermark": true
        }
    }'

Kelanjutan video

Buat konten lanjutan berdasarkan klip video awal.


# URL berikut untuk Wilayah Singapura. Saat memanggil, 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.7-i2v-2026-04-25",
        "input": {
            "prompt": "A girl takes a selfie in the mirror, then leaves with her backpack.",
            "media": [
                {
                    "type": "first_clip",
                    "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260129/hfugmr/wan-r2v-role1.mp4"
                }
            ]
        },
        "parameters": {
            "resolution": "720P",
            "duration": 10,
            "prompt_extend": true,
            "watermark": true
        }
    }'

Content-Type string (Wajib)

Tipe konten permintaan. Harus application/json.

Authorization string (Wajib)

Mengautentikasi 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" akan dikembalikan.

Body permintaan

model string (Wajib)

Nama model. Untuk daftar model dan harga, lihat Harga model.

Contoh: wan2.7-i2v-2026-04-25.

input object (Wajib)

Informasi input dasar, termasuk prompt.

Properti

prompt string (Opsional)

Prompt teks yang menjelaskan elemen dan karakteristik visual untuk video yang dihasilkan.

Mendukung bahasa Tionghoa dan Inggris. Maksimal 5.000 karakter.

Setiap karakter Tionghoa atau huruf dihitung sebagai satu karakter. Teks yang melebihi batas akan dipotong secara otomatis.

Contoh: Seekor anak kucing berlari di atas rumput.

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

negative_prompt string (Opsional)

Menjelaskan konten yang harus dikecualikan dari video.

Mendukung bahasa Tionghoa dan Inggris. Maksimal 500 karakter. Teks yang melebihi batas akan dipotong secara otomatis.

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

media array (Wajib)

Materi referensi (gambar, audio, dan video) untuk generasi video.

Setiap elemen adalah objek media dengan bidang type dan url.

Kombinasi aset

Hanya kombinasi aset berikut yang valid. Kombinasi tidak valid akan mengembalikan kesalahan.

  • Generasi video dari frame pertama:

    • Frame pertama: first_frame
    • Frame pertama + audio: first_frame+driving_audio
  • Generasi video dari frame pertama dan terakhir:

    • Frame pertama + frame terakhir: first_frame+last_frame
    • Frame pertama + frame terakhir + audio: first_frame+last_frame+driving_audio
  • Kelanjutan video:

    • Kelanjutan klip video pertama: first_clip
    • Kelanjutan klip video pertama + frame terakhir: first_clip+last_frame

Properti

type string (Wajib)

Jenis aset media. Nilai valid:

  • first_frame
  • last_frame
  • driving_audio
  • first_clip

Batasan: Setiap type hanya boleh muncul paling banyak sekali dalam array media. Misalnya, Anda tidak dapat mengirim dua aset first_frame.

url string (Wajib)

URL aset media (gambar, audio, atau video).

Kirim gambar (type=first_frame atau last_frame)

URL atau data Base64-encoded untuk gambar frame pertama atau terakhir.

Batasan gambar:

  • Format: JPEG, JPG, PNG (saluran alfa tidak didukung), BMP, WEBP.
  • Resolusi: Lebar dan tinggi harus dalam rentang [240, 8000] piksel.
  • Rasio aspek: 1:8 hingga 8:1.
  • Ukuran file: maksimal 20 MB.

Format input yang didukung:

  1. URL publik:

  2. String gambar Base64-encoded:

    • Format data: data:{MIME_type};base64,{base64_data}.

    • Contoh: data:image/png;base64,GDU7MtCZzEbTbmRZ...... (Contoh dipotong untuk keperluan demonstrasi).

      Format data Base64-encoded

      Format: data:{MIME_type};base64,{base64_data} .

      • {base64_data}: String Base64-encoded dari file gambar.
      • {MIME_type}: Tipe Multipurpose Internet Mail Extensions (MIME) gambar, yang harus sesuai dengan format file.

Kirim audio (type=driving_audio)

URL file audio.

  • Dengan audio: Model menggunakannya sebagai sumber penggerak untuk sinkronisasi bibir dan penyesuaian waktu gerakan.
  • Tanpa audio: Model secara otomatis menghasilkan musik latar atau efek suara yang sesuai.

Batasan audio:

  • Format: wav, mp3.
  • Durasi: 2 hingga 30 detik.
  • Ukuran file: maksimal 15 MB.
  • Pemotongan: Jika durasi audio melebihi nilai duration (misalnya, 5 detik), audio akan dipotong secara otomatis menjadi 5 detik pertama, dan sisanya dibuang. Jika durasi audio lebih pendek daripada durasi video, bagian video yang melebihi durasi audio akan senyap. Misalnya, jika audio berdurasi 3 detik dan video berdurasi 5 detik, 3 detik pertama video hasil akan memiliki suara, dan 2 detik terakhir akan senyap.

Format input yang didukung:

  1. URL publik:

Kirim video (type=first_clip)

URL file video. Model menghasilkan kelanjutan berdasarkan konten video. Parameter duration mengontrol durasi total maksimum output.

Misalnya, jika duration=15 dan video input berdurasi 3 detik, model menghasilkan kelanjutan 12 detik. Video output akhir berdurasi 15 detik dan ditagih untuk 15 detik.

Batasan video:

  • Format: mp4, mov.
  • Durasi: 2 hingga 10 detik.
  • Resolusi: Lebar dan tinggi harus dalam rentang [240, 4096] piksel.
  • Rasio aspek: 1:8 hingga 8:1.
  • Ukuran file: maksimal 100 MB.

Format input yang didukung:

  1. URL publik:

parameters object (Opsional)

Parameter pemrosesan video: resolusi, durasi, penulisan ulang prompt, dan watermark.

Properti

resolution string (Opsional)

PentingResolusi berdampak langsung pada biaya. Sebelum memanggil, periksa Harga model.

Tingkat resolusi untuk video yang dihasilkan. Mengontrol jumlah total piksel.

Model secara otomatis menskalakan video ke jumlah total piksel yang mendekati tingkat yang dipilih. Rasio aspek output mengikuti materi input (frame pertama atau klip video pertama). Untuk detail, lihat FAQ.

Nilai valid adalah 720P dan 1080P. Default: 1080P.

duration integer (Opsional)

PentingDurasi berdampak langsung pada biaya. Penagihan per detik. Sebelum memanggil, periksa Harga model.

Durasi video yang dihasilkan dalam detik. Rentang valid tergantung pada model:

Nilai valid: bilangan bulat dari 2 hingga 15. Default: 5.

prompt_extendboolean (Opsional)

Apakah akan mengaktifkan penulisan ulang prompt. Saat diaktifkan, model menulis ulang prompt input untuk meningkatkan hasil prompt pendek, tetapi meningkatkan waktu pemrosesan.

  • true (default)
  • false

watermark boolean (Opsional)

Apakah akan menambahkan watermark "AI Generated" di pojok kanan bawah video.

  • false (default)
  • true

seed integer (Opsional)

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

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

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

Parameter respons

Respons berhasil

Simpan task_id untuk mengkueri status dan hasil tugas.

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

Respons kesalahan

Pembuatan tugas gagal. Lihat Kode kesalahan.

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

output object

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

Identifikasi permintaan unik untuk pelacakan dan troubleshooting.

code string

Kode kesalahan. Hanya dikembalikan untuk permintaan gagal. Lihat Kode kesalahan.

message string

Pesan kesalahan detail. Hanya dikembalikan untuk permintaan gagal. Lihat Kode kesalahan.

Langkah 2: Kueri hasil berdasarkan ID tugas

Singapura

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

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: Generasi video memerlukan beberapa menit. Gunakan mekanisme polling dengan interval wajar, 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 akan mengembalikan status tugas sebagai UNKNOWN.

Parameter permintaan

Kueri 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"
Header

Authorization string (Wajib)

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

Parameter path

task_id string (Wajib)

ID tugas.

Parameter respons

Tugas berhasil

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

{
    "request_id": "2ca1c497-f9e0-449d-9a3f-xxxxxx",
    "output": {
        "task_id": "af6efbc0-4bef-4194-8246-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-09-25 11:07:28.590",
        "scheduled_time": "2025-09-25 11:07:35.349",
        "end_time": "2025-09-25 11:17:11.650",
        "orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life on a concrete wall. He sings an English rap song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The light comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
        "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?Expires=xxx"
    },
    "usage": {
        "duration": 15,
        "input_video_duration": 0,
        "output_video_duration": 15,
        "video_count": 1,
        "SR": 720
    }
}

Tugas gagal

Saat tugas gagal, task_status bernilai 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"
    }
}

outputobject

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 status FAILED, periksa pesan kesalahan dan coba ulang tugas.

submit_time string

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

scheduled_time string

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

end_time string

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

video_url string

URL video yang dihasilkan. Hanya dikembalikan saat task_status bernilai SUCCEEDED.

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

orig_prompt string

Prompt input asli, sesuai dengan parameter permintaan prompt.

code string

Kode kesalahan. Hanya dikembalikan untuk permintaan gagal. Lihat Kode kesalahan.

message string

Pesan kesalahan detail. Hanya dikembalikan untuk permintaan gagal. Lihat Kode kesalahan.

usage object

Statistik penggunaan. Dihitung hanya untuk tugas yang berhasil.

Properti

input_video_duration integer

Durasi video input, dalam detik.

output_video_duration integer

Durasi video output, dalam detik.

duration integer

Total durasi video yang digunakan untuk penagihan.

SR integer

Resolusi video output. Contoh: 720.

video_count integer

Jumlah video output. Tetap 1.

request_id string

Identifikasi permintaan unik untuk pelacakan dan troubleshooting.

DashScope SDK

Nama parameter SDK sesuai dengan API HTTP. Struktur parameter dienkapsulasi berdasarkan konvensi bahasa.

Tugas image-to-video biasanya memerlukan waktu 1 hingga 5 menit. SDK mengenkapsulasi proses pemanggilan asinkron HTTP dan mendukung pemanggilan sinkron maupun asinkron.

Waktu pemrosesan aktual tergantung pada antrian tugas dan beban layanan. Tunggu hasilnya.

SDK Python

PentingPastikan versi SDK Python DashScope tidak lebih rendah dari 1.25.16 sebelum menjalankan kode berikut.

Jika versi terlalu lama, kesalahan seperti "url error, please check url!" dapat terjadi. Untuk informasi lebih lanjut, lihat Instal SDK untuk memperbaruinya.

Atur dashscope.base_http_api_url berdasarkan Wilayah model:

Singapura

dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-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.

Panggilan sinkron

Contoh permintaan
# -*- coding: utf-8 -*-
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os

# URL berikut untuk Wilayah Singapura. Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan Wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan: 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")

media = [
    {
        "type": "first_frame",
        "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"
    },
    {
        "type": "driving_audio",
        "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"
    }
]

def sample_sync_call():
    print('----Panggilan sinkron, mohon tunggu sebentar----')
    rsp = VideoSynthesis.call(
        api_key=api_key,
        model="wan2.7-i2v-2026-04-25",
        media=media,
        resolution="720P",
        duration=10,
        watermark=True,
        prompt="An urban fantasy art scene featuring a dynamic graffiti character. A boy made of spray paint comes to life on a concrete wall. He sings an English rap song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night, lit by a single street lamp. This creates a cinematic atmosphere with high energy and amazing detail. The video's audio consists entirely of the rap, with no other dialogue or noise.",
    )
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.video_url)
    else:
        print('Gagal, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

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

video_url berlaku selama 24 jam. Segera unduh video.

{
    "status_code": 200,
    "request_id": "ac5faf37-ddfa-9720-a0c5-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "b97c6d86-ad73-4bb7-80ff-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-a717.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
        "submit_time": "2026-04-13 10:45:47.597",
        "scheduled_time": "2026-04-13 10:45:56.342",
        "end_time": "2026-04-13 10:47:26.273",
        "orig_prompt": "An urban fantasy art scene. A dynamic graffiti character. A boy made of spray paint comes to life on a concrete wall. He performs a fast-paced English rap song while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The light comes from a single street lamp, creating a cinematic atmosphere with high energy and incredible detail. The audio consists solely of the rap, with no other dialogue or background noise."
    },
    "usage": {
        "video_count": 1,
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "SR": 720
    }
}

Panggilan asinkron

Contoh permintaan
# -*- coding: utf-8 -*-
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os

# URL berikut untuk Wilayah Singapura. Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan Wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# Jika variabel lingkungan belum diatur, ganti baris berikut dengan: api_key="sk-xxx"
# Kunci API bervariasi berdasarkan Wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

media = [
    {
        "type": "first_frame",
        "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"
    },
    {
        "type": "driving_audio",
        "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"
    }
]

def sample_async_call():
    # Kirim tugas asinkron. Informasi tentang tugas dikembalikan segera.
    rsp = VideoSynthesis.async_call(
        api_key=api_key,
        model="wan2.7-i2v-2026-04-25",
        media=media,
        resolution="720P",
        duration=10,
        watermark=True,
        prompt="A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life on a concrete wall. He sings an English rap song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The light comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of the rap, with no other dialogue or noise.",
    )
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print("task_id: %s" % rsp.output.task_id)
    else:
        print('Gagal, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

    # Kueri status tugas.
    status = VideoSynthesis.fetch(task=rsp, api_key=api_key)
    if status.status_code == HTTPStatus.OK:
        print(status.output.task_status)
    else:
        print('Gagal, status_code: %s, code: %s, message: %s' %
              (status.status_code, status.code, status.message))

    # Tunggu hingga tugas 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, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

if __name__ == '__main__':
    sample_async_call()
Contoh respons
  1. Contoh respons untuk membuat tugas
{
    "status_code": 200,
    "request_id": "6dc3bf6c-be18-9268-9c27-xxxxxx",
    "code": "",
    "message": "",
    "output": {
        "task_id": "686391d9-7ecf-4290-a8e9-xxxxxx",
        "task_status": "PENDING",
        "video_url": ""
    },
    "usage": null
}
  1. Contoh respons untuk mengkueri hasil tugas

    video_url berlaku selama 24 jam. Segera unduh video.

{
    "status_code": 200,
    "request_id": "ac5faf37-ddfa-9720-a0c5-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "b97c6d86-ad73-4bb7-80ff-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-a717.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
        "submit_time": "2026-04-13 10:45:47.597",
        "scheduled_time": "2026-04-13 10:45:56.342",
        "end_time": "2026-04-13 10:47:26.273",
        "orig_prompt": "An urban fantasy art scene. A dynamic graffiti character. A boy made of spray paint comes to life on a concrete wall. He performs a fast-paced English rap song while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The light comes from a single street lamp, creating a cinematic atmosphere with high energy and incredible detail. The audio consists solely of the rap, with no other dialogue or background noise."
    },
    "usage": {
        "video_count": 1,
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "SR": 720
    }
}

SDK Java

PentingPastikan versi SDK Java DashScope tidak lebih rendah dari 2.22.14 sebelum menjalankan kode berikut.

Jika versi terlalu lama, kesalahan seperti "url error, please check url!" dapat terjadi. Untuk informasi lebih lanjut, lihat Instal SDK untuk memperbaruinya.

Atur Constants.baseHttpApiUrl berdasarkan Wilayah model:

Singapura

Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-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.

Panggilan sinkron

Panggilan sinkron akan memblokir hingga generasi video selesai dan hasil dikembalikan.

Contoh permintaan
// Copyright (c) Alibaba, Inc. and its affiliates.

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.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.ArrayList;
import java.util.List;

public class Image2Video {

    static {
        // URL berikut untuk Wilayah Singapura. Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan Wilayah.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: apiKey="sk-xxx"
    // Kunci API spesifik Wilayah. Untuk mendapatkan Kunci API, kunjungi: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void syncCall() {
        VideoSynthesis videoSynthesis = new VideoSynthesis();
        final String prompt = "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life on a concrete wall. He sings an English rap song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The light comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.";
        List<VideoSynthesisParam.Media> media = new ArrayList<VideoSynthesisParam.Media>(){{
            add(VideoSynthesisParam.Media.builder()
                    .url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png")
                    .type("first_frame")
                    .build());
            add(VideoSynthesisParam.Media.builder()
                    .url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3")
                    .type("driving_audio")
                    .build());
        }};
        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.7-i2v-2026-04-25")
                        .prompt(prompt)
                        .media(media)
                        .watermark(true)
                        .duration(10)
                        .resolution("720P")
                        .build();
        VideoSynthesisResult result = null;
        try {
            System.out.println("---Panggilan sinkron, mohon tunggu...----");
            result = videoSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        } catch (InputRequiredException e) {
            throw new RuntimeException(e);
        }
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        syncCall();
    }
}
Contoh respons

video_url berlaku selama 24 jam. Segera unduh video.

{
    "request_id": "78178b55-8399-9823-8173-xxxxxx",
    "output": {
        "task_id": "be457e1b-8a79-47ed-aeff-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-a717.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
        "orig_prompt": "An urban fantasy art scene featuring a dynamic graffiti art character. A boy made of spray paint comes to life on a concrete wall. He rapidly sings an English rap song while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. A single street lamp provides the light, creating a high-energy cinematic atmosphere with incredible detail. The audio consists entirely of his rap, with no other dialogue or background noise.",
        "submit_time": "2026-04-13 10:57:36.795",
        "scheduled_time": "2026-04-13 10:57:46.280",
        "end_time": "2026-04-13 10:59:16.338"
    },
    "usage": {
        "video_count": 1,
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "SR": 720
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Panggilan asinkron

Contoh permintaan
// Copyright (c) Alibaba, Inc. and its affiliates.

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.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.ArrayList;
import java.util.List;

public class Image2Video {

    static {
        // URL berikut untuk Wilayah Singapura. Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan Wilayah.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: apiKey = "sk-xxx"
    // Kunci API spesifik Wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void asyncCall() {
        VideoSynthesis videoSynthesis = new VideoSynthesis();
        final String prompt = "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life on a concrete wall. He sings an English rap song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The light comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.";
        List<VideoSynthesisParam.Media> media = new ArrayList<VideoSynthesisParam.Media>(){{
            add(VideoSynthesisParam.Media.builder()
                    .url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png")
                    .type("first_frame")
                    .build());
            add(VideoSynthesisParam.Media.builder()
                    .url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3")
                    .type("driving_audio")
                    .build());
        }};
        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.7-i2v-2026-04-25")
                        .prompt(prompt)
                        .media(media)
                        .watermark(true)
                        .duration(10)
                        .resolution("720P")
                        .build();
        VideoSynthesisResult result = null;
        try {
            System.out.println("--- Memulai panggilan asinkron. Mohon tunggu... ---");
            result = videoSynthesis.asyncCall(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        } catch (InputRequiredException e) {
            throw new RuntimeException(e);
        }
        System.out.println(JsonUtils.toJson(result));

        String taskId = result.getOutput().getTaskId();
        System.out.println("taskId=" + taskId);

        try {
            result = videoSynthesis.wait(taskId, apiKey);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
        System.out.println(JsonUtils.toJson(result.getOutput()));
    }

    public static void main(String[] args) {
        asyncCall();
    }
}
Contoh respons
  1. Contoh respons untuk membuat tugas
{
    "request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
    "output": {
        "task_id": "7277e20e-aa01-4709-xxxxxxxx",
        "task_status": "PENDING"
    }
}
  1. Contoh respons untuk mengkueri hasil tugas

    video_url berlaku selama 24 jam. Segera unduh video.

{
    "request_id": "78178b55-8399-9823-8173-xxxxxx",
    "output": {
        "task_id": "be457e1b-8a79-47ed-aeff-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-a717.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
        "orig_prompt": "An urban fantasy art scene featuring a dynamic graffiti art character. A boy made of spray paint comes to life on a concrete wall. He rapidly sings an English rap song while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. A single street lamp provides the light, creating a high-energy cinematic atmosphere with incredible detail. The audio consists entirely of his rap, with no other dialogue or background noise.",
        "submit_time": "2026-04-13 10:57:36.795",
        "scheduled_time": "2026-04-13 10:57:46.280",
        "end_time": "2026-04-13 10:59:16.338"
    },
    "usage": {
        "video_count": 1,
        "duration": 10,
        "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 menyelesaikan masalah.

FAQ

T: Bagaimana cara menghasilkan video dengan rasio aspek tertentu, seperti 3:4?

J: Rasio aspek output ditentukan oleh materi input (gambar frame pertama atau klip video pertama) tetapi tidak dijamin persis sama. Deviasi kecil dapat terjadi.

Contoh berikut menjelaskan logika menggunakan gambar frame pertama sebagai input:

  • Mengapa deviasi terjadi?
    • Logika eksekusi: Sistem menggunakan rasio aspek gambar input sebagai garis dasar, dikombinasikan dengan total piksel target untuk tingkat resolution. Karena pengkodean video memerlukan lebar dan tinggi kelipatan 16, sistem menyesuaikan output ke resolusi valid terdekat.
    • Contoh perhitungan: Gambar input 750 x 1000 piksel (rasio 3:4 = 0,75) dengan resolusi "720P" (~920.000 total piksel) menghasilkan output 816 x 1104 piksel (rasio ~0,739, ~900.000 total piksel).
  • Rekomendasi:

    • Kontrol input: Gunakan frame pertama atau klip video yang sesuai dengan rasio aspek target Anda.
    • Pasca-pemrosesan: Untuk kebutuhan rasio aspek ketat, potong video atau tambahkan bilah hitam setelah generasi.

T: Bagaimana cara mendapatkan daftar putih nama domain untuk akses penyimpanan video?

J: Video yang dihasilkan model disimpan di OSS. API mengembalikan URL publik sementara. Untuk mengonfigurasi daftar putih firewall untuk URL unduh ini, perhatikan hal berikut: Penyimpanan dasar dapat berubah secara dinamis. Topik ini tidak menyediakan daftar putih nama domain OSS tetap untuk mencegah masalah akses akibat informasi usang. Jika Anda memiliki kebutuhan kontrol keamanan, hubungi manajer akun Anda untuk mendapatkan daftar nama domain OSS terbaru.