GPT-Image-2.5 VIP 画像生成と編集
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"quality": "<string>",
"size": "<string>",
"background": "<string>",
"n": 123
}
'import requests
url = "https://toapis.com/v1/images/generations"
payload = {
"model": "<string>",
"prompt": "<string>",
"quality": "<string>",
"size": "<string>",
"background": "<string>",
"n": 123
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
prompt: '<string>',
quality: '<string>',
size: '<string>',
background: '<string>',
n: 123
})
};
fetch('https://toapis.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://toapis.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' => '<string>',
'prompt' => '<string>',
'quality' => '<string>',
'size' => '<string>',
'background' => '<string>',
'n' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"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://toapis.com/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"quality\": \"<string>\",\n \"size\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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://toapis.com/v1/images/generations")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"quality\": \"<string>\",\n \"size\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://toapis.com/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"quality\": \"<string>\",\n \"size\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123\n}"
response = http.request(request)
puts response.read_bodyGPT-Image-2.5 VIP
GPT-Image-2.5 VIP 画像生成と編集
gpt-image-2.5-flare-vip と gpt-image-2.5-sunburst-vip の非同期画像タスク接続ガイド。5 段階の画質、ピクセルサイズ、透明背景、実際の token に基づく後払いに対応します
POST
/
v1
/
images
/
generations
GPT-Image-2.5 VIP 画像生成と編集
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"quality": "<string>",
"size": "<string>",
"background": "<string>",
"n": 123
}
'import requests
url = "https://toapis.com/v1/images/generations"
payload = {
"model": "<string>",
"prompt": "<string>",
"quality": "<string>",
"size": "<string>",
"background": "<string>",
"n": 123
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
prompt: '<string>',
quality: '<string>',
size: '<string>',
background: '<string>',
n: 123
})
};
fetch('https://toapis.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://toapis.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' => '<string>',
'prompt' => '<string>',
'quality' => '<string>',
'size' => '<string>',
'background' => '<string>',
'n' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"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://toapis.com/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"quality\": \"<string>\",\n \"size\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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://toapis.com/v1/images/generations")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"quality\": \"<string>\",\n \"size\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://toapis.com/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"quality\": \"<string>\",\n \"size\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123\n}"
response = http.request(request)
puts response.read_bodyVIP 版は
API Key は コンソール で作成できます。
送信時のレスポンス例:
返された
タスクは
完了後は通常どおりタスク ID で照会し,
multipart の Content-Type と boundary は curl に自動設定させます。レスポンスのタスク ID を使って照会エンドポイントをポーリングし、
5 段階の quality は上記の token 単価を共通で使用します。VIP には quality ごとに固定された 1 枚あたりの価格はなく、タスク完了後に実際の usage で精算されます。タスク送信時には先に事前引き落としが行われ、完了後に実際のテキストと画像の token で精算され、差額は返金または追加請求されます。呼び出し前には十分なアカウント残高と API Key の枠が必要です。
費用の計算式(単位は USD):
たとえば
参考画像編集 1 回の実測では、21 個のテキスト入力 token、1024 個の画像入力 token、196 個の画像出力 token でした。計算式による金額は 0.0113416で、プラットフォームの枠の最小単位で四捨五入した後の実請求額は0.011342 です。これらは特定のリクエストの例であり、同じ画質での 1 枚あたりの固定費用を示すものではありません。
アカウント固有の価格や割引が適用される場合があります。最新の価格は モデル料金ページ とアカウントの実際の設定を基準とします。最終的な請求額は使用ログで確認できます。
POST /v1/images/generations で画像タスクを作成し、タスク ID を返します。タスク完了後、照会エンドポイントで画像 URL を取得します。VIP 版と通常版の共通点は、どちらも非同期タスクを使用することです。違いはモデル名、size の形式、課金方法です。
| モデル | リクエストの model |
|---|---|
| Flare VIP | gpt-image-2.5-flare-vip |
| Sunburst VIP | gpt-image-2.5-sunburst-vip |
gpt-image-2.5-vip はドキュメント上のシリーズ名です。呼び出し時は表の完全なモデル名を使用してください。
通常版も非同期タスクを使用しますが、解像度ごとの課金と比率形式の size を使用します。独立した GPT-Image-2.5 ドキュメント を参照してください。VIP 版はピクセルサイズを使用し、実際の token で精算されます。
中国本土のユーザー向け: 中国本土のユーザーは
https://toapis.cn を API エンドポイント(Base URL)としてご利用ください。本ドキュメント内の例では https://toapis.com を https://toapis.cn に置き換えてください。クイックスタート
自分の API Key を環境変数TOAPIS_API_KEY に設定し、タスクを送信します:
curl --fail-with-body --request POST \
--url https://toapis.com/v1/images/generations \
--header "Authorization: Bearer $TOAPIS_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2.5-flare-vip",
"prompt": "Children's picture book style, a veterinarian listening to a baby otter's heartbeat with a stethoscope",
"quality": "low",
"size": "1024x1024",
"n": 1
}'
{
"id": "tsk_img_example",
"object": "generation.task",
"model": "gpt-image-2.5-flare-vip",
"status": "pending",
"progress": 0,
"created_at": 1788951900,
"metadata": {}
}
id を保存し、下の TASK_ID をその値に置き換えて照会します:
curl --fail-with-body \
--url https://toapis.com/v1/images/generations/TASK_ID \
--header "Authorization: Bearer $TOAPIS_API_KEY"
pending、queued、in_progress を経て、最終的に completed または failed になります。completed の場合は result.data から画像 URL を読み取り、failed の場合は error を読み取ります。数秒ごとに 1 回照会することを推奨します。完全なフィールドは 画像タスクのステータス取得 を参照してください。
送信の成功はタスクが作成されたことを示します。completed になるまで待ってから画像をダウンロードし、待機中は同じタスク ID を照会し続けてください。高画質のリクエストは時間がかかるため、ポーリングを継続し、重複して送信しないでください。
生成リクエストパラメータ
string
必須
Bearer YOUR_TOAPIS_API_KEY で認証します。string
必須
gpt-image-2.5-flare-vip または gpt-image-2.5-sunburst-vip。string
必須
画像の説明。編集時は保持する内容と変更する内容を記述します。
string
デフォルト:"high"
low、medium、high、xhigh、max の 5 段階に対応し、デフォルトは high です。小文字の値を使用します。quality は生成品質と実際の出力 token に影響します。同じ quality の画像でも、サイズや内容によって費用が異なる場合があります。string
デフォルト:"1024x1024"
出力ピクセルサイズ。
幅x高さ 形式を使用します。例:1024x1024、1536x1024、1024x1536、1280x1024。上流が許可するカスタムピクセルサイズに対応しており、上記の例に限りません。有効なサイズ範囲はエンドポイントのバリデーションに従います。VIP の例では 1:1 のような比率値は使用せず、resolution を別途指定する必要もありません。string
背景の任意パラメータ.
"transparent" を指定すると透明背景の画像を生成します. 省略すると通常の画像生成になります.テキストからの生成と参考画像編集の両方で使用できます.integer
デフォルト:1
1 リクエストにつき
1 を使用し、画像を 1 枚生成します。透明背景
生成リクエストに"background": "transparent" を追加すると透明背景の画像を取得できます. 省略すると通常の生成になります.
curl --fail-with-body --request POST \
--url https://toapis.com/v1/images/generations \
--header "Authorization: Bearer $TOAPIS_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2.5-flare-vip",
"prompt": "透明背景の赤い丸いステッカー",
"quality": "low",
"size": "1024x1024",
"background": "transparent",
"n": 1
}'
result.data から画像 URL を取得します.
参考画像編集
編集にはPOST /v1/images/edits を使用し、リクエストは multipart/form-data です。ローカル画像を image ファイルフィールドに設定し、model、prompt、quality、size、n も合わせて送信します。編集も非同期タスクで、送信後にタスク ID を返します。照会方法は生成と同じです。
下の例では Sunburst VIP を使用し、otter.png のカワウソに黄色いマフラーを追加します:
curl --fail-with-body --request POST \
--url https://toapis.com/v1/images/edits \
--header "Authorization: Bearer $TOAPIS_API_KEY" \
--form 'model=gpt-image-2.5-sunburst-vip' \
--form 'prompt=Keep the baby otter and the veterinarian from the original image, and add a yellow scarf to the baby otter' \
--form 'image=@otter.png;type=image/png' \
--form 'quality=low' \
--form 'size=1024x1024' \
--form 'n=1'
result.data から編集後の画像 URL を読み取ります。
Flare VIP も同じ編集方法に対応しています。model を gpt-image-2.5-flare-vip に変更するだけです。参考画像の入力には画像入力 token の費用が発生します。
token 料金
以下は 2026-09-09 時点で確認した標準価格です。2 つの VIP モデルで同じで、公式の token 単価の 8 割で課金されます:| 種類 | USD/百万 token |
|---|---|
| テキスト入力 | 4.00 |
| キャッシュ済みテキスト入力 | 1.00 |
| 画像入力 | 6.40 |
| キャッシュ済み画像入力 | 1.60 |
| 画像出力 | 24.00 |
cost = (
uncached text input tokens * 4
+ cached text input tokens * 1
+ uncached image input tokens * 6.4
+ cached image input tokens * 1.6
+ image output tokens * 24
) / 1,000,000
low 画質の 1024x1024 のテキストから画像生成 1 回には、27 個のテキスト入力 token と 196 個の画像出力 token が含まれ、費用は次のとおりです:
(27 * 4 + 196 * 24) / 1,000,000 = $0.004812
通常版からの切り替え
- 完全なモデル名を対応する
-vipモデル名に変更します。 - size を比率からピクセルサイズに変更し、resolution を省略します。
- テキストから画像生成と参考画像編集のいずれもタスク ID で結果をポーリングし、
result.dataから画像 URL を読み取ります。 - 参考画像編集では
/v1/images/editsを使って画像ファイルをアップロードします。 - 実際の token で費用を見積もります。