GPT-Image-2.6 официальный канал генерации изображений
curl --request POST \
--url https://api.toapis.com/v1/images/generations \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"resolution": "<string>",
"quality": "<string>",
"n": 123,
"output_format": "<string>",
"output_compression": 123,
"background": "<string>",
"moderation": "<string>",
"complexity": "<string>"
}
'import requests
url = "https://api.toapis.com/v1/images/generations"
payload = {
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"resolution": "<string>",
"quality": "<string>",
"n": 123,
"output_format": "<string>",
"output_compression": 123,
"background": "<string>",
"moderation": "<string>",
"complexity": "<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>',
size: '<string>',
resolution: '<string>',
quality: '<string>',
n: 123,
output_format: '<string>',
output_compression: 123,
background: '<string>',
moderation: '<string>',
complexity: '<string>'
})
};
fetch('https://api.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://api.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>',
'size' => '<string>',
'resolution' => '<string>',
'quality' => '<string>',
'n' => 123,
'output_format' => '<string>',
'output_compression' => 123,
'background' => '<string>',
'moderation' => '<string>',
'complexity' => '<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://api.toapis.com/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"quality\": \"<string>\",\n \"n\": 123,\n \"output_format\": \"<string>\",\n \"output_compression\": 123,\n \"background\": \"<string>\",\n \"moderation\": \"<string>\",\n \"complexity\": \"<string>\"\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://api.toapis.com/v1/images/generations")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"quality\": \"<string>\",\n \"n\": 123,\n \"output_format\": \"<string>\",\n \"output_compression\": 123,\n \"background\": \"<string>\",\n \"moderation\": \"<string>\",\n \"complexity\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.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 \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"quality\": \"<string>\",\n \"n\": 123,\n \"output_format\": \"<string>\",\n \"output_compression\": 123,\n \"background\": \"<string>\",\n \"moderation\": \"<string>\",\n \"complexity\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyGPT-Image-2.6
GPT-Image-2.6 официальный канал генерации изображений
Асинхронные задачи Sunburst и Flare через официальный канал, редактирование по разметке, вывод GIF и SVG, доставка через R2 и тарификация по токенам
POST
/
v1
/
images
/
generations
GPT-Image-2.6 официальный канал генерации изображений
curl --request POST \
--url https://api.toapis.com/v1/images/generations \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"resolution": "<string>",
"quality": "<string>",
"n": 123,
"output_format": "<string>",
"output_compression": 123,
"background": "<string>",
"moderation": "<string>",
"complexity": "<string>"
}
'import requests
url = "https://api.toapis.com/v1/images/generations"
payload = {
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"resolution": "<string>",
"quality": "<string>",
"n": 123,
"output_format": "<string>",
"output_compression": 123,
"background": "<string>",
"moderation": "<string>",
"complexity": "<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>',
size: '<string>',
resolution: '<string>',
quality: '<string>',
n: 123,
output_format: '<string>',
output_compression: 123,
background: '<string>',
moderation: '<string>',
complexity: '<string>'
})
};
fetch('https://api.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://api.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>',
'size' => '<string>',
'resolution' => '<string>',
'quality' => '<string>',
'n' => 123,
'output_format' => '<string>',
'output_compression' => 123,
'background' => '<string>',
'moderation' => '<string>',
'complexity' => '<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://api.toapis.com/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"quality\": \"<string>\",\n \"n\": 123,\n \"output_format\": \"<string>\",\n \"output_compression\": 123,\n \"background\": \"<string>\",\n \"moderation\": \"<string>\",\n \"complexity\": \"<string>\"\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://api.toapis.com/v1/images/generations")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"quality\": \"<string>\",\n \"n\": 123,\n \"output_format\": \"<string>\",\n \"output_compression\": 123,\n \"background\": \"<string>\",\n \"moderation\": \"<string>\",\n \"complexity\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.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 \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"quality\": \"<string>\",\n \"n\": 123,\n \"output_format\": \"<string>\",\n \"output_compression\": 123,\n \"background\": \"<string>\",\n \"moderation\": \"<string>\",\n \"complexity\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyЧерез официальный канал доступны две модели GPT-Image-2.6. Отправка запроса сразу возвращает ID асинхронной задачи. Изображения генерируются в фоне и сохраняются в R2 перед выдачей.
В запросах нужно использовать полное имя модели из таблицы.
Сохраните
Ответ на отправку —
GIF тарифицируется по выходным токенам всей анимации. Вывод SVG дополнительно создаёт один вызов текстовой модели
| Модель | model |
|---|---|
| Sunburst Official | gpt-image-2.6-sunburst-official |
| Flare Official | gpt-image-2.6-flare-official |
gpt-image-2.6-official — это только название серии, его нельзя передавать в model.
Пользователи в материковом Китае могут заменить https://api.toapis.com в примерах на https://api.toapis.cn. Создайте API Key в консоли и установите переменную окружения TOAPIS_API_KEY.
Отправка и опрос
Отправка изображения через Flare. Для Sunburst достаточно заменитьmodel:
curl --fail-with-body --request POST \
--url https://api.toapis.com/v1/images/generations \
--header "Authorization: Bearer $TOAPIS_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2.6-flare-official",
"prompt": "A small blue circle on a plain white background",
"size": "1:1",
"resolution": "1k",
"quality": "medium",
"n": 1
}'
{
"id": "tsk_img_example",
"object": "generation.task",
"model": "gpt-image-2.6-flare-official",
"status": "pending",
"progress": 0,
"created_at": 1789099098,
"metadata": {}
}
id из ответа и подставьте его вместо TASK_ID ниже:
curl --fail-with-body \
--url https://api.toapis.com/v1/images/generations/TASK_ID \
--header "Authorization: Bearer $TOAPIS_API_KEY"
pending. При опросе может отображаться queued или in_progress, финальные статусы — completed или failed. При completed URL результата, сохранённого в R2, находится в result.data[].url; при failed читайте error. Опрашивайте один и тот же ID задачи каждые несколько секунд; высококачественная генерация может занять несколько минут, не отправляйте запрос повторно во время ожидания. Все поля описаны в API статуса задачи изображения.
Параметры запроса
string
обязательно
API Key ToAPIs в формате
Bearer YOUR_API_KEY.string
обязательно
gpt-image-2.6-sunburst-official / gpt-image-2.6-flare-official.string
обязательно
Описание изображения. При использовании референсных или разметочных изображений опишите, что сохранить и что изменить.
string
по умолчанию:"auto"
Имена соотношений сторон (например
1:1, 3:2, 2:3, 16:9, 9:16) или размеры в пикселях (например 1024x1024, 1536x1024). Для вывода GIF семантика size описана в разделе GIF. Обе стороны в пикселях должны быть кратны 16 и не меньше 16, каждая сторона — не более 3840, а отношение большей стороны к меньшей — не более 3:1; размеры свыше 2560x1440 считаются экспериментальными.string
Уровень разрешения
1k / 2k / 4k. Явное значение имеет приоритет над уровнем, выведенным из size. Уровень влияет на фактическое потребление токенов и время генерации.string
по умолчанию:"medium"
Шесть уровней:
auto, low, medium, high, xhigh, max. auto позволяет модели выбирать уровень для каждого запроса. Качество влияет на фактическое потребление токенов и время.integer
по умолчанию:1
От 1 до 4 изображений на запрос. При
output_format = svg допустимо только 1.string
Формат вывода
png / jpeg / webp / gif / svg. Если не указан, используется формат по умолчанию на стороне провайдера. Дополнительные параметры и ограничения gif и svg описаны в соответствующих разделах.integer
Степень сжатия 0-100, применяется только к выводу
jpeg и webp.string
transparent / opaque / auto. Явная прозрачность применяется только к png / webp; svg прозрачен по умолчанию.string
Уровень модерации контента
auto / low.string
Сложность генерации
low / medium / high; по умолчанию high. Отдельно не тарифицируется.Референсные изображения и маски
Для генерации image-to-image добавьтеimage_urls в тот же JSON-запрос — до 16 изображений. URL должны быть доступны с сервера. Сначала можно получить URL через API загрузки изображений. Референсные изображения тарифицируются как входные токены изображений.
mask_url указывает на PNG-маску с альфа-каналом; её размер должен совпадать с первым референсным изображением, и она используется только вместе с image_urls.
curl --fail-with-body --request POST \
--url https://api.toapis.com/v1/images/generations \
--header "Authorization: Bearer $TOAPIS_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2.6-sunburst-official",
"prompt": "Keep the subject and replace the masked area with a snowy forest",
"image_urls": ["https://example.com/reference.png"],
"mask_url": "https://example.com/mask.png",
"quality": "high",
"size": "1024x1024",
"n": 1
}'
Редактирование по разметке
markup_url указывает на размеченное референсное изображение (либо передайте встроенный объект разметки через markup). Вместе с image_urls для исходного изображения модель редактирует по смыслу разметки. markup_url и mask_url взаимоисключающие — в одном запросе можно использовать только один из них.
curl --fail-with-body --request POST \
--url https://api.toapis.com/v1/images/generations \
--header "Authorization: Bearer $TOAPIS_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2.6-sunburst-official",
"prompt": "Follow the markup annotations to adjust the layout",
"image_urls": ["https://example.com/reference.png"],
"markup_url": "https://example.com/markup.png",
"quality": "high",
"n": 1
}'
Вывод GIF
Передайтеgif в output_format, чтобы создать анимацию. frame_count задаёт число кадров (2-16), frame_duration_ms — длительность кадра. GIF поддерживает только text-to-image и не может сочетаться с image_urls, mask_url, markup_url, markup и output_compression. Передавайте size точным пиксельным значением (например 512x512) или опустите его, чтобы использовать размеры кадра по умолчанию от апстрима; соотношения вроде 1:1 для GIF отклоняются.
curl --fail-with-body --request POST \
--url https://api.toapis.com/v1/images/generations \
--header "Authorization: Bearer $TOAPIS_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2.6-flare-official",
"prompt": "A paper airplane looping across a blue sky, flat illustration",
"output_format": "gif",
"frame_count": 8,
"frame_duration_ms": 200,
"size": "512x512",
"n": 1
}'
Вывод SVG
Передайтеsvg в output_format, чтобы создать векторное изображение. Также требуется объект svg с указанным svg.model. SVG поддерживает только text-to-image, n может быть только 1 и не может сочетаться с image_urls, mask_url, markup_url, markup и output_compression. SVG-генерация дополнительно вызывает текстовую модель, указанную в svg.model, и тарифицируется по её ставке.
curl --fail-with-body --request POST \
--url https://api.toapis.com/v1/images/generations \
--header "Authorization: Bearer $TOAPIS_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2.6-flare-official",
"prompt": "A minimalist mountain logo, flat vector style",
"output_format": "svg",
"svg": { "model": "gpt-5" },
"n": 1
}'
Цены на токены
Обе официальные модели тарифицируются по категориям токенов: текстовый ввод, кэшированный текстовый ввод, ввод изображений, кэшированный ввод изображений и вывод изображений оплачиваются отдельно. При отправке квота резервируется, а после успеха сумма уточняется по фактическому потреблению токенов с возвратом или доплатой. Формула стоимости в USD:USD = (
uncached_text_input_tokens * text_input_price
+ cached_text_input_tokens * cached_text_input_price
+ uncached_image_input_tokens * image_input_price
+ cached_image_input_tokens * cached_image_input_price
+ image_output_tokens * image_output_price
) / 1,000,000
svg.model поверх токенов изображения.
Индивидуальные цены и скидки аккаунта продолжают действовать. Итоговое списание можно проверить в журнале использования; актуальные цены — на странице цен и в настройках аккаунта.
Связанные модели
GPT-Image-2.5 официальный канал, обычная и VIP версии используют собственные полные имена моделей. Для вызова официального канала на этой странице используйте суффикс-official.