All Products
Search
Document Center

Alibaba Cloud Model Studio:Wan2.1 - referensi API pengeditan gambar umum

Last Updated:Mar 01, 2026

Topik ini menjelaskan parameter input dan output untuk model Wan – pengeditan gambar umum.

Penting

Dokumen ini hanya berlaku untuk wilayah Daratan Tiongkok (Beijing). Untuk menggunakan model ini, gunakan API key dari wilayah Daratan Tiongkok (Beijing).

Model ini menggunakan instruksi sederhana untuk menjalankan berbagai tugas pengeditan gambar, seperti ekspansi gambar, penghapusan watermark, style transfer, inpainting gambar, dan peningkatan gambar. Fitur-fitur berikut saat ini didukung:

  • Stilisasi gambar: Stilisasi global dan lokal.

  • Pengeditan konten gambar: Pengeditan berbasis instruksi (menambah atau memodifikasi konten gambar menggunakan instruksi tanpa menentukan area), inpainting (menambah, menghapus, atau memodifikasi konten di area tertentu), serta penghapusan watermark teks (bahasa Tiongkok dan Inggris).

  • Optimisasi ukuran dan resolusi gambar: Ekspansi gambar (memperluas berdasarkan rasio) dan super resolusi (meningkatkan ke definisi tinggi).

  • Pemrosesan warna gambar: Pewarnaan (mengubah gambar hitam-putih atau grayscale menjadi berwarna).

  • Generasi berdasarkan gambar referensi: Generasi sketsa-ke-gambar (mengekstrak sketsa dari gambar input lalu menghasilkan gambar berdasarkan sketsa tersebut) dan generasi karakter kartun berdasarkan referensi.

Panduan terkait: Pengeditan gambar - Wan2.1

Ikhtisar model

Model

Harga

Batas laju (dibagi bersama oleh akun root dan Pengguna RAM)

RPS pengiriman tugas

Tugas konkuren

wanx2.1-imageedit

$0,020070/gambar

2

2

Efek model

Fitur

Gambar input

Prompt input

Gambar output

Stilisasi global

image

Convert to French picture book style

image

Stilisasi lokal

image

Change the house to a wooden style.

image

Pengeditan berbasis instruksi

image

Change her hair to red.

image

Inpainting

Input image

image

Input mask image (white is the masked area)

image

A ceramic rabbit holding a ceramic flower.

Output image

image

Penghapusan watermark teks

image

Remove the text from the image.

image

Ekspansi gambar

20250319105917

A green fairy.

image

Super Resolution

Blurry image

image

Super resolution.

Clear image

image

Pewarnaan

image

Blue background, yellow leaves.

image

Generasi sketsa-ke-gambar

Input image

image

A living room in a minimalist Nordic style.

Extract the sketch from the original image and generate a new image

image

Generasi karakter kartun berdasarkan referensi

Input reference image (cartoon character)

image

The cartoon character cautiously peeks out, looking at a sparkling blue gem in the room.

Output image

image

Prasyarat

Panggil API Wan – pengeditan gambar umum menggunakan HTTP atau SDK DashScope.

Sebelum melakukan panggilan, dapatkan API key dan ekspor API key sebagai variabel lingkungan.

Untuk memanggil API menggunakan SDK, instal SDK DashScope. SDK tersedia untuk Python dan Java.

HTTP

Model gambar dapat membutuhkan waktu lama untuk diproses. Panggilan HTTP hanya mendukung pengambilan hasil secara asinkron untuk mencegah timeout permintaan. Hal ini memerlukan dua permintaan:

  1. Buat tugas untuk mendapatkan ID tugas: Mengirim permintaan untuk membuat tugas. Respons akan mengembalikan ID tugas (task_id).

  2. Kueri hasil berdasarkan ID tugas: Menggunakan ID tugas dari langkah sebelumnya untuk menanyakan status dan hasil tugas. Jika tugas berhasil, respons akan mengembalikan URL gambar (berlaku selama 24 jam).

Catatan

Setelah tugas dibuat, tugas tersebut ditambahkan ke antrian untuk menunggu penjadwalan. Panggil API "Kueri hasil berdasarkan ID tugas" untuk mengambil status dan hasil tugas.

Model pengeditan gambar umum membutuhkan waktu sekitar 5 hingga 15 detik untuk memproses permintaan. Waktu aktual tergantung pada jumlah tugas dalam antrian dan kondisi jaringan. Harap bersabar menunggu hasilnya.

Langkah 1: Buat tugas untuk mendapatkan ID tugas

POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis

Parameter permintaan

Stilisasi global

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "stylization_all",
    "prompt": "Convert to French picture book style",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/stylization_all_1.jpeg"
  },
  "parameters": {
    "n": 1
  }
}'

Meneruskan berkas lokal (Base64)

Contoh berikut menunjukkan cara melewatkan parameter yang diencode Base64 untuk stilisasi global.

Karena string yang diencode Base64 panjang, unduh image_base64 dan salin seluruh isinya ke parameter base_image_url.

Untuk informasi lebih lanjut tentang format data, lihat Format yang didukung.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "stylization_all",
    "prompt": "Convert to French picture book style",
    "base_image_url": "data:image/jpeg;base64,/9j/4AAQSkZJR......"
  },
  "parameters": {
    "n": 1
  }
}'

