すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:Wan2.5 – 一般画像編集

最終更新日:Mar 02, 2026

Wan2.5 – 一般画像編集モデルは、テキストプロンプトを用いて画像を編集します。編集時に被写体の整合性を維持し、最大3枚の参照画像を用いた複数画像融合をサポートします。

クイックスタート画像編集 – Wan 2.5

モデル概要

機能

入力例

出力画像

単一画像編集

damotest2023_Portrait_photography_outdoors_fashionable_beauty_409ae3c1-19e8-4515-8e50-b3c9072e1282_2-转换自-png

a26b226d-f044-4e95-a41c-d1c0d301c30b-转换自-png

花柄のドレスを、襟と袖口に精巧な刺繍が施されたビンテージ風レースのロングドレスに変更します。

複数画像融合

image

p1028883

画像 1 の目覚まし時計を、画像 2 のダイニングテーブル上の花瓶の隣に配置します。

モデル

説明

出力画像仕様

wan2.5-i2i-preview

Wan 2.5 プレビュー

単一画像編集および複数画像融合をサポートします。

画像フォーマット:PNG。

画像解像度:

  • 出力イメージの解像度は、<a baseurl="t3137712_v3_2_1.xdita" data-node="6107277" data-root="85177" data-tag="xref" href="#2e0de6a5b1aw8" id="2f711039eal8h">parameters.size</a> パラメーターを使用して指定し、width*height(ピクセル単位)のフォーマットで指定します。

  • 解像度を指定しない場合、デフォルトで合計 1280*1280 ピクセルの画像が出力されます。システムは入力画像に近い縦横比を維持します:

    • 単一画像入力:入力画像の縦横比と一致します。

    • 複数画像入力:最後の入力画像の縦横比と一致します。

説明

この API を呼び出す前に、各リージョンのモデル一覧および課金情報をご確認ください。

前提条件

API を呼び出す前に、API キーを取得し、環境変数として API キーをエクスポートしてください。SDK を使用して呼び出す場合は、DashScope SDK をインストールしてください。

重要

北京リージョンおよびシンガポールリージョンでは、それぞれ専用のAPI キーおよびリクエストエンドポイントが用意されています。これらを混在して使用しないでください。クロスリージョンでの呼び出しは、認証失敗またはサービスエラーを引き起こします。

HTTP

画像編集には処理完了まで時間がかかります。この API は非同期呼び出しを採用しており、タスクを送信してタスク ID を取得した後、結果が準備されるまでポーリングを行います。

ヒント:タスクステータスが「SUCCEEDED」または「FAILED」に遷移するまで、5 秒間隔でポーリングすることを推奨します。

ステップ 1:タスクを送信してタスク ID を取得

シンガポールPOST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis

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

説明
  • タスク作成後に、返された task_id を使用して結果を照会できます。task_id の有効期限は 24 時間です。重複タスクを作成しないでください。代わりに、ポーリングにより結果を取得してください。

  • 初心者向けチュートリアルについては、「Postman」をご参照ください。

リクエストパラメーター

単一画像編集

 curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.5-i2i-preview",
    "input": {
        "prompt": "Change the floral dress to a vintage-style lace long dress with exquisite embroidery details on the collar and cuffs.",
        "images": [
            "https://img.alicdn.com/imgextra/i2/O1CN01vHOj4h28jOxUJPwY8_!!6000000007968-49-tps-1344-896.webp"
        ]
    },
    "parameters": {
        "prompt_extend": true,
        "n": 1
    }
}'

複数画像融合

 curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.5-i2i-preview",
    "input": {
        "prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
        "images": [
            "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp",
            "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"
        ]
    },
    "parameters": {
        "n": 1
    }
}'

ヘッダー

Content-Type 文字列 (必須)

リクエストのコンテンツタイプ。必ず application/json を指定してください。

Authorization 文字列 (必須)

Model Studio API キーを使用した認証資格情報。

例:Bearer sk-xxxx

X-DashScope-Async 文字列 (必須)

非同期処理を有効化します。HTTP リクエストは非同期処理のみをサポートしているため、必ず enable を指定してください。

重要

このヘッダーを含めない場合、「current user api does not support synchronous calls」というエラーが返されます。

リクエスト本文

model 文字列 (必須)

