All Products
Search
Document Center

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

Last Updated:Jun 04, 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

Catatan

API 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.

Catatan

Kode contoh dalam topik ini berlaku untuk wilayah Singapore.

Penting

Domain lama https://dashscope-intl.aliyuncs.com untuk wilayah Singapore akan segera ditinggalkan. Segera migrasikan ke domain baru https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com.

HTTP

Penting

API 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

Singapore

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

Saat memanggil, ganti WorkspaceId dengan Workspace ID yang sebenarnya.

Beijing

POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

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 Postman.

Parameter permintaan

Generasi video dari frame pertama

Buat video berdasarkan gambar frame pertama dan audio.

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

Gunakan frame pertama dan frame terakhir untuk menghasilkan video.

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.

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 berupa 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 panggilan asinkron. Harus diatur ke enable.

Penting

Jika header permintaan ini tidak disertakan, 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. Batas panjang bervariasi tergantung versi model:

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 yang 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).

Meneruskan 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:

    • Protokol HTTP atau HTTPS didukung.

    • Contoh: https://xxx/xxx.png.

  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 yang Diencode Base64

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

      • {base64_data}: String Base64-encoded dari file gambar.

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

Teruskan Audio (type=driving_audio)

URL file audio.

  • Dengan audio: Model menggunakannya sebagai sumber penggerak untuk sinkronisasi bibir dan penentuan 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 output akan memiliki suara, dan 2 detik terakhir akan senyap.

Format input yang didukung:

  1. URL publik:

    • Protokol HTTP dan HTTPS didukung.

    • Contoh: https://xxx/xxx.mp3.

Meneruskan 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:

    • Protokol HTTP dan HTTPS didukung.

    • Contoh: https://xxx/xxx.mp4.

parameters object (Opsional)

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

Properti

resolution string (Opsional)

Penting

Resolusi 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 detailnya, lihat FAQ.

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

duration integer (Opsional)

Penting

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

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

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

prompt_extend boolean (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)

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.

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 yang gagal. Lihat Kode kesalahan.

message string

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

Langkah 2: Kueri hasil berdasarkan ID tugas

Singapore

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

Saat memanggil, ganti WorkspaceId dengan Workspace ID yang sebenarnya.

Beijing

GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

Catatan
  • Rekomendasi polling: Generasi video memerlukan beberapa menit. Gunakan mekanisme polling dengan interval yang 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_id masa 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 panggilan API sebelumnya. task_id berlaku untuk kueri selama 24 jam.

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)

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

Parameter jalur

task_id string (Wajib)

ID tugas.

Parameter respons

Tugas berhasil

URL video hanya berlaku selama 24 jam, lalu secara otomatis dihapus. 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 akan mengembalikan kesalahan berikut.

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

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.

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 ulang 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. 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 yang gagal. Lihat Kode kesalahan.

message string

Pesan kesalahan detail. Hanya dikembalikan untuk permintaan yang 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 bernilai 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 pemrograman.

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

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

SDK Python

Penting

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

Jika versinya 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:

Singapore

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

Saat memanggil, ganti WorkspaceId dengan Workspace ID yang sebenarnya.

Beijing

dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'

Panggilan sinkron

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

# Ini adalah URL untuk wilayah Singapore. URL bervariasi berdasarkan wilayah. Untuk informasi lebih lanjut, lihat https://www.alibabacloud.com/help/en/model-studio/image-to-video-general-api-reference
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 tersebut.
{
    "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,
        "video_duration": 0,
        "video_ratio": "",
        "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

# Ini adalah URL untuk wilayah Singapore. URL bervariasi berdasarkan wilayah. Untuk mendapatkan URL wilayah Anda, lihat https://www.alibabacloud.com/help/en/model-studio/image-to-video-general-api-reference
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 saat 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
    }
  2. Contoh respons saat mengkueri hasil tugas

    video_url berlaku selama 24 jam. Segera unduh video tersebut.
    {
        "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,
            "video_duration": 0,
            "video_ratio": "",
            "duration": 10,
            "input_video_duration": 0,
            "output_video_duration": 10,
            "SR": 720
        }
    }

SDK Java

Penting

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

Jika versinya 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:

Singapore

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

Saat memanggil, ganti WorkspaceId dengan Workspace ID yang sebenarnya.

Beijing

Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1"

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 {
        // Ini adalah URL untuk wilayah Singapore. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
        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 bersifat 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 tersebut.
{
    "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.0,
        "input_video_duration": 0.0,
        "output_video_duration": 10.0,
        "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 {
        // Ini adalah URL untuk wilayah Singapore. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
        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 bersifat 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 saat membuat tugas

    {
        "request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
        "output": {
            "task_id": "7277e20e-aa01-4709-xxxxxxxx",
            "task_status": "PENDING"
        }
    }
  2. Contoh respons saat mengkueri hasil tugas

    video_url berlaku selama 24 jam. Segera unduh video tersebut.
    {
        "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.0,
            "input_video_duration": 0.0,
            "output_video_duration": 10.0,
            "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 logikanya 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 mengharuskan lebar dan tinggi merupakan 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 yang ketat, potong video atau tambahkan batang 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 yang kedaluwarsa. Jika Anda memiliki kebutuhan kontrol keamanan, hubungi manajer akun Anda untuk mendapatkan daftar nama domain OSS terbaru.