Stilisasi lokal

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "stylization_local",
    "prompt": "Change the house to a wooden style.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/stylization_local_1.png"
  },
  "parameters": {
    "n": 1
  }
}'

Pengeditan berbasis instruksi

Deskripsi fitur: Menambah atau memodifikasi konten gambar hanya dengan instruksi, tanpa menentukan area.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "description_edit",
    "prompt": "Change her hair to red.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_2.png"
  },
  "parameters": {
    "n": 1
  }
}'

Inpainting

Deskripsi fitur: Menambah, menghapus, atau memodifikasi konten di area tertentu.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "description_edit_with_mask",
    "prompt": "A ceramic rabbit holding a ceramic flower.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg",
    "mask_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png"
  },
  "parameters": {
    "n": 1
  }
}'

Penghapusan watermark teks

Deskripsi fitur: Mendukung penghapusan watermark teks bahasa Tiongkok dan Inggris.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "remove_watermark",
    "prompt": "Remove the text from the image",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/remove_watermark_1.png"
  },
  "parameters": {
    "n": 1
  }
}'

Ekspansi gambar

Deskripsi fitur: Mendukung ekspansi gambar secara proporsional ke atas, bawah, kiri, dan kanan.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "expand",
    "prompt": "A green fairy",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/expand_2.jpg"
  },
  "parameters": {
    "top_scale": 1.5,
    "bottom_scale": 1.5,
    "left_scale": 1.5,
    "right_scale": 1.5,
    "n": 1
  }
}'

Super resolusi

Deskripsi fitur: Mendukung peningkatan gambar buram ke definisi tinggi.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "super_resolution",
    "prompt": "Super resolution.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/super_resolution_1.jpeg"  
  },
  "parameters": {
    "upscale_factor": 2,
    "n": 1
  }
}'

Pewarnaan

Deskripsi fitur: Mengubah gambar hitam-putih atau grayscale menjadi gambar berwarna.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "colorization",
    "prompt": "Blue background, yellow leaves.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/colorization_1.jpeg"  
  },
  "parameters": {
    "n": 1
  }
}'

Generasi sketsa-ke-gambar

Deskripsi fitur: Mengekstrak sketsa dari gambar input lalu menghasilkan gambar berdasarkan sketsa tersebut.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "doodle",
    "prompt": "A living room in a minimalist Nordic style.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/doodle_1.png"
  },
  "parameters": {
    "n": 1
  }
}'

Generasi karakter kartun berdasarkan referensi

Deskripsi fitur: Mendukung generasi gambar berdasarkan karakter kartun referensi.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "control_cartoon_feature",
    "prompt": "The cartoon character cautiously peeks out, looking at a sparkling blue gem in the room.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/control_cartoon_feature_1.png"
  },
  "parameters": {
    "n": 1
  }
}'
Header permintaan

Content-Type string (Wajib)

Tipe konten permintaan. Harus berupa application/json.

Authorization string (Wajib)

Kredensial otentikasi menggunakan Kunci API Model Studio.

Contoh: Bearer sk-xxxx

X-DashScope-Async string (Wajib)

Mengaktifkan pemrosesan asinkron. Harus diatur ke enable karena panggilan HTTP hanya mendukung pemrosesan asinkron.

Penting

Mengembalikan kesalahan "current user api does not support synchronous calls" jika tidak disertakan.

Body permintaan

model string (Wajib)

Nama model, misalnya wanx2.1-imageedit.

input object (Wajib)

Informasi input dasar (prompt).

Properti

prompt string (Wajib)

Prompt yang digunakan untuk menggambarkan elemen dan fitur visual yang diinginkan dalam gambar yang dihasilkan.

Mendukung bahasa Tiongkok dan Inggris. Panjang maksimum: 800 karakter. Setiap karakter Tiongkok atau huruf dihitung sebagai satu karakter. Karakter yang melebihi batas akan dipotong secara otomatis.

Prompt bervariasi untuk fitur yang berbeda. Kami menyarankan Anda meninjau tips prompting yang sesuai untuk setiap fitur.

function string (Wajib)

Fitur pengeditan gambar. Fitur-fitur berikut saat ini didukung:

  • stylization_all: Stilisasi global. Dua gaya saat ini didukung. Gaya dan tips prompting

  • stylization_local: Stilisasi lokal. Delapan gaya saat ini didukung. Gaya dan tips prompting

  • description_edit: Pengeditan berbasis instruksi. Gunakan instruksi untuk mengedit gambar. Direkomendasikan untuk tugas pengeditan sederhana. Tips prompting

  • description_edit_with_mask: Inpainting. Tentukan area pengeditan. Cocok untuk skenario yang memerlukan kontrol presisi atas cakupan pengeditan. Tips prompting

  • remove_watermark: Penghapusan watermark teks. Tips prompting

  • expand: Ekspansi gambar. Tips prompting

  • super_resolution: Super resolusi. Tips prompting

  • colorization: Pewarnaan. Tips prompting

  • doodle: Generasi sketsa-ke-gambar. Tips prompting

  • control_cartoon_feature: Generasi karakter kartun berdasarkan referensi. Tips prompting

base_image_url string (Wajib)