モデル名。詳細については、「モデル一覧および課金情報」をご参照ください。

例:wan2.5-i2i-preview。

input オブジェクト (必須)

プロンプトなどの基本的な入力情報を指定します。

プロパティ

prompt 文字列 (必須)

生成画像に含める要素および視覚的特徴を記述するポジティブプロンプトです。

中国語および英語に対応しています。最大文字数は 2,000 文字です。それより長い内容は切り捨てられます。

プロンプト作成に関するガイドラインについては、「テキストから画像へのプロンプトガイド」をご参照ください。

例:座っているオレンジ色の猫、陽気で活発、かわいい、リアルで正確。

images 文字列の配列 (必須)

入力画像を指す URL の配列。

  • 1 回のリクエストあたりの最大画像数:3 枚。

  • 複数画像の場合、配列内の順序が画像の順序(画像 1、画像 2 など)を定義します。

画像の制限事項:

  • 対応フォーマット:JPEG、JPG、PNG、BMP、WEBP。PNG のアルファチャンネルは無視されます。

  • 解像度:幅および高さはともに 384 ~ 5,000 ピクセルの範囲内である必要があります。

  • ファイルサイズの上限:10 MB。

対応する入力フォーマット:

  1. パブリック URL

    • HTTP および HTTPS の両方をサポートしています。

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

  2. Base64 エンコード文字列

    • フォーマット:data:{MIME_type};base64,{base64_data}

    • 例:data:image/jpeg;base64,GDU7MtCZzEbTbmRZ...(表示用に省略されています。本番環境では完全な文字列を使用してください)。

    • Base64 エンコーディング仕様については、「画像入力方法」をご参照ください。

negative_prompt 文字列 (任意)

生成画像から除外する要素を記述するネガティブプロンプトです。

中国語および英語に対応しています。最大文字数は 500 文字です。それより長い内容は切り捨てられます。

例:低解像度、エラー、最悪の品質、低品質、変形、余分な指、不自然なプロポーション。

parameters オブジェクト (任意)

出力解像度、プロンプトの書き換え、ウォーターマーク、その他の処理オプションを制御します。

プロパティ

size 文字列 (任意)

出力解像度を width*height 形式で設定します。デフォルト値:1280*1280

  • 総ピクセル数は 589,824(768*768)~ 1,638,400(1280*1280)の範囲内である必要があります。縦横比は 1:4 ~ 4:1 の範囲内である必要があります。

  • 例:1280*1280。

推奨解像度および縦横比

  • 1280*1280:1:1

  • 1024*1024:1:1

  • 800*1200:2:3

  • 1200*800:3:2

  • 960*1280:3:4

  • 1280*960:4:3

  • 720*1280:9:16

  • 1280*720:16:9

  • 1344*576:21:9

size を指定しない場合、システムはデフォルトで合計 1280*1280 ピクセルの画像を出力し、入力画像に近い縦横比を維持します:

  • 単一画像入力:入力画像の縦横比と一致します。

  • 複数画像入力:最後の入力画像の縦横比と一致します。

n 整数 (任意)

重要

n パラメーターは課金に直接影響します。値が大きいほどコストが高くなります。この API を呼び出す前に、「モデル課金情報」をご確認ください。

生成する画像の数。有効な値は 1 ~ 4 です。デフォルト値は 4 です。コストを抑えるため、テスト時は明示的に 1 を指定することを推奨します。

watermark ブール値 (任意)

画像の右下隅に「AI-generated」という固定テキストを表示するウォーターマークを追加するかどうかを指定します。

  • false(デフォルト)

  • true

prompt_extend ブール値 (任意)

スマートプロンプト書き換えを有効化します。有効化すると、大規模言語モデル(LLM)がプロンプトを最適化してより良い結果を実現しますが、処理時間は長くなります。

  • true(デフォルト)

  • false

例:true。

seed 整数 (任意)

乱数シード。値の範囲は [0, 2147483647] です。

シード値を指定しない場合、アルゴリズムが自動的に乱数を生成してシードとして使用します。シード値を指定した場合、アルゴリズムは n 枚の画像それぞれに対して別々のシード値を生成します。たとえば、n=4 の場合、アルゴリズムはシード、シード+1、シード+2、シード+3 をそれぞれのシードパラメーターとして使用して画像を生成します。

