画像生成 API
画像 API は OpenAI Images プロトコルと互換です。以下は厳選・確認済みの 16 モデルです。すべて generations で text-to-image を利用でき、/edits は明記されたモデルだけで利用できます。 GPT Image 2・2.5・2.6 の静止画と Image 2.6 の GIF の使い方は、下記の各節を参照してください。
利用できるエンドポイントは 2 つあります:
/v1/images/generations- 画像生成。一部のモデルはこのエンドポイントで参照画像も受け付けます/v1/images/edits- 編集に対応するモデルでの画像編集。OpenAI ネイティブのeditsと互換です
| モデル | 対応エンドポイント | 保守的な制限 | 解像度 |
|---|---|---|---|
gpt-image-2 | /generations、/edits | 参照画像編集に対応 | 1K / 2K / 4K |
gpt-image-2.5-flare | /generations、/edits | 有効な参照画像による画像間生成と編集 | 1K / 2K / 4K |
gpt-image-2.5-sunburst | /generations、/edits | 有効な参照画像による画像間生成と編集 | 1K / 2K / 4K |
gemini-3.1-flash-image-preview | /generations、/edits | 有効な参照画像は最大 4 枚 | 1K / 2K / 4K |
gemini-2.5-flash-image | /generations、/edits | 有効な参照画像は最大 4 枚 | 1K のみ |
gemini-3-pro-image-preview | /generations、/edits | 有効な参照画像は最大 4 枚 | 1K / 2K / 4K |
grok-imagine-1.0 | /generations | 生成のみ。参照画像対応は未公開 | 公開 tier なし |
seedream-5-0-flash | /generations | 参照画像最大 8 枚。generations のみ | 1K / 1.5K / 2K |
seedream-5-0-pro | /generations | 参照画像最大 8 枚。generations のみ | 1K / 1.5K / 2K |
seedream-4-5 | /generations | 参照画像最大 8 枚。generations のみ | 2K / 4K |
seedream-4-0 | /generations | 参照画像最大 8 枚。generations のみ | 1K / 2K / 4K |
doubao-seedream-5-0-lite | /generations | 参照画像対応は有効な対応生成リクエストに依存 | 公開 tier なし |
flux-2-pro | /generations | 参照画像対応は有効な対応生成リクエストに依存 | 公開 tier なし |
flux-3-image | /generations | 参照画像は最大 8 枚。generations のみ | 768sq / 1K / 1.5K / 2K / 4K |
flux-3-image-klein | /generations | 参照画像は最大 8 枚。generations のみ | 768sq / 1K / 1.5K / 2K / 4K |
midjourney | /generations | プロンプトのみ。参照画像は非対応 | 公開 tier なし |
GPT Image 2・2.5・2.6 の静止画
3 つのバージョンはすべて 1K・2K・4K の静止画に対応します。テキストから生成するには POST /v1/images/generations を使います。参照画像を編集するには POST /v1/images/edits を使い、image_urls に公開 HTTPS URL または data:image/...;base64,... を指定します。Image 2.6 では最大 8 枚の参照画像を指定できます。Image 2.6 の 2K・4K 静止画に使う参照画像は PNG、JPEG、WebP に対応します。
解像度は image_size で選択します。Image 2 の縦横比は size に 16:9 などを指定します。Image 2.5 と 2.6 では aspect_ratio を使えます。Image 2.6 の静止画は output_format: "png" と n: 1 を指定します。
| バージョン | モデル ID | 静止画の料金(人民元 / 枚) |
|---|---|---|
| GPT Image 2 | gpt-image-2 | 参考料金は 1K が ¥0.0833、2K が ¥0.147、4K が ¥0.2156 です。実際の使用量で精算されます。 |
| GPT Image 2.5 | gpt-image-2.5-flare, gpt-image-2.5-sunburst | 参考料金は 1K が ¥0.0833、2K が ¥0.294、4K が ¥0.392 です。参照画像の追加料金はありません。 |
| GPT Image 2.6 | gpt-image-2.6-flare, gpt-image-2.6-sunburst | 生成成功 1 枚につき 1K は ¥0.0833、2K は ¥0.294、4K は ¥0.392 です。 |
GPT Image 2 のテキストからの画像生成(同期)
curl -X POST https://api.icodeeasy.cc/v1/images/generations \
-H "Authorization: Bearer sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "an orange cat sitting on a windowsill watching the sunset, watercolor style"
}'
GPT Image 2.5 の text-to-image(2K)
curl -X POST "https://api.icodeeasy.cc/v1/images/generations?sync=1" \
-H "Authorization: Bearer sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-flare",
"prompt": "宇宙飛行士のヘルメットをかぶったオレンジ色の猫、映画のような照明",
"aspect_ratio": "16:9",
"image_size": "2K"
}'
GPT Image 2.5 の image-to-image(参照画像編集)
curl -X POST "https://api.icodeeasy.cc/v1/images/edits?sync=1" \
-H "Authorization: Bearer sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-sunburst",
"prompt": "人物のポーズと服装を保ったまま、背景を夕日のビーチに変更",
"aspect_ratio": "3:2",
"image_size": "1K",
"image_urls": ["https://example.com/photo.png"]
}'
GPT Image 2.6 の参照画像編集(4K)
この例は Sunburst を使用します。Flare を使う場合は model に gpt-image-2.6-flare を指定します。例の URL は参照画像の URL に置き換えてください。
curl -X POST 'https://api.icodeeasy.cc/v1/images/edits?async=1' \
-H "Authorization: Bearer sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.6-sunburst",
"prompt": "背景を淡い青の壁に変更してください。参照画像のカップと構図は維持してください。",
"output_format": "png",
"aspect_ratio": "16:9",
"image_size": "4K",
"n": 1,
"image_urls": [
"https://example.com/reference.png"
]
}'
GPT Image 2.6 の GIF 生成
gpt-image-2.6-flare と gpt-image-2.6-sunburst は POST /v1/images/generations で GIF を生成できます。output_format: "gif"、size: "auto"、n: 1 を指定すると、サイズとフレーム設定が自動で決まり、GIF が 1 件生成されます。
テキストのみから生成する場合は image_urls を省略します。参照画像を使う場合は、公開 HTTPS URL または data:image/...;base64,... 形式で最大 8 枚を指定できます。
次の例は Flare を使用します。例の URL を参照画像の URL に置き換えてください。Sunburst を使う場合は model に gpt-image-2.6-sunburst を指定します。
curl -X POST 'https://api.icodeeasy.cc/v1/images/generations?async=1' \
-H "Authorization: Bearer sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.6-flare",
"prompt": "参照画像の提灯をゆっくり揺らしてください。元の構図を保ち、自然にループするようにしてください。",
"output_format": "gif",
"size": "auto",
"n": 1,
"image_urls": [
"https://example.com/reference.png"
]
}'
非同期リクエストは task_id を返します。GET /v1/images/tasks/{task_id} で状態を確認し、完了後に result_url から GIF をダウンロードします。
- テキストからの GIF 生成の標準料金は 1 件あたり ¥0.0833 です。Flare で予備サービスが使われた場合は 1 件あたり ¥0.30 です。
- 参照画像を使う GIF 生成は実際の使用量に応じて課金されます。最終料金は利用明細で確認できます。
FLUX 2 Pro / Max / Flex
解像度別参考価格(CNY / 枚)。 実際の生成使用量で精算し、最終金額は請求明細に表示されます: 料金は出力サイズと参照画像によって変動します。
| Model | 1MP | 2MP | 3MP | 4MP |
|---|---|---|---|---|
flux-2-pro | ¥0.2352 | ¥0.3528 | ¥0.4704 | ¥0.588 |
flux-2-max | ¥0.5488 | ¥0.784 | ¥1.0192 | ¥1.2544 |
flux-2-flex | ¥0.392 | ¥0.784 | ¥1.176 | ¥1.568 |
Seedream シリーズ
新規 4 モデルは基本生成と参照画像編集に対応し、参照画像は最大 8 枚です。size / aspect_ratio に比率、image_size に下表の解像度、image_input に参照画像を指定します。1 タスク 1 枚で、複数枚は個別タスクです。5 Flash/Pro の比率:1:1、4:3、3:4、16:9、9:16、3:2、2:3、2:1、1:2、21:9。4.5/4.0 は 9:21 も対応。4.0 のプロンプトは最大 1000 文字。レイヤーや透明背景などの高度な機能は未対応。旧 Lite は 2K ¥0.30 / 3K ¥0.45 のままです。
参考価格です。成功したタスクの実際の生成料金で精算し、最終料金は利用明細で確認できます。 Seedream 5 Pro のみ:参照画像は 2 枚目から 1 枚につき目安 ¥0.01911。実際のタスク料金を優先します。
| Model | image_size | 基本参考価格(CNY / 枚) |
|---|---|---|
seedream-5-0-flash | 1K / 1.5K / 2K | ¥0.134358 |
seedream-5-0-pro | 1K / 1.5K → 2K | ¥0.28665 → ¥0.5733 |
seedream-4-5 | 2K / 4K | ¥0.2548 |
seedream-4-0 | 1K / 2K / 4K | ¥0.1911 |
FLUX 3 Image と Klein
flux-3-image と flux-3-image-klein は image_size に 768sq / 1K / 1.5K / 2K / 4K、aspect_ratio に 1:1 / 9:16 / 16:9 / 2:3 / 3:2 / 4:5 / 5:4 を明示します。auto やピクセル寸法を送らないでください。旧 FLUX 2 の辺長 2048 ピクセル制限は適用されません。参照画像は image_input(URL または base64 data URL)で最大 8 枚。領域指定編集には対応しません。1 タスクにつき 1 枚を生成し、描画ページの複数枚生成は個別タスクに分割します。Image は seed 非対応、Klein は 0–4294967295 の seed に対応します。両モデルとも prompt_upsampling、style、negative_prompt は非対応です。
参考価格です。成功したタスクの実際の生成料金で精算し、最終料金は利用明細で確認できます。
| モデル | 768 | 1K | 1.5K | 2K | 4K |
|---|---|---|---|---|---|
flux-3-image | ¥0.4018 | ¥0.4704 | ¥0.686 | ¥0.98 | ¥5.9486 |
flux-3-image-klein | ¥0.0784 | ¥0.0882 | ¥0.1078 | ¥0.1372 | ¥0.3528 |
{
"model": "flux-3-image",
"prompt": "A watercolor landscape",
"aspect_ratio": "16:9",
"image_size": "4K",
"image_input": []
}
エンドポイントと認証
POST https://api.icodeeasy.cc/v1/images/generations
POST https://api.icodeeasy.cc/v1/images/edits
主 Base URL は https://api.icodeeasy.cc です。https://jp.icodeeasy.cc と https://sg.icodeeasy.cc はバックアップ / fallback ドメインで、切り替える場合もパスは同じです。
リクエストヘッダー:
- Authorization:
Bearer <your API Key>(必須、sk_で始まります) - Content-Type: JSON リクエストでは
application/json、ファイルアップロードではmultipart/form-data
/v1プレフィックスなしのPOST /images/generationsとPOST /images/editsも受け付けられ、同じように動作します。
2 種類のリクエスト形式
API は 2 種類のリクエスト本文形式に対応しています:
- JSON (
Content-Type: application/json): 参照画像を URL または base64 data URL としてimage_urlsに入れます。最も一般的な形式です。 - multipart/form-data: 参照画像を
image[]ファイルとしてアップロードし、他のパラメータをフォームフィールドに入れます。OpenAI ネイティブのeditsと同じ使い方で、ローカルファイルのアップロードに向いています。
リクエストパラメータ
以下は静止画用のパラメータです。GIF には GPT Image 2.6 の GIF 生成の節に記載されたパラメータを使用してください。
- model(必須): 上表の 16 個の厳選モデル ID のいずれかを指定します。 GPT Image 2.6 の静止画の節に記載されたモデル ID も使用できます。
- prompt(必須): 英語または中国語の画像説明。上流がコンテンツ安全性レビューを行い、拒否された内容は課金されません。
- n(既定
1): 画像枚数。課金は画像枚数で加算されます。 GPT Image 2 を実際のタスク総費用で精算する場合、枚数を再度掛けません。 - size(既定
1:1): 出力のアスペクト比。下記を参照してください。autoは1:1として扱われ、1536x1024のようなピクセル指定も受け付けます。 - resolution(既定
1k): GPT Image 2 / 2.5 / 2.6 は1k/2k/4k、Gemini 2.5 は1kのみ、表の Gemini 3.x は1k/2k/4kに対応します。 - quality: GPT Image 2 は
low/medium/high/autoに対応しますが、品質別料金はありません。GPT Image 2.5 は枚数と解像度別の課金で、独立した品質設定はありません。旧リクエストのこのフィールドは受け付けますが、生成パラメータと料金には影響しません。 - image_urls / image_input(任意、JSON): image-to-image 用の参照画像。最大 4 枚(FLUX 3 と GPT Image 2.6 は 8 枚)。公開
https://...URL またはdata:image/...;base64,...を指定でき、混在も可能です。この 2 つのフィールドはエイリアスです。 - image[](任意、multipart): image-to-image 用の参照画像ファイル。複数ファイルに対応し、
image_urlsのファイルアップロード版と同等です。
参照画像の注意: URL は
https://が必須です(http は拒否されます)。base64 は有効なdata:image/*;base64,値である必要があります。
対応比率と解像度
対応する size 比率: 1:1 / 3:2 / 2:3 / 4:3 / 3:4 / 5:4 / 4:5 / 16:9 / 9:16 / 2:1 / 1:2 / 21:9 / 9:21 / auto。
GPT Image 2.5 の aspect_ratio:1:1 / 3:2 / 2:3 / 4:3 / 3:4 / 5:4 / 4:5 / 16:9 / 9:16 / 21:9。
gemini-2.5-flash-image は 1k のみです。表の Gemini 3.x は 1k / 2k / 4k に対応します。gpt-image-2 は size で出力比率またはピクセル寸法を指定し、1K / 2K / 4K の解像度別参考価格を提供します。
同期 / 非同期モード
既定の同期モード: 画像生成が完了するまでリクエストを待機し、OpenAI 互換の data[].url を返します。
非同期モード: URL に ?async=1 を追加します(true と yes も受け付けます)。API はすぐに task_id を返し、結果はポーリングで取得します。長い接続を保持したくない場合、進捗処理が必要な場合、バッチ送信する場合に使います。
| 既定の同期 | ?async=1 非同期 | |
|---|---|---|
| Return timing | Waits tens of seconds until image is ready | Returns immediately (< 1 second) |
| Status code | 200 | 202 |
| Response body | {"created":...,"data":[{"url":"..."}],"id":"..."} | {"status":"pending","task_id":"..."} |
| How to get image | Returned in one response | Poll GET /v1/images/tasks/{task_id} |
リクエスト例
Gemini 3.x で比率と 2K を指定
curl -X POST https://api.icodeeasy.cc/v1/images/generations \
-H "Authorization: Bearer sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "a corgi astronaut on the moon, cinematic",
"aspect_ratio": "16:9",
"image_size": "2K"
}'
Gemini text-to-image
curl -X POST https://api.icodeeasy.cc/v1/images/generations \
-H "Authorization: Bearer sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "a futuristic coffee shop at sunrise, realistic photography",
"aspect_ratio": "16:9",
"image_size": "1K"
}'
画像 URL を使った image-to-image(JSON)
curl -X POST https://api.icodeeasy.cc/v1/images/edits \
-H "Authorization: Bearer sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "make this person 70 years old",
"size": "1536x1024",
"image_urls": ["https://example.com/photo.png"]
}'
ローカルファイルをアップロードする image-to-image(multipart)
curl -X POST https://api.icodeeasy.cc/v1/images/edits \
-H "Authorization: Bearer sk_xxxxxxxx" \
-F "model=gpt-image-2" \
-F "prompt=make this person 70 years old" \
-F "size=1536x1024" \
-F "image[]=@/path/to/photo.png"
複数参照を使った image-to-image(URL + base64 混在)
curl -X POST https://api.icodeeasy.cc/v1/images/edits \
-H "Authorization: Bearer sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "merge these two photos into a poster",
"size": "4:3",
"image_urls": [
"https://example.com/photo-a.jpg",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
]
}'
非同期送信 + ポーリング
# 1) Submit and get task_id immediately
curl -X POST "https://api.icodeeasy.cc/v1/images/edits?async=1" \
-H "Authorization: Bearer sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "make this person 70 years old",
"image_urls": ["https://example.com/photo.png"]
}'
# -> {"status":"pending","task_id":"d142c93a-..."}
# 2) Poll until completed
curl "https://api.icodeeasy.cc/v1/images/tasks/d142c93a-..." \
-H "Authorization: Bearer sk_xxxxxxxx"
# -> {"status":"completed","result_url":"https://...png","cost":0.2,...}
レスポンス構造
Sync success (HTTP 200, OpenAI Images compatible):
{
"id": "3e0c77bb-9cbd-4c44-9549-bff1b4060623",
"created": 1781599773,
"data": [
{
"url": "https://api.icodeeasy.cc/v1/images/files/gpt-image-2/20260616/3e0c77bb-...-1.png"
}
]
}
Async submit (HTTP 202):
{ "status": "pending", "task_id": "d142c93a-de26-40c9-be62-0de840d10960" }
Async task query (GET /v1/images/tasks/{task_id}):
{
"task_id": "d142c93a-de26-40c9-be62-0de840d10960",
"status": "completed",
"model": "gpt-image-2",
"cost": 0.2,
"result_url": "https://api.icodeeasy.cc/v1/images/files/gpt-image-2/20260616/d142c93a-...-1.png"
}
- status:
pending/completed/failed - data[].url / result_url: image URL, usable directly in
<img src> - id / task_id: task ID for support troubleshooting
API は常に URL を返し、
response_format: b64_jsonには対応していません。バイト列が必要な場合は自分で画像をダウンロードしてください。
画像 URL の挙動
data[].url looks like https://api.icodeeasy.cc/v1/images/files/gpt-image-2/YYYYMMDD/<id>-<seq>.png:
- 直接開く:
GETは 302 を返し、実際の画像 URL にリダイレクトします - 強制ダウンロード:
?download=1を追加します - 長期利用: リンクは長期的に利用できます
- アクセス制御: このパスは API Key を必要としません。完全なリンク自体が認証情報です。完全な URL を持つ人は誰でも画像をダウンロードできるため、生成結果リンクを公開しないでください。
同期処理とタイムアウト
既定の同期モードでは、画像が準備できるまでリクエストは開いたままになります:
- 推奨するクライアント HTTP タイムアウト: 少なくとも 200 秒
- 1 枚の画像は通常 30〜60 秒かかります。image-to-image、2K、複数画像ではさらに時間がかかる場合があります
- 長い接続で待ちたくない場合は、非同期モード(
?async=1)でtask_idを取得し、後でポーリングしてください
エラーレスポンス
Error bodies use:
{
"error": {
"type": "server_error",
"message": "...",
"provider": "icodeeasy.cc"
}
}
Common statuses:
- 400 invalid_request_error: invalid parameters, unsupported ratio, more than 4 reference images, non-https reference URL, invalid base64, and similar issues
- 401 authentication_error: missing or invalid API Key
- 402 payment_required: insufficient balance or exhausted monthly quota
- 429 rate_limit_error: rate limit exceeded
- 5xx: service temporarily unavailable or generation failed; retry later
失敗したリクエストは課金されず、残高も差し引かれません。
課金
GPT Image の静止画料金と GIF の課金ルールは上記の各節を参照してください。
Gemini 画像モデルはモデル別の固定価格です:
| Model | Price |
|---|---|
gemini-2.5-flash-image | CNY 0.20 / image |
gemini-3.1-flash-image-preview | CNY 0.30 / image |
gemini-3-pro-image-preview | CNY 0.50 / image |
Usage Details では実際の model で記録され、cost_breakdown に image_count、image_cost_rmb、image_urls が含まれるため、履歴からリンクをコピーしたり画像をダウンロードしたりできます。
OpenAI Images API との違い
- Model: 上表または GPT Image 2.6 の静止画の節に記載されたモデル ID を使用します。
- Endpoints: すべての厳選モデルが
generationsに対応し、編集に対応するモデルではeditsを使えます - size: aspect ratios such as
16:9are recommended; pixel strings are also accepted - resolution(既定
1k): GPT Image 2 / 2.5 / 2.6 は1k/2k/4k、Gemini 2.5 は1kのみ、表の Gemini 3.x は1k/2k/4kに対応します。 - quality: GPT Image 2 は
low/medium/high/autoに対応しますが、品質別料金はありません。GPT Image 2.5 は枚数と解像度別の課金で、独立した品質設定はありません。旧リクエストのこのフィールドは受け付けますが、生成パラメータと料金には影響しません。 - response_format:
b64_jsonis not supported; URLs are always returned - Reference images: 対応モデルでは
image_urls/image_input(JSON) またはimage[](multipart) をモデル別制限の範囲で使います - 非同期モード: OpenAI にはこのモードはありません。この API は
?async=1に対応し、task_idを返し、/v1/images/tasks/{id}をポーリングして結果を取得します - Task ID: responses include
id/task_idfor troubleshooting