URL atau data yang diencode Base64 dari gambar input.

Persyaratan gambar:

  • Format file: JPG, JPEG, PNG, BMP, TIFF, atau WEBP

  • Resolusi: Lebar dan tinggi harus antara 512 hingga 4.096 piksel

  • Ukuran file: Maksimum 10 MB

  • URL tidak boleh mengandung karakter Tiongkok

Format gambar input:

  1. Gunakan URL publik

    • Protokol HTTP atau HTTPS didukung.

    • Contoh: http://wanx.alicdn.com/material/20250318/stylization_all_1.jpeg

  2. Meneruskan string gambar yang dikodekan dalam Base64

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

    • Contoh: data:image/jpeg;base64,GDU7MtCZzEbTbmRZ......

    • String yang diencode dalam contoh tidak lengkap dan hanya untuk demonstrasi. Untuk informasi lebih lanjut, lihat Format yang didukung.

mask_image_url string (Opsional)

Parameter ini hanya diperlukan ketika function diatur ke description_edit_with_mask (inpainting). Tidak diperlukan untuk fitur lainnya.

URL atau data yang diencode Base64 dari gambar mask.

Anda dapat melewatkan URL yang dapat diakses publik (HTTP/HTTPS) atau string yang diencode Base64. Untuk informasi lebih lanjut, lihat Format yang didukung.

Persyaratan gambar mask:

  • Resolusi: Harus sesuai dengan resolusi gambar yang ditentukan oleh base_image_url. Lebar dan tinggi harus antara 512 hingga 4.096 piksel

  • Format file: JPG, JPEG, PNG, BMP, TIFF, atau WEBP

  • Ukuran file: Maksimum 10 MB

  • URL tidak boleh mengandung karakter Tiongkok

Persyaratan warna area mask:

  • Area putih: Menunjukkan bagian yang akan diedit. Harus benar-benar putih (nilai RGB [255,255,255]). Jika tidak, mungkin tidak teridentifikasi dengan benar.

  • Area hitam: Menunjukkan bagian yang tidak perlu diubah. Harus benar-benar hitam (nilai RGB [0,0,0]). Jika tidak, mungkin tidak teridentifikasi dengan benar.

Untuk mendapatkan gambar mask, gunakan Photoshop atau tool lainnya.

parameters object (Opsional)

Parameter pemrosesan gambar.

Properti

Umum

n integer (Opsional)

Jumlah gambar yang akan dihasilkan. Rentang nilai: 1 hingga 4. Default: 1.

seed integer (Opsional)

Seed bilangan acak, digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Rentang nilai: [0, 2147483647].

Jika tidak disediakan, algoritma akan secara otomatis menghasilkan bilangan acak sebagai seed. Untuk menjaga stabilitas konten yang dihasilkan, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark berada di pojok kanan bawah gambar dan menampilkan "Generated by AI".

  • false (default)

  • true

Stilisasi global

n integer (Opsional)

Jumlah gambar yang akan dihasilkan. Nilainya dapat berupa bilangan bulat dari 1 hingga 4. Nilai default adalah 1.

seed integer (Opsional)

Seed bilangan acak, digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed dapat berupa bilangan bulat dari [0, 2147483647].

Jika Anda tidak menyediakan parameter ini, algoritma akan secara otomatis menghasilkan bilangan acak sebagai seed. Jika Anda ingin konten yang dihasilkan relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark berada di pojok kanan bawah gambar dan menampilkan Generated by AI.

  • false: Nilai default. Tidak ada watermark yang ditambahkan.

  • true: Watermark ditambahkan.

strength float (Opsional)

Tentukan parameter ini ketika function diatur ke stylization_all (stilisasi global).

Tingkat modifikasi gambar. Rentang nilai: 0,0 hingga 1,0. Default: 0,5.

Nilai yang lebih dekat ke 0 berarti hasilnya lebih mirip gambar asli. Nilai yang lebih dekat ke 1 berarti modifikasi terhadap gambar asli lebih besar.

Pengeditan berbasis instruksi

n integer (Opsional)

Jumlah gambar yang akan dihasilkan. Nilainya dapat berupa bilangan bulat dari 1 hingga 4. Nilai default adalah 1.

seed integer (Opsional)

Seed bilangan acak, digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed dapat berupa bilangan bulat dari [0, 2147483647].

Jika Anda tidak menyediakan parameter ini, algoritma akan secara otomatis menghasilkan bilangan acak sebagai seed. Jika Anda ingin konten yang dihasilkan relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark berada di pojok kanan bawah gambar dan menampilkan Generated by AI.

  • false: Nilai default. Tidak ada watermark yang ditambahkan.

  • true: Watermark ditambahkan.

strength float (Opsional)

Tentukan parameter ini ketika function diatur ke description_edit (pengeditan berbasis instruksi).

Tingkat modifikasi gambar. Nilainya dapat berupa angka desimal dari 0,0 hingga 1,0. Nilai default adalah 0,5.

Nilai yang lebih dekat ke 0 berarti hasilnya lebih mirip gambar asli. Nilai yang lebih dekat ke 1 berarti tingkat modifikasi terhadap gambar asli lebih besar.

Ekspansi gambar

n integer (Opsional)