特定の結果を再現するには、固定のシード値を使用してください。

注:固有のランダム性により、同一のシードであっても完全に同一の結果が得られない場合があります。

レスポンスパラメーター

正常終了時のレスポンス

task_id を保存して、タスクステータスおよび結果を照会してください。

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

エラー終了時のレスポンス

タスク作成に失敗しました。問題を解決するには、「エラーコード」をご参照ください。

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

output オブジェクト

タスクの出力情報。

プロパティ

task_id 文字列

タスクの ID。24 時間以内にタスクを照会するために使用できます。

task_status 文字列

タスクのステータス。

列挙値

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN:タスクが存在しない、またはステータスが不明

request_id 文字列

リクエストの一意の識別子。トレースおよびトラブルシューティングに使用します。

code 文字列

エラーコード。リクエストが失敗した場合にのみ返されます。「エラーコード」をご参照ください。

message 文字列

詳細なエラーメッセージ。リクエストが失敗した場合にのみ返されます。「エラーコード」をご参照ください。

ステップ 2:タスク ID を使用して結果をポーリング

シンガポール:GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id}

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

説明
  • ポーリングの推奨事項:画像生成には数分かかることがあります。結果を取得するには、10 秒などの適切なクエリ間隔でポーリング機構を使用することを推奨します。

  • タスクステータスの遷移:PENDING → RUNNING → SUCCEEDED または FAILED。

  • 結果 URL: タスクが成功すると、イメージ URL が返されます。この URL は 24 時間 有効です。URL を取得した後は、直ちにイメージをダウンロードして、Object Storage Service (OSS) などの永続ストレージサービスに保存する必要があります。

リクエストパラメーター

タスク結果の照会

86ecf553-d340-4e21-xxxxxxxxx を実際のタスク ID に置き換えてください。

API キーはリージョンごとに異なります。「API キーのドキュメント」をご参照ください。
北京リージョンのモデルの場合は、base_url を https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
ヘッダー

Authorization 文字列 (必須)

Model Studio API キーを使用した認証資格情報。

例:Bearer sk-xxxx

URL パスパラメーター

task_id 文字列 (必須)

照会対象のタスクの ID。

レスポンスパラメーター

タスクの正常終了

画像 URL は 24 時間のみ保持され、その後自動的にパージされます。生成された画像は速やかに保存してください。

