curl --request POST \
--url https://api.apiyi.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "gpt-image-2.5-flare",
"prompt": "Cyberpunk city at night, neon sign closeup, cinematic frame"
}
'import requests
url = "https://api.apiyi.com/v1/images/generations"
payload = {
"model": "gpt-image-2.5-flare",
"prompt": "Cyberpunk city at night, neon sign closeup, cinematic frame"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'gpt-image-2.5-flare',
prompt: 'Cyberpunk city at night, neon sign closeup, cinematic frame'
})
};
fetch('https://api.apiyi.com/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.apiyi.com/v1/images/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'gpt-image-2.5-flare',
'prompt' => 'Cyberpunk city at night, neon sign closeup, cinematic frame'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.apiyi.com/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"gpt-image-2.5-flare\",\n \"prompt\": \"Cyberpunk city at night, neon sign closeup, cinematic frame\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.apiyi.com/v1/images/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"gpt-image-2.5-flare\",\n \"prompt\": \"Cyberpunk city at night, neon sign closeup, cinematic frame\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.apiyi.com/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"gpt-image-2.5-flare\",\n \"prompt\": \"Cyberpunk city at night, neon sign closeup, cinematic frame\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1776832476,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
}
],
"usage": {
"input_tokens": 42,
"output_tokens": 6240,
"total_tokens": 6282
}
}テキストから画像への API リファレンス
gpt-image-2.5-flare / gpt-image-2.5-sunburst / gpt-image-2 のテキストから画像への API リファレンスとライブテスト — 任意の解像度(4K を含む)に対応、token 課金、3つすべて同一価格・同一パラメータ
curl --request POST \
--url https://api.apiyi.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "gpt-image-2.5-flare",
"prompt": "Cyberpunk city at night, neon sign closeup, cinematic frame"
}
'import requests
url = "https://api.apiyi.com/v1/images/generations"
payload = {
"model": "gpt-image-2.5-flare",
"prompt": "Cyberpunk city at night, neon sign closeup, cinematic frame"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'gpt-image-2.5-flare',
prompt: 'Cyberpunk city at night, neon sign closeup, cinematic frame'
})
};
fetch('https://api.apiyi.com/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.apiyi.com/v1/images/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'gpt-image-2.5-flare',
'prompt' => 'Cyberpunk city at night, neon sign closeup, cinematic frame'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.apiyi.com/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"gpt-image-2.5-flare\",\n \"prompt\": \"Cyberpunk city at night, neon sign closeup, cinematic frame\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.apiyi.com/v1/images/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"gpt-image-2.5-flare\",\n \"prompt\": \"Cyberpunk city at night, neon sign closeup, cinematic frame\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.apiyi.com/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"gpt-image-2.5-flare\",\n \"prompt\": \"Cyberpunk city at night, neon sign closeup, cinematic frame\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1776832476,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
}
],
"usage": {
"input_tokens": 42,
"output_tokens": 6240,
"total_tokens": 6282
}
}Bearer sk-xxx)を入力し、プロンプトを入力して、サイズ / 品質を選択して送信します。请求时发生错误: unable to complete requestと表示される場合があります。リクエストは実際には成功しています。ブラウザでは、このように長い base64 文字列をレンダリングできないだけです。推奨ワークフロー(初心者向け):- 以下の Python / Node.js / cURL サンプルをコピーして、ローカルで実行してください。コードがレスポンスを自動的に
base64.b64decodeし、画像をファイルに書き込みます。 - ブラウザ内のプレイグラウンドを使用する必要がある場合は、
sizeを最小ティア(例:1024x1024)に設定し、qualityをlowに設定してレスポンスを小さくしてください。
input_fidelity— 3 つのモデルすべてで高忠実度が強制されます。これを渡すと 400 が返されます(2026-09-09 に 2.5 で検証:does not support the 'input_fidelity' parameter)。1.5 から移行する場合は、この行を削除するだけです。
2560×1440を超える出力は、引き続き実験的なものです。本番環境では、プリセットの 2048x1152 / 2048x2048 / 3840x2160を優先してください。コード例
Python(OpenAI SDK)
from openai import OpenAI
import base64
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.apiyi.com/v1"
)
resp = client.images.generate(
model="gpt-image-2.5-flare",
prompt="Cyberpunk city at night, neon sign closeup, cinematic frame",
size="2048x1152",
quality="high",
output_format="jpeg",
output_compression=85
)
# b64_json is raw base64 (no prefix) — decode and write to file
with open("out.jpg", "wb") as f:
f.write(base64.b64decode(resp.data[0].b64_json))
Python(requests を直接使用)
import requests
import base64
API_KEY = "sk-your-api-key"
response = requests.post(
"https://api.apiyi.com/v1/images/generations",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"model": "gpt-image-2.5-flare",
"prompt": "Landscape 2K seaside lighthouse at sunset, cinematic frame",
"size": "2048x1152",
"quality": "high"
},
timeout=360 # high + 2K/4K can run 3-5 min; ~120s defaults will frequently false-timeout
).json()
with open("out.png", "wb") as f:
f.write(base64.b64decode(response["data"][0]["b64_json"]))
cURL
curl -X POST "https://api.apiyi.com/v1/images/generations" \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-flare",
"prompt": "Orange tabby cat with sunglasses at a seaside bar, cinematic",
"size": "2048x1152",
"quality": "high",
"output_format": "jpeg",
"output_compression": 85
}'
Node.js(ネイティブ fetch)
import fs from 'node:fs';
const resp = await fetch('https://api.apiyi.com/v1/images/generations', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sk-your-api-key'
},
body: JSON.stringify({
model: 'gpt-image-2.5-flare',
prompt: 'Minimalist line-art cat logo',
size: '1024x1024',
quality: 'medium'
})
});
const { data } = await resp.json();
// b64_json is raw base64 — decode manually
fs.writeFileSync('logo.png', Buffer.from(data[0].b64_json, 'base64'));
ブラウザ JavaScript(直接レンダリング)
const resp = await fetch('https://api.apiyi.com/v1/images/generations', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sk-your-api-key'
},
body: JSON.stringify({
model: 'gpt-image-2.5-flare',
prompt: 'Watercolor-style Nordic aurora',
size: '1536x1024',
quality: 'high'
})
});
const { data } = await resp.json();
// Browser rendering needs the data URL prefix prepended manually
document.getElementById('img').src = `data:image/png;base64,${data[0].b64_json}`;
パラメータリファレンス
| パラメータ | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
model | string | はい | — | gpt-image-2.5-flare(速度優先、日常利用のデフォルト)/ gpt-image-2.5-sunburst(品質および編集優先)/ gpt-image-2(前世代、引き続き利用可能)。本番環境では日付付きスナップショット gpt-image-2.5-flare-2026-09-08 / gpt-image-2.5-sunburst-2026-09-08 を固定してください。3つすべてで同一の価格とパラメータ |
prompt | string | はい | — | prompt、中国語または英語。上限 8,192 tokens(実測値。超過してもエラーは発生せず、prompt全体が通知なしに無視されます。中国語で約11,000文字)。長い内容は事前に要約してください。長いプロンプト を参照してください |
size | string | いいえ | auto | 出力サイズ — プリセットまたは制約を満たすカスタム |
quality | string | いいえ | auto | low / medium / high / xhigh / max / auto。xhigh / max は 2.5 で新規追加、gpt-image-2 は high まで対応 |
output_format | string | いいえ | png | png / jpeg / webp |
output_compression | int | いいえ | — | 0〜100、jpeg / webp のみ対象 |
background | string | いいえ | auto | transparent / opaque / auto。transparent は gpt-image-2.5-flare / gpt-image-2.5-sunburst でのみ動作し(OpenAI は 2026-09-30 以降、gpt-image-2 で 400 エラーとして拒否しています)、output_format は png または webp である必要があります — jpeg と組み合わせると 400 が返されます。背景透過のFAQ を参照してください |
moderation | string | いいえ | auto | auto / low(低強度のモデレーション) |
n | int | いいえ | 1 | 1 のみサポート |
quality に従来の DALL·E の値 standard / hd を渡さないでください。 公式の 6 つの enum 値 low / medium / high / xhigh / max / auto のみが受け付けられます(xhigh / max は 2 つの 2.5 モデルのみ対応)。従来の値はバックエンドチャネルによって挙動が異なります。400(invalid_value)で即座に失敗する場合もあれば、通知なしに無視されて auto でリクエストが実行される場合もあります(予期しないコストが発生します)。常に公式の値のいずれかを明示的に渡してください。レスポンス形式
{
"created": 1776832476,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
}
],
"usage": {
"input_tokens": 17,
"input_tokens_details": {
"image_tokens": 0,
"text_tokens": 17
},
"output_tokens": 196,
"output_tokens_details": {
"image_tokens": 196,
"text_tokens": 0
},
"total_tokens": 213
}
}
data:image/...;base64, なしで出力されます。クライアントは次のようにする必要があります:- ファイルに書き込む:
base64.b64decode(b64_str)→ ディスクに書き込む - ブラウザーで表示する:
data:image/png;base64,を手動で先頭に付与する
gpt-image-2-all / gpt-image-2-vip も生の base64 を返しますが、以前のバージョンではプレフィックスが含まれていました。モデルをまたいでコードを共有する場合は、常にまず startsWith('data:') を確認してください。usage フィールドは、この呼び出しに対する実際の課金対象 token を反映します。input_tokens_details / output_tokens_details では、テキストと画像の token を個別に分けて表示します(プレーンな text-to-image では image_tokens は常に 0 です)。フィールドの完全なリファレンスとセルフサービスの料金計算式については、概要ページの各呼び出しの実際の token 数を確認する方法を参照してください。承認
API Key obtained from APIYI Console
ボディ
Model name. gpt-image-2.5-flare (speed-first) / gpt-image-2.5-sunburst (quality- and editing-first) / gpt-image-2 (previous generation) share the same price and parameters; pin a dated snapshot in production
gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-image-2, gpt-image-2.5-flare-2026-09-08, gpt-image-2.5-sunburst-2026-09-08 Prompt text, up to 32,000 characters (provider limit, counted in characters). Supports both Chinese and English. Place scene description at the front for better adherence.
32000"Cyberpunk city at night, neon sign closeup, cinematic frame"
Output size. Presets: 1024x1024 / 1536x1024 / 1024x1536 / 2048x2048 / 2048x1152 / 3840x2160 / 2160x3840. Also accepts any valid custom size (max edge ≤ 3840, both multiples of 16, ratio ≤ 3:1, total pixels 0.65–8.3MP).
"2048x1152"
Quality tier. low (sketches/batch), medium (daily), high (final/fine text), xhigh / max (new in 2.5: higher quality and cost, rejected by gpt-image-2), auto (default)
auto, low, medium, high, xhigh, max Output format
png, jpeg, webp Output compression (0–100), only effective for jpeg/webp
0 <= x <= 10085
Background mode. auto (default) / opaque / transparent. transparent requires png or webp (jpeg has no alpha channel)
auto, opaque, transparent Moderation strength. auto (default) or low
auto, low Number of images. This model only supports 1
1 このページは役に立ちましたか?