Jumlah gambar yang akan dihasilkan. Nilainya dapat berupa bilangan bulat dari 1 hingga 4. Nilai default adalah 1.

seed integer (Opsional)

Seed bilangan acak, digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed dapat berupa bilangan bulat dari [0, 2147483647].

Jika Anda tidak menyediakan parameter ini, algoritma akan secara otomatis menghasilkan bilangan acak sebagai seed. Jika Anda ingin konten yang dihasilkan relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark berada di pojok kanan bawah gambar dan menampilkan Generated by AI.

  • false: Nilai default. Tidak ada watermark yang ditambahkan.

  • true: Watermark ditambahkan.

top_scale float (Opsional)

Tentukan parameter ini hanya ketika function diatur ke expand (ekspansi gambar).

Memperluas gambar yang berpusat ke atas dengan rasio tertentu. Default: 1,0. Rentang nilai: 1,0 hingga 2,0.

bottom_scale float (Opsional)

Tentukan parameter ini hanya ketika function diatur ke expand (ekspansi gambar).

Memperluas gambar yang berpusat ke bawah dengan rasio tertentu. Default: 1,0. Rentang nilai: 1,0 hingga 2,0.

left_scale float (Opsional)

Tentukan parameter ini hanya ketika function diatur ke expand (ekspansi gambar).

Memperluas gambar yang berpusat ke kiri dengan rasio tertentu. Default: 1,0. Rentang nilai: 1,0 hingga 2,0.

right_scale float (Opsional)

Tentukan parameter ini hanya ketika function diatur ke expand (ekspansi gambar).

Memperluas gambar yang berpusat ke kanan dengan rasio tertentu. Default: 1,0. Rentang nilai: 1,0 hingga 2,0.

Super resolusi

n integer (Opsional)

Jumlah gambar yang akan dihasilkan. Nilainya dapat berupa bilangan bulat dari 1 hingga 4. Nilai default adalah 1.

seed integer (Opsional)

Seed bilangan acak, digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed dapat berupa bilangan bulat dari [0, 2147483647].

Jika Anda tidak menyediakan parameter ini, algoritma akan secara otomatis menghasilkan bilangan acak sebagai seed. Jika Anda ingin konten yang dihasilkan relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark berada di pojok kanan bawah gambar dan menampilkan Generated by AI.

  • false: Nilai default. Tidak ada watermark yang ditambahkan.

  • true: Watermark ditambahkan.

upscale_factor integer (Opsional)

Tentukan parameter ini hanya ketika function diatur ke super_resolution (super resolusi).

Faktor penskalaan untuk super resolusi, yang meningkatkan detail sekaligus memperbesar gambar dan meningkatkan resolusi untuk pemrosesan definisi tinggi.

Rentang nilai: 1 hingga 4. Default: 1. Ketika upscale_factor diatur ke 1, gambar diproses untuk definisi tinggi tanpa diperbesar.

Generasi sketsa-ke-gambar

n integer (Opsional)

Jumlah gambar yang akan dihasilkan. Nilainya dapat berupa bilangan bulat dari 1 hingga 4. Nilai default adalah 1.

seed integer (Opsional)

Seed bilangan acak, digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed dapat berupa bilangan bulat dari [0, 2147483647].

Jika Anda tidak menyediakan parameter ini, algoritma akan secara otomatis menghasilkan bilangan acak sebagai seed. Jika Anda ingin konten yang dihasilkan relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark berada di pojok kanan bawah gambar dan menampilkan Generated by AI.

  • false: Nilai default. Tidak ada watermark yang ditambahkan.

  • true: Watermark ditambahkan.

is_sketch bool (Opsional)

Tentukan parameter ini hanya ketika function diatur ke doodle (generasi sketsa-ke-gambar).

Menentukan apakah gambar input adalah gambar sketsa.

  • false (default): Gambar input bukan sketsa. Model terlebih dahulu mengekstrak sketsa dari gambar input lalu menghasilkan gambar baru berdasarkan sketsa tersebut.

  • true: Gambar input adalah sketsa. Model menghasilkan gambar langsung berdasarkan gambar input. Cocok untuk skenario doodle-ke-lukisan.

Parameter respons

Respons sukses

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 kesalahan

Pembuatan tugas gagal. Lihat kode kesalahan untuk menyelesaikan masalah.