{
    "request_id": "d1f2a1be-9c58-48af-b43f-xxxxxx",
    "output": {
        "task_id": "7f4836cd-1c47-41b3-b3a4-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-09-23 22:14:10.800",
        "scheduled_time": "2025-09-23 22:14:10.825",
        "end_time": "2025-09-23 22:15:23.456",
        "results": [
            {
                "orig_prompt": "Change the floral dress to a vintage-style lace long dress with exquisite embroidery details on the collar and cuffs.",
                "actual_prompt": "Replace the pink pleated dress with a vintage-style lace long dress with exquisite embroidery details on the collar and cuffs. Keep the person's hairstyle, makeup, and posture unchanged. The overall style should be consistent with the soft tones and classic atmosphere of the original image.",
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "FAILED": 0,
            "SUCCEEDED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

タスクの失敗

タスクが失敗した場合、task_status は FAILED に設定され、エラーコードおよびメッセージが返されます。問題を解決するには、「エラーコード」をご参照ください。

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

部分的なタスク失敗

このモデルは、1 回のタスクで複数の画像を生成できます。少なくとも 1 枚の画像が正常に生成された場合、タスクステータスは SUCCEEDED とマークされ、正常に生成された画像の URL が返されます。生成に失敗した画像については、失敗理由が結果に含まれます。これらの失敗を解決するには、「エラーコード」をご参照ください。課金統計には、正常に生成された画像のみがカウントされます。

{
    "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 occurred during execution, please try again later or contact service support."
            }
        ],
        "task_metrics": {
            "TOTAL": 2,
            "SUCCEEDED": 1,
            "FAILED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

有効期限切れのタスク照会

task_id の有効期限は 24 時間です。この期間を過ぎると、照会は失敗し、以下のエラーメッセージが返されます。

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

output オブジェクト

タスクの出力情報。

プロパティ

task_id 文字列

タスクの ID。24 時間以内にタスクを照会するために使用できます。

task_status 文字列

タスクのステータス。

列挙値

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN:タスクが存在しない、またはステータスが不明

submit_time 文字列

タスクの送信時刻。時刻は UTC + 08:00 です。フォーマット:YYYY-MM-DD HH:mm:ss.SSS

scheduled_time 文字列

タスクの開始時刻。時刻は UTC + 08:00 です。フォーマット:YYYY-MM-DD HH:mm:ss.SSS

end_time 文字列

タスクの完了時刻。時刻は UTC + 08:00 です。フォーマット:YYYY-MM-DD HH:mm:ss.SSS

results オブジェクトの配列

生成結果の配列。各エントリには、画像 URL、プロンプト、または生成失敗時のエラー詳細が含まれます。

プロパティ

orig_prompt 文字列

元の入力プロンプト。これは prompt リクエストパラメーターの値です。

actual_prompt 文字列

プロンプト書き換えが有効な場合に返される、実際に最適化されたプロンプトです。この機能が無効な場合は返されません。

url 文字列

生成された画像の URL。

code 文字列

画像生成に失敗した場合のエラーコード。部分的な失敗の場合にのみ返されます。

message 文字列

画像生成に失敗した場合のエラーメッセージ。部分的な失敗の場合にのみ返されます。

task_metrics オブジェクト

タスク結果に関する統計情報。

プロパティ

TOTAL 整数

タスクの合計数。

SUCCEEDED 整数

成功したタスクの数。

FAILED 整数

失敗したタスクの数。

code 文字列

エラーコード。リクエストが失敗した場合にのみ返されます。「エラーコード」をご参照ください。

message 文字列

詳細なエラーメッセージ。リクエストが失敗した場合にのみ返されます。「エラーコード」をご参照ください。

usage オブジェクト

出力統計が生成されます。成功した結果のみがカウントされます。

プロパティ

image_count 整数

モデルによって正常に生成された画像の数。課金計算式:料金 = (画像数)×(単価)。

request_id 文字列

リクエストの一意の識別子。トレースおよびトラブルシューティングに使用します。

DashScope SDK

SDK のパラメーターはHTTP API と一致し、各プログラミング言語の規則に合わせて構造が調整されています。

画像編集には処理完了まで時間がかかります。SDK は内部でポーリングを処理し、同期および非同期の呼び出しモードの両方を提供します。

処理時間はキューの深さおよびサービス負荷に依存します。SDK は結果を自動的に待機します。

Python SDK

重要

DashScope Python SDK のバージョンが 1.25.2 以降であることを確認してください。

それより古いバージョンでは、「url error, please check url!」などのエラーが発生する可能性があります。詳細については、「SDK のインストールまたはアップグレード」をご参照ください。

同期呼び出し

リクエスト例

この例では、パブリック URL、Base64 エンコーディング、ローカルファイルパスの 3 種類の方法で入力画像を提供する方法を示します。

import base64
import mimetypes
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath

import dashscope
import requests
from dashscope import ImageSynthesis
import os

# 以下はシンガポールリージョン用の URL です。中国(北京)リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:api_key="sk-xxx"
# シンガポールおよび中国(北京)リージョンの API キーは異なります。API キーの取得方法については、https://www.alibabacloud.com/help/en/model-studio/get-api-key をご参照ください。
api_key = os.getenv("DASHSCOPE_API_KEY")

# --- 画像入力:Base64 エンコーディングを使用 ---
# Base64 エンコーディング形式は 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("サポートされていない、または認識できない画像フォーマット")
    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}"

"""
画像入力方法:
以下の 3 つの方法のいずれかを選択してください。

1. パブリック URL の使用:パブリックにアクセス可能な画像に適しています。
2. ローカルファイルの使用:ローカル開発およびテストに適しています。
3. Base64 エンコーディングの使用:非公開画像や暗号化された通信が必要なシナリオに適しています。
"""

# [方法 1] パブリック画像 URL の使用
image_url_1 = "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp"
image_url_2 = "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"

# [方法 2] ローカルファイルの使用(絶対パスおよび相対パスをサポート)
# 形式要件:file:// + ファイルパス
# 例(絶対パス):
# image_url_1 = "file://" + "/path/to/your/image_1.png"     # Linux/macOS
# image_url_2 = "file://" + "C:/path/to/your/image_2.png"  # Windows
# 例(相対パス):
# image_url_1 = "file://" + "./image_1.png"                 # 実際のパスを指定してください
# image_url_2 = "file://" + "./image_2.png"                # 実際のパスを指定してください

# [方法 3] Base64 エンコード画像の使用
# image_url_1 = encode_file("./image_1.png")               # 実際のパスを指定してください
# image_url_2 = encode_file("./image_2.png")              # 実際のパスを指定してください

print('----同期呼び出し中、しばらくお待ちください----')
rsp = ImageSynthesis.call(api_key=api_key,
                          model="wan2.5-i2i-preview",
                          prompt="Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                          images=[image_url_1, image_url_2],
                          negative_prompt="",
                          n=1,
                          # size="1280*1280",
                          prompt_extend=True,
                          watermark=False,
                          seed=12345)
print('レスポンス:%s' % rsp)
if rsp.status_code == HTTPStatus.OK:
    # 現在のディレクトリに画像を保存
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('同期呼び出しに失敗しました。status_code:%s、code:%s、message:%s' %
          (rsp.status_code, rsp.code, rsp.message))
レスポンス例
URL は 24 時間で有効期限切れになります。画像は速やかにダウンロードしてください。
{
    "status_code": 200,
    "request_id": "8ad45834-4321-44ed-adf5-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "3aff9ebd-35fc-4339-98a3-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                "orig_prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                "actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the alarm clock facing the camera, parallel to the table, with its shadow naturally cast on the table."
            }
        ],
        "submit_time": "2025-10-23 16:18:16.009",
        "scheduled_time": "2025-10-23 16:18:16.040",
        "end_time": "2025-10-23 16:19:09.591",
        "task_metrics": {
            "TOTAL": 1,
            "FAILED": 0,
            "SUCCEEDED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

非同期呼び出し

この例では、パブリック URL を使用して画像を渡します。

リクエスト例
import os
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import dashscope
import requests
from dashscope import ImageSynthesis

# 以下はシンガポールリージョン用の URL です。中国(北京)リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:api_key="sk-xxx"
# シンガポールおよび中国(北京)リージョンの API キーは異なります。API キーの取得方法については、https://www.alibabacloud.com/help/en/model-studio/get-api-key をご参照ください。
api_key = os.getenv("DASHSCOPE_API_KEY")

# パブリック画像 URL の使用
image_url_1 = "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp"
image_url_2 = "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"


def async_call():
    print('----タスクを作成----')
    task_info = create_async_task()
    print('----タスクを待機----')
    wait_async_task(task_info)


# 非同期タスクを作成
def create_async_task():
    rsp = ImageSynthesis.async_call(api_key=api_key,
                                    model="wan2.5-i2i-preview",
                                    prompt="Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                                    images=[image_url_1, image_url_2],
                                    negative_prompt="",
                                    n=1,
                                    # size="1280*1280",
                                    prompt_extend=True,
                                    watermark=False,
                                    seed=12345)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output)
    else:
        print('失敗しました。status_code:%s、code:%s、message:%s' %
              (rsp.status_code, rsp.code, rsp.message))
    return rsp


# 非同期タスクの完了を待機
def wait_async_task(task):
    rsp = ImageSynthesis.wait(task=task, api_key=api_key)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output)
        # 現在のディレクトリにファイルを保存
        for result in rsp.output.results:
            file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
            with open('./%s' % file_name, 'wb+') as f:
                f.write(requests.get(result.url).content)
    else:
        print('失敗しました。status_code:%s、code:%s、message:%s' %
              (rsp.status_code, rsp.code, rsp.message))


# 非同期タスクの状態を照会
def fetch_task_status(task):
    status = ImageSynthesis.fetch(task=task, api_key=api_key)
    print(status)
    if status.status_code == HTTPStatus.OK:
        print(status.output.task_status)
    else:
        print('失敗しました。status_code:%s、code:%s、message:%s' %
              (status.status_code, status.code, status.message))


# 非同期タスクをキャンセル(PENDING ステータスのタスクのみキャンセル可能)
def cancel_task(task):
    rsp = ImageSynthesis.cancel(task=task, api_key=api_key)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.task_status)
    else:
        print('失敗しました。status_code:%s、code:%s、message:%s' %
              (rsp.status_code, rsp.code, rsp.message))


