GPT-Image-2.5 Генерация изображений
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>",
"resolution": "<string>",
"background": "<string>",
"n": 123,
"reference_images": [
"<string>"
]
}
'import requests
url = "https://toapis.com/v1/images/generations"
payload = {
"model": "<string>",
"prompt": "<string>",
"quality": "<string>",
"size": "<string>",
"resolution": "<string>",
"background": "<string>",
"n": 123,
"reference_images": ["<string>"]
}
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>',
resolution: '<string>',
background: '<string>',
n: 123,
reference_images: ['<string>']
})
};
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>',
'resolution' => '<string>',
'background' => '<string>',
'n' => 123,
'reference_images' => [
'<string>'
]
]),
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 \"resolution\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123,\n \"reference_images\": [\n \"<string>\"\n ]\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 \"resolution\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123,\n \"reference_images\": [\n \"<string>\"\n ]\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 \"resolution\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123,\n \"reference_images\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_bodyGPT-Image-2.5
GPT-Image-2.5 Генерация изображений
Руководство по стандартной версии gpt-image-2.5-flare и gpt-image-2.5-sunburst: асинхронные задачи, референсные изображения, фиксированное качество high и оплата по разрешению
POST
/
v1
/
images
/
generations
GPT-Image-2.5 Генерация изображений
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>",
"resolution": "<string>",
"background": "<string>",
"n": 123,
"reference_images": [
"<string>"
]
}
'import requests
url = "https://toapis.com/v1/images/generations"
payload = {
"model": "<string>",
"prompt": "<string>",
"quality": "<string>",
"size": "<string>",
"resolution": "<string>",
"background": "<string>",
"n": 123,
"reference_images": ["<string>"]
}
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>',
resolution: '<string>',
background: '<string>',
n: 123,
reference_images: ['<string>']
})
};
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>',
'resolution' => '<string>',
'background' => '<string>',
'n' => 123,
'reference_images' => [
'<string>'
]
]),
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 \"resolution\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123,\n \"reference_images\": [\n \"<string>\"\n ]\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 \"resolution\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123,\n \"reference_images\": [\n \"<string>\"\n ]\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 \"resolution\": \"<string>\",\n \"background\": \"<string>\",\n \"n\": 123,\n \"reference_images\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_bodyСтандартная версия создаёт задачу генерации изображения через
API Key создаётся в консоли.
Пример ответа на отправку:
Сохраните полученный
Задача проходит статусы
Замените
Все три цены действуют для
При переходе на VIP-версию одновременно измените имя модели и параметры. Подробности см. в разделе GPT-Image-2.5 VIP.
POST /v1/images/generations и возвращает ID задачи. После завершения задачи получите URL изображения через эндпоинт статуса. Обе модели используют одинаковый формат запроса:
| Модель | model в запросе |
|---|---|
| Flare | gpt-image-2.5-flare |
| Sunburst | gpt-image-2.5-sunburst |
gpt-image-2.5 — это название серии. В запросе всегда указывайте полное имя модели из таблицы.
Эта страница описывает стандартную версию. Если нужно платить по фактическому расходу токенов, используйте отдельную документацию GPT-Image-2.5 VIP. Обе версии работают как асинхронные задачи; основные различия — формат size и модель оплаты.
Для пользователей из материкового Китая: используйте
https://toapis.cn в качестве эндпоинта (Base URL). Замените https://toapis.com на https://toapis.cn во всех примерах этого документа.Быстрый старт
Сохраните свой API Key ToAPIs в переменную окружения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",
"prompt": "Стиль детской книги с картинками, ветеринар слушает стетоскопом сердце маленькой выдры",
"quality": "high",
"size": "1:1",
"resolution": "1K",
"n": 1
}'
{
"id": "tsk_img_example",
"object": "generation.task",
"model": "gpt-image-2.5-flare",
"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 читайте URL изображения из result.data, при failed — из error. Запрашивайте статус каждые несколько секунд. Полный список полей описан в разделе Статус задачи изображения.
Успешная отправка означает только то, что задача создана. Дождитесь статуса completed, прежде чем скачивать изображение, и продолжайте опрашивать тот же ID задачи.
Параметры запроса
string
обязательно
Аутентификация через
Bearer YOUR_TOAPIS_API_KEY.string
обязательно
gpt-image-2.5-flare или gpt-image-2.5-sunburst.string
обязательно
Описание изображения. При работе с референсными изображениями опишите, что нужно сохранить, а что изменить.
string
по умолчанию:"high"
Сейчас стандартная версия фиксирует качество
high на каналах W8X, поэтому параметр можно не передавать. Любое другое строковое значение игнорируется и заменяется на high. В Playground опция качества не отображается.Сейчас стандартная версия тарифицируется по resolution.string
по умолчанию:"1:1"
Соотношение сторон, например
1:1, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 16:9, 9:16, 21:9.Рекомендуем указывать соотношение и явно передавать resolution. Сервер рассчитывает размеры выходного изображения в пикселях по этим двум значениям. В стандартной версии используются соотношения, а в VIP-версии — размеры в пикселях.string
по умолчанию:"1K"
Уровень разрешения. Поддерживаются
1K, 2K и 4K, также принимаются значения в нижнем регистре. Это поле определяет тарифный уровень стандартной версии.string
Необязательный параметр фона. Значение
"transparent" включает генерацию изображения с прозрачным фоном. Без этого поля выполняется обычная генерация.Поддерживается для генерации по тексту и запросов с reference_images.integer
по умолчанию:1
Используйте
1 на запрос, чтобы сгенерировать одно изображение.string[]
Необязательный список URL референсных изображений. Изображения должны быть доступны серверу. Для локальных файлов сначала получите URL через API загрузки изображений.Также поддерживается поле
image_urls. Используйте одно из двух полей. В примерах на этой странице применяются URL референсных изображений; если нужно загружать локальные файлы напрямую для редактирования, см. раздел Редактирование по референсу.Примеры соотношений и разрешений
| size | 1K | 2K | 4K |
|---|---|---|---|
1:1 | 1024x1024 | 2048x2048 | 2880x2880 |
3:2 | 1536x1024 | 2048x1360 | 3520x2336 |
2:3 | 1024x1536 | 1360x2048 | 2336x3520 |
16:9 | 1536x864 | 2048x1152 | 3840x2160 |
9:16 | 864x1536 | 1152x2048 | 2160x3840 |
4K — это уровень разрешения, а фактические ширина и высота зависят от соотношения сторон. Например, квадратное изображение 4K имеет размер 2880x2880.
Генерация по референсным изображениям
Используйте тот же эндпоинт генерации и добавьтеreference_images. В примере ниже применяется Sunburst, и ответ по-прежнему является асинхронной задачей:
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-sunburst",
"prompt": "Сохрани маленькую выдру и ветеринара с референсного изображения и добавь выдре жёлтый шарф",
"reference_images": ["https://example.com/otter.png"],
"quality": "high",
"size": "1:1",
"resolution": "2K",
"n": 1
}'
https://example.com/otter.png на URL своего референсного изображения, затем запросите результат по полученному ID задачи.
Цены
Ниже указаны стандартные цены, проверенные 2026-09-09, за одно изображение на запрос. Обе модели стандартной версии стоят одинаково:| resolution | USD за изображение |
|---|---|
| 1K | 0.015 |
| 2K | 0.020 |
| 4K | 0.025 |
low, medium, high, xhigh и max. Сейчас за ввод референсных изображений отдельная плата за изображение не взимается. Индивидуальные тарифы или скидки аккаунта могут отличаться; актуальные цены смотрите на странице тарифов моделей и в настройках аккаунта.
Отличия от VIP-версии
| Пункт | Стандартная версия | VIP-версия |
|---|---|---|
| Имя модели | Без суффикса -vip | С суффиксом -vip |
| Режим задачи | Асинхронная задача, URL изображения — по ID задачи | Асинхронная задача, URL изображения — по ID задачи |
| size | Соотношение, например 16:9 | Размеры в пикселях, например 1536x1024 |
| resolution | 1K, 2K, 4K | Не передаётся, размеры задаёт size |
| Оплата | Цена за изображение по resolution | Фактические токены текста и изображения |
| Референсные изображения | URL референсных изображений в эндпоинте генерации | Загрузка файла изображения через эндпоинт редактирования |