{
    "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. Dapat digunakan untuk menanyakan tugas hingga 24 jam.

task_status string

Status tugas.

Enumerasi

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN: Tugas tidak ada atau status tidak diketahui

request_id string

Pengidentifikasi unik untuk permintaan. Digunakan untuk pelacakan dan troubleshooting masalah.

code string

Kode kesalahan. Hanya dikembalikan ketika permintaan gagal. Lihat kode kesalahan untuk detailnya.

message string

Pesan kesalahan detail. Hanya dikembalikan ketika permintaan gagal. Lihat kode kesalahan untuk detailnya.

Langkah 2: Kueri hasil berdasarkan ID tugas

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

Parameter permintaan

Kueri hasil tugas

Ganti 86ecf553-d340-4e21-xxxxxxxxx dengan ID tugas yang sebenarnya.

curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Header permintaan

Authorization string (Wajib)

Kredensial otentikasi menggunakan Kunci API Model Studio.

Contoh: Bearer sk-xxxx

Parameter path

task_id string (Wajib)

ID tugas yang akan dikueri.

Parameter respons

Tugas berhasil

Data tugas (status tugas dan URL gambar) hanya disimpan selama 24 jam lalu secara otomatis dihapus. Segera simpan gambar yang dihasilkan.

{
    "request_id": "eeef0935-02e9-9742-bb55-xxxxxx",
    "output": {
        "task_id": "a425c46f-dc0a-400f-879e-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-02-21 17:56:31.786",
        "scheduled_time": "2025-02-21 17:56:31.821",
        "end_time": "2025-02-21 17:56:42.530",
        "results": [
            {
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/aaa.png"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

Tugas gagal

Ketika tugas gagal, task_status diatur ke FAILED dengan kode dan pesan kesalahan. Lihat kode kesalahan untuk menyelesaikan masalah.

{
    "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-xxxxxx",
        "task_status": "FAILED",
        "code": "InvalidParameter",
        "message": "xxxxxx",
        "task_metrics": {
            "TOTAL": 4,
            "SUCCEEDED": 0,
            "FAILED": 4
        }
    }
}

Tugas sebagian gagal

Model dapat menghasilkan beberapa gambar dalam satu tugas. Jika setidaknya satu gambar berhasil dihasilkan, status tugas ditandai sebagai SUCCEEDED dan mengembalikan URL gambar yang berhasil. Untuk gambar yang gagal dihasilkan, hasilnya mencakup alasan kegagalan. Untuk menyelesaikan kegagalan ini, lihat kode kesalahan. Hanya gambar yang berhasil dihasilkan yang dihitung dalam statistik penggunaan.

{
    "request_id": "85eaba38-0185-99d7-8d16-xxxxxx",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/123/a1.png"
            },
            {
                "code": "InternalError.Timeout",
                "message": "An internal timeout error has occured during execution, please try again later or contact service support."
            }
        ],
        "task_metrics": {
            "TOTAL": 2,
            "SUCCEEDED": 1,
            "FAILED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

output object

Informasi output tugas.

Properti

task_id string

ID tugas. Dapat digunakan untuk menanyakan tugas hingga 24 jam.

task_status string

Status tugas.

Enumerasi

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN: Tugas tidak ada atau status tidak diketahui

submit_time string

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

scheduled_time string

Waktu saat tugas mulai berjalan. Waktu dalam UTC+8. Format: YYYY-MM-DD HH:mm:ss.SSS.

end_time string

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

results array object

Daftar hasil tugas, termasuk URL gambar dan pesan kesalahan untuk tugas yang sebagian gagal.

Struktur data

{
    "results": [
        {
            "url": ""
        },
        {
            "code": "",
            "message": ""
        }
    ]
}

task_metrics object

Statistik tentang hasil tugas.

Properti

TOTAL integer

Jumlah total tugas.

SUCCEEDED integer

Jumlah tugas yang berhasil.

FAILED integer

Jumlah tugas yang gagal.

code string

Kode kesalahan. Hanya dikembalikan ketika permintaan gagal. Lihat kode kesalahan untuk detailnya.

message string

Pesan kesalahan detail. Hanya dikembalikan ketika permintaan gagal. Lihat kode kesalahan untuk detailnya.

usage object

Statistik informasi output. Hanya hasil yang berhasil yang dihitung.

Properti

image_count integer

Jumlah gambar yang berhasil dihasilkan oleh model. Rumus penagihan: Biaya = (Jumlah gambar) × (Harga satuan).

request_id string

Pengidentifikasi unik untuk permintaan. Digunakan untuk pelacakan dan troubleshooting masalah.

DashScope SDK

Pertama, pastikan Anda telah menginstal versi terbaru SDK DashScope. Jika tidak, kesalahan waktu proses (runtime error) dapat terjadi.

SDK DashScope saat ini mendukung Python dan Java.

Nama parameter dalam SDK sebagian besar konsisten dengan API HTTP. Struktur parameter bergantung pada enkapsulasi SDK untuk bahasa yang berbeda. Untuk deskripsi parameter, lihat HTTP.

Pemrosesan model video membutuhkan waktu lama, sehingga layanan menggunakan pendekatan asinkron. SDK menyediakan wrapper yang mendukung panggilan sinkron maupun asinkron.

Model pengeditan gambar umum membutuhkan waktu sekitar 5 hingga 15 detik untuk memproses permintaan. Waktu aktual tergantung pada jumlah tugas dalam antrian dan kondisi jaringan. Harap bersabar menunggu hasilnya.

Python SDK

Saat menggunakan Python SDK untuk memproses file gambar, masukkan gambar dengan salah satu dari tiga metode berikut. Pilih metode yang paling sesuai dengan skenario Anda.

  1. URL publik: URL gambar yang dapat diakses publik menggunakan protokol HTTP atau HTTPS.

  2. Encode Base64: String file yang diencode Base64 dalam format data:{MIME_type};base64,{base64_data}.

  3. Jalur file lokal: Mendukung jalur mutlak dan relatif. Lihat tabel berikut untuk format jalur file yang valid.

Sistem

Jalur file yang harus disediakan

Contoh (jalur mutlak)

Contoh (jalur relatif)

Linux atau macOS

file://{jalur mutlak atau relatif file}

file:///home/images/test.png

file://./images/test.png

Sistem operasi Windows

file://D:/images/test.png

file://./images/test.png

Kode contoh

Catatan

Sebelum memanggil kode, pastikan Anda telah menginstal SDK Python DashScope. Kami menyarankan memperbarui ke versi terbaru dengan menjalankan pip install -U dashscope. Lihat Instalasi SDK.

Panggilan sinkron

Contoh ini menunjukkan panggilan sinkron dan mendukung tiga metode input gambar: URL publik, encode Base64, dan jalur file lokal.

Contoh permintaan
import base64
import os
from http import HTTPStatus
from dashscope import ImageSynthesis
import mimetypes

"""
Persyaratan lingkungan:
    dashscope python SDK >= 1.23.8
Instal/Peningkatan SDK:
    pip install -U dashscope
"""

# Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")


# --- Fungsi bantu: untuk encode Base64 ---
# Formatnya adalah data:{MIME_type};base64,{base64_data}
def encode_file(file_path):
    mime_type, _ = mimetypes.guess_type(file_path)
    if not mime_type or not mime_type.startswith("image/"):
        raise ValueError("Format gambar tidak didukung atau tidak dikenali")
    with open(file_path, "rb") as image_file:
        encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
    return f"data:{mime_type};base64,{encoded_string}"

"""
Metode input gambar:
Pilih salah satu dari tiga metode berikut.

1. Gunakan URL gambar publik - cocok untuk gambar yang dapat diakses publik.
2. Gunakan file lokal - cocok untuk pengembangan dan pengujian lokal.
3. Gunakan encode Base64 - cocok untuk gambar pribadi atau skenario yang memerlukan transmisi terenkripsi.
"""

# [Metode 1] Gunakan URL gambar publik
mask_image_url = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png"
base_image_url = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg"

# [Metode 2] Gunakan file lokal (mendukung jalur mutlak dan relatif)
# Persyaratan format: file:// + jalur file
# Contoh (jalur mutlak):
# mask_image_url = "file://" + "/path/to/your/mask_image.png"     # Linux/macOS
# base_image_url = "file://" + "C:/path/to/your/base_image.jpeg"  # Windows
# Contoh (jalur relatif):
# mask_image_url = "file://" + "./mask_image.png"                 # Berdasarkan jalur aktual
# base_image_url = "file://" + "./base_image.jpeg"                # Berdasarkan jalur aktual

# [Metode 3] Gunakan gambar yang diencode Base64
# mask_image_url = encode_file("./mask_image.png")               # Berdasarkan jalur aktual
# base_image_url = encode_file("./base_image.jpeg")              # Berdasarkan jalur aktual


def sample_sync_call_imageedit():
    print('please wait...')
    rsp = ImageSynthesis.call(api_key=api_key,
                              model="wanx2.1-imageedit",
                              function="description_edit_with_mask",
                              prompt="A ceramic rabbit holding a ceramic flower",
                              mask_image_url=mask_image_url,
                              base_image_url=base_image_url,
                              n=1)
    assert rsp.status_code == HTTPStatus.OK

    print('response: %s' % rsp)
    if rsp.status_code == HTTPStatus.OK:
        for result in rsp.output.results:
            print("---------------------------")
            print(result.url)
    else:
        print('sync_call Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


if __name__ == '__main__':
    sample_sync_call_imageedit()
Contoh respons
URL berlaku selama 24 jam. Segera unduh gambarnya.
{
    "status_code": 200,
    "request_id": "dc41682c-4e4a-9010-bc6f-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "6e319d88-a07a-420c-9493-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.png?xxxxxx"
            }
        ],
        "submit_time": "2025-05-26 14:58:27.320",
        "scheduled_time": "2025-05-26 14:58:27.339",
        "end_time": "2025-05-26 14:58:39.170",
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

Panggilan asinkron

Contoh ini hanya menunjukkan metode panggilan asinkron.

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

"""
Persyaratan lingkungan:
    dashscope python SDK >= 1.23.4
Instal/Peningkatan SDK:
    pip install -U dashscope
"""

# Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")

# Gunakan URL gambar publik
mask_image_url = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png"
base_image_url = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg"


def sample_async_call_imageedit():
    # Panggilan asinkron, mengembalikan task_id
    rsp = ImageSynthesis.async_call(api_key=api_key,
                                    model="wanx2.1-imageedit",
                                    function="description_edit_with_mask",
                                    prompt="A ceramic rabbit holding a ceramic flower",
                                    mask_image_url=mask_image_url,
                                    base_image_url=base_image_url,
                                    n=1)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print("task_id: %s" % rsp.output.task_id)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

    # Dapatkan informasi tugas asinkron
    status = ImageSynthesis.fetch(task=rsp, api_key=api_key)
    if status.status_code == HTTPStatus.OK:
        print(status.output.task_status)  # periksa status tugas
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (status.status_code, status.code, status.message))

    # Tunggu hingga tugas asinkron selesai
    rsp = ImageSynthesis.wait(rsp)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output)
        for result in rsp.output.results:
            print("---------------------------")
            print(result.url)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


if __name__ == '__main__':
    sample_async_call_imageedit()
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
}

2. Contoh respons untuk menanyakan hasil tugas

URL berlaku selama 24 jam. Segera unduh gambarnya.
{
    "status_code": 200,
    "request_id": "dc41682c-4e4a-9010-bc6f-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "6e319d88-a07a-420c-9493-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.png?Expires=17xxxxxx"
            }
        ],
        "submit_time": "2025-05-26 14:58:27.320",
        "scheduled_time": "2025-05-26 14:58:27.339",
        "end_time": "2025-05-26 14:58:39.170",
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