if __name__ == '__main__':
    async_call()
レスポンス例

1. タスク作成リクエストのレスポンス例

{
	"status_code": 200,
	"request_id": "31b04171-011c-96bd-ac00-f0383b669cc7",
	"code": "",
	"message": "",
	"output": {
		"task_id": "4f90cf14-a34e-4eae-xxxxxxxx",
		"task_status": "PENDING",
		"results": []
	},
	"usage": null
}

2. タスク照会リクエストのレスポンス例

URL は 24 時間で有効期限切れになります。画像は速やかにダウンロードしてください。
{
    "status_code": 200,
    "request_id": "8ad45834-4321-44ed-adf5-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "3aff9ebd-35fc-4339-98a3-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                "orig_prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                "actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the alarm clock facing the camera, parallel to the table, with its shadow naturally cast on the table."
            }
        ],
        "submit_time": "2025-10-23 16:18:16.009",
        "scheduled_time": "2025-10-23 16:18:16.040",
        "end_time": "2025-10-23 16:19:09.591",
        "task_metrics": {
            "TOTAL": 1,
            "FAILED": 0,
            "SUCCEEDED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

Java SDK

重要

DashScope Java SDK のバージョンが 2.22.2 以降であることを確認してください。

それより古いバージョンでは、「url error, please check url!」などのエラーが発生する可能性があります。詳細については、「SDK のインストールまたはアップグレード」をご参照ください。

同期呼び出し

リクエスト例

この例では、パブリック URL、Base64 エンコーディング、ローカルファイルパスの 3 種類の方法で入力画像を提供する方法を示します。

// 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.Constants;
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.*;

public class Image2Image {

    static {
        // 以下はシンガポールリージョン用の URL です。中国(北京)リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
    }

    // 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:apiKey="sk-xxx"
    // シンガポールおよび中国(北京)リージョンの API キーは異なります。API キーの取得方法については、https://www.alibabacloud.com/help/en/model-studio/get-api-key をご参照ください。
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * 画像入力方法:
     * 以下の 3 つの方法のいずれかを選択してください。
     *
     * 1. パブリック URL の使用:パブリックにアクセス可能な画像に適しています。
     * 2. ローカルファイルの使用:ローカル開発およびテストに適しています。
     * 3. Base64 エンコーディングの使用:非公開画像や暗号化された通信が必要なシナリオに適しています。
     */

    //[方法 1] パブリック URL
    static String imageUrl_1 = "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp";
    static String imageUrl_2 = "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp";

    //[方法 2] ローカルファイルパス(file://+絶対パスまたはfile:///+絶対パス)
    // static String imageUrl_1 = "file://" + "/your/path/to/image_1.png";    // Linux/macOS
    // static String imageUrl_2 = "file:///" + "C:/your/path/to/image_2.png";  // Windows

    //[方法 3] Base64 エンコーディング
    // static String imageUrl_1 = encodeFile("/your/path/to/image_1.png");
    // static String imageUrl_2 = encodeFile("/your/path/to/image_2.png");

    // 編集対象の画像リストを設定
    static List<String> imageUrls = new ArrayList<>();
    static {
        imageUrls.add(imageUrl_1);
        imageUrls.add(imageUrl_2);
    }

    public static void syncCall() {
        // パラメーターを設定
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", "12345");

        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.5-i2i-preview")
                        .prompt("Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.")
                        .images(imageUrls)
                        .n(1)
                         //.size("1280*1280")
                        .negativePrompt("")
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---同期呼び出し中、しばらくお待ちください----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }

    /**
     * ファイルを Base64 文字列にエンコードします。
     * @param filePath ファイルパス。
     * @return MIME_type を含む Base64 文字列:data:{MIME_type};base64,{base64_data}
     */
    public static String encodeFile(String filePath) {
        Path path = Paths.get(filePath);
        if (!Files.exists(path)) {
            throw new IllegalArgumentException("ファイルが存在しません:" + filePath);
        }
        // MIME タイプを検出
        String mimeType = null;
        try {
            mimeType = Files.probeContentType(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("ファイルタイプを検出できません:" + filePath);
        }
        if (mimeType == null || !mimeType.startsWith("image/")) {
            throw new IllegalArgumentException("サポートされていない、または認識できない画像フォーマット");
        }
        // ファイル内容を読み取り、エンコード
        byte[] fileBytes = null;
        try{
            fileBytes = Files.readAllBytes(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("ファイル内容を読み取れません:" + filePath);
        }

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

    public static void main(String[] args) {
        syncCall();
    }
}
レスポンス例
URL は 24 時間で有効期限切れになります。画像は速やかにダウンロードしてください。
{
    "request_id": "d362685b-757f-4eac-bab5-xxxxxx",
    "output": {
        "task_id": "bfa7fc39-3d87-4fa7-b1e6-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "orig_prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                "actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the front of the alarm clock facing the camera, parallel to the vase.",
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

非同期呼び出し

この例では、パブリック URL を使用して画像を渡します。

リクエスト例
// 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.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Image2Image {

    static {
        // 以下はシンガポールリージョン用の URL です。中国(北京)リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
    }

    // 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:apiKey="sk-xxx"
    // シンガポールおよび中国(北京)リージョンの API キーは異なります。API キーの取得方法については、https://www.alibabacloud.com/help/en/model-studio/get-api-key をご参照ください。
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    //パブリック URL
    static String imageUrl_1 = "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp";
    static String imageUrl_2 = "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp";

    // 編集対象の画像リストを設定
    static List<String> imageUrls = new ArrayList<>();
    static {
        imageUrls.add(imageUrl_1);
        imageUrls.add(imageUrl_2);
    }

    public static void asyncCall() {
        // パラメーターを設定
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", "12345");

        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.5-i2i-preview")
                        .prompt("Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.")
                        .images(imageUrls)
                        .n(1)
                        //.size("1280*1280")
                        .negativePrompt("")
                        .parameters(parameters)
                        .build();
        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---非同期呼び出し中、しばらくお待ちください----");
            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();
        // DASHSCOPE_API_KEY を環境変数として設定済みの場合は、apiKey を空欄のままにできます。
        ImageSynthesisResult result = is.fetch(taskId, apiKey);
        System.out.println(result.getOutput());
        System.out.println(result.getUsage());
    }


    public static void main(String[] args) {
        asyncCall();
    }
}
レスポンス例

1. タスク作成リクエストのレスポンス例

{
	"request_id": "5dbf9dc5-4f4c-9605-85ea-542f97709ba8",
	"output": {
		"task_id": "7277e20e-aa01-4709-xxxxxxxx",
		"task_status": "PENDING"
	}
}

2. タスク照会リクエストのレスポンス例

URL は 24 時間で有効期限切れになります。画像は速やかにダウンロードしてください。
{
    "request_id": "d362685b-757f-4eac-bab5-xxxxxx",
    "output": {
        "task_id": "bfa7fc39-3d87-4fa7-b1e6-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "orig_prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                "actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the front of the alarm clock facing the camera, parallel to the vase.",
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

制限事項

  • データ保持期間:タスク ID および画像 URL は 24 時間で有効期限切れとなり、その後はアクセスできなくなります。

  • コンテンツモデレーション:すべての入力(プロンプトおよび画像)および出力は自動的にモデレーションされます。準拠していないコンテンツは、IPInfringementSuspect または DataInspectionFailed エラーを引き起こします。「エラーメッセージ」をご参照ください。

エラーコード

モデル呼び出しが失敗してエラーメッセージが返された場合、「エラーメッセージ」をご参照ください。

よくある質問

Q:Wan2.1 から移行しています。どのような API 変更点に注意すればよいですか?

A:2 つのバージョン間でパラメーター設計が異なるため、調整が必要です。

  • Wan2.1 – 一般画像編集prompt および function の両方のパラメーターを指定する必要があります。

  • Wan2.5 – 一般画像編集唯一の必須パラメーターprompt です。すべての編集操作をテキスト命令で記述してください。function パラメーターは非推奨であり、使用されません。

Q:モデル呼び出し回数を確認するにはどうすればよいですか?

A:呼び出し回数および成功率などの使用状況メトリックは、API 呼び出し後 1 時間以内に、モニタリング(シンガポール) または モニタリング(北京) ページに表示されます。「モデル呼び出し記録の確認方法」をご参照ください。