Java SDK

Saat menggunakan Java SDK untuk memproses file gambar, masukkan gambar dengan salah satu dari tiga metode berikut. Pilih metode yang paling sesuai dengan skenario Anda.

  1. URL publik: URL gambar yang dapat diakses publik menggunakan protokol HTTP atau HTTPS.

  2. Encode Base64: String file yang diencode Base64 dalam format data:{MIME_type};base64,{base64_data}.

  3. Jalur file lokal: Hanya jalur mutlak yang didukung. Lihat tabel berikut untuk format jalur file yang benar.

Sistem

Jalur file yang harus disediakan

Contoh

Linux atau macOS

file://{jalur mutlak file}

file:///home/images/test.png

Sistem operasi Windows

file:///{jalur mutlak file}

file:///D:/images/test.png

Kode contoh

Catatan

Sebelum memanggil kode, pastikan Anda telah menginstal SDK Java DashScope. Kami menyarankan memperbarui ke versi terbaru. Lihat Instalasi SDK.

Panggilan sinkron

Contoh ini menunjukkan panggilan sinkron dan mendukung tiga metode input gambar: URL publik, encode Base64, dan jalur file lokal.

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

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;

/**
 * Persyaratan lingkungan
 *      dashscope java SDK >=2.20.9
 * Perbarui dependensi Maven:
 *      https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
 */
 
public class ImageEditSync {

    // Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: apiKey="sk-xxx"
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * Metode input gambar: Pilih salah satu dari tiga berikut.
     *
     * 1. Gunakan URL publik - cocok untuk gambar yang dapat diakses publik.
     * 2. Gunakan file lokal - cocok untuk pengembangan dan pengujian lokal.
     * 3. Gunakan encode Base64 - cocok untuk gambar pribadi atau skenario yang memerlukan transmisi terenkripsi.
     */

    //[Metode 1] URL publik
    static String maskImageUrl = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png";
    static String baseImageUrl = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg";

    //[Metode 2] Jalur file lokal (file://+jalur mutlak atau file:///+jalur mutlak)
    // static String maskImageUrl = "file://" + "/your/path/to/mask_image.png";    // Linux/macOS
    // static String baseImageUrl = "file:///" + "C:/your/path/to/base_image.png";  // Windows

    //[Metode 3] Encode Base64
    // static String maskImageUrl = encodeFile("/your/path/to/mask_image.png");
    // static String baseImageUrl = encodeFile("/your/path/to/base_image.png");


    public static void syncCall() {
        // Atur parameter parameters
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);

        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wanx2.1-imageedit")
                        .function(ImageSynthesis.ImageEditFunction.DESCRIPTION_EDIT_WITH_MASK)
                        .prompt("A ceramic rabbit holding a ceramic flower")
                        .maskImageUrl(maskImageUrl)
                        .baseImageUrl(baseImageUrl)
                        .n(1)
                        .size("1024*1024")
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---sync call, please wait a moment----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }

    /**
     * Mengencode file menjadi string Base64
     * @param filePath Jalur file
     * @return String Base64 dalam format data:{MIME_type};base64,{base64_data}
     */
    public static String encodeFile(String filePath) {
        Path path = Paths.get(filePath);
        if (!Files.exists(path)) {
            throw new IllegalArgumentException("File tidak ada: " + filePath);
        }
        // Deteksi tipe MIME
        String mimeType = null;
        try {
            mimeType = Files.probeContentType(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Tidak dapat mendeteksi tipe file: " + filePath);
        }
        if (mimeType == null || !mimeType.startsWith("image/")) {
            throw new IllegalArgumentException("Format gambar tidak didukung atau tidak dikenali");
        }
        // Baca konten file dan encode
        byte[] fileBytes = null;
        try{
            fileBytes = Files.readAllBytes(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Tidak dapat membaca konten file: " + filePath);
        }

        String encodedString = Base64.getEncoder().encodeToString(fileBytes);
        return "data:" + mimeType + ";base64," + encodedString;
    }

    public static void main(String[] args) {
        syncCall();
    }
}
Contoh respons
URL berlaku selama 24 jam. Segera unduh gambarnya.
{
    "request_id": "bf6c6361-f0fc-949c-9d60-xxxxxx",
    "output": {
        "task_id": "958db858-153b-4c81-b243-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.png?xxxxxx"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

Panggilan asinkron

Contoh ini hanya menunjukkan metode panggilan asinkron.

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

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisListResult;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.task.AsyncTaskListParam;
import com.alibaba.dashscope.utils.JsonUtils;

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

/**
 * Persyaratan lingkungan
 *      dashscope java SDK >= 2.20.1
 * Perbarui dependensi Maven:
 *      https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
 */
 
public class ImageEditAsync {

    // Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan: apiKey="sk-xxx"
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    //[Metode 1] URL publik
    static String maskImageUrl = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png";
    static String baseImageUrl = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg";

    public static void asyncCall() {
        // Atur parameter parameters
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);

        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wanx2.1-imageedit")
                        .function(ImageSynthesis.ImageEditFunction.DESCRIPTION_EDIT_WITH_MASK)
                        .prompt("A ceramic rabbit holding a ceramic flower")
                        .maskImageUrl(maskImageUrl)
                        .baseImageUrl(baseImageUrl)
                        .n(1)
                        .size("1024*1024")
                        .parameters(parameters)
                        .build();
        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---async call, please wait a moment----");
            result = imageSynthesis.asyncCall(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }

        System.out.println(JsonUtils.toJson(result));

        String taskId = result.getOutput().getTaskId();

        System.out.println("taskId=" + taskId);


        try {
            result = imageSynthesis.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 listTask() throws ApiException, NoApiKeyException {
        ImageSynthesis is = new ImageSynthesis();
        AsyncTaskListParam param = AsyncTaskListParam.builder().build();
        param.setApiKey(apiKey);
        ImageSynthesisListResult result = is.list(param);
        System.out.println(result);
    }

    public void fetchTask(String taskId) throws ApiException, NoApiKeyException {
        ImageSynthesis is = new ImageSynthesis();
        // Jika DASHSCOPE_API_KEY diatur sebagai variabel lingkungan, apiKey bisa kosong.
        ImageSynthesisResult result = is.fetch(taskId, apiKey);
        System.out.println(result.getOutput());
        System.out.println(result.getUsage());
    }


    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"
	}
}

2. Contoh respons untuk menanyakan hasil tugas

URL berlaku selama 24 jam. Segera unduh gambarnya.
{
	"request_id": "3d740fc4-a968-9c36-b0e7-xxxxxxxx",
	"output": {
		"task_id": "34dcf4b0-ed84-441e-91cb-xxxxxxxx",
		"task_status": "SUCCEEDED",
		"results": [
			{
				"url": "https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/xxx.png"
			}
		],
		"submit_time": "2025-02-21 17:56:31.786",
		"scheduled_time": "2025-02-21 17:56:31.821",
		"end_time": "2025-02-21 17:56:42.530",
		"task_metrics": {
			"TOTAL": 1,
			"SUCCEEDED": 1,
			"FAILED": 0
		}
	},
	"usage": {
		"image_count": 1
	}
}

Kode kesalahan

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

API ini juga memiliki kode status spesifik, seperti yang ditunjukkan dalam tabel berikut.

Kode status HTTP

Kode kesalahan API (code)

Pesan kesalahan API (message)

Deskripsi

400

InvalidParameter

InvalidParameter

Parameter permintaan tidak valid.

400

IPInfringementSuspect

Input data is suspected of being involved in IP infringement.

Data input (seperti prompt atau gambar) dicurigai melanggar hak kekayaan intelektual. Periksa input untuk memastikan tidak mengandung konten yang berisiko melanggar.

400

DataInspectionFailed

Input data may contain inappropriate content.

Data input (seperti prompt atau gambar) mungkin mengandung konten yang tidak pantas. Ubah input dan coba lagi.

500

InternalError

InternalError

Layanan mengalami gangguan. Coba lagi untuk mengesampingkan kemungkinan masalah sementara.

Format gambar input

Format yang didukung

Gambar input mendukung berbagai format string, seperti yang ditunjukkan dalam tabel berikut.

Metode pemanggilan

HTTP

Python SDK

Java SDK

Metode input gambar yang didukung

  • URL publik

  • Encode Base64

  • URL publik

  • Base64 encoding

  • Jalur file lokal

  • URL publik

  • Encode Base64

  • Jalur file lokal

Metode 1: Gunakan URL publik

  • Sediakan alamat gambar yang dapat diakses publik. Protokol HTTP atau HTTPS didukung.

  • Contoh: https://xxxx/img.png

Metode 2: Gunakan encode Base64

Ubah file gambar lokal menjadi string Base64 dan gabungkan ke dalam format data:{MIME_type};base64,{base64_data}.

  • Untuk kode konversi, lihat Kode contoh

  • {MIME_type}: Jenis media gambar, harus sesuai dengan format file

  • {base64_data}: String yang diencode Base64 dari file gambar

  • Referensi tipe MIME:

    Format gambar

    Tipe MIME

    JPEG

    image/jpeg

    JPG

    image/jpeg

    PNG

    image/png

    BMP

    image/bmp

    TIFF

    image/tiff

    WEBP

    image/webp

  • Contoh: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDg......

    Catatan: String Base64 di atas dipotong untuk demonstrasi. Dalam penggunaan aktual, lewatkan string yang diencode lengkap.

Metode 3: Gunakan jalur file lokal

  • HTTP tidak mendukung jalur file lokal. Hanya Python SDK dan Java SDK yang mendukung metode ini.

  • Untuk aturan jalur file lokal, lihat Python SDK dan Java SDK.

FAQ

Untuk pertanyaan umum tentang model gambar (penagihan model, aturan pembatasan laju, dan kesalahan API yang sering terjadi), lihat FAQ.