CyHUB
РусскийGet an API key

GPT Image 2.5 API

GPT Image 2.5 images by OpenAI from a description and references (up to 16), up to 4K and with a transparent background. Two variants, Flare and Sunburst, with the same settings: thirteen aspect ratios and three quality steps. The prompt is required.

Developer: OpenAIModel key in the API: images_chatgpt

For AI assistants:Download .mdAll documentation .mdOpen as text

Connect in three steps

  1. Get a keyCreate a key in the dashboard after you confirm your email. One key opens every model.
  2. Check the pricePOST /v1/price shows the cost of a run in advance, without charging you.
  3. Run a task and collect the resultPOST /v1/tasks starts a task, GET /v1/tasks/{id} shows its status and files.

Ready-to-use code

Replace YOUR_API_KEY with your key. The code starts a task and waits for the result. In cURL, repeat the second request with the id from the first response instead of TASK_ID until status becomes succeeded.

cURL
curl -X POST "https://api.cyhub.ai/v1/tasks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "images_chatgpt",
  "settings": {
    "model": "gpt-image-2-5-sunburst",
    "prompt": "Уютная кофейня дождливым вечером, тёплый свет в окнах",
    "aspect_ratio": "1:1",
    "resolution": "2K"
  }
}'

curl "https://api.cyhub.ai/v1/tasks/TASK_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
import time

import requests

API = "https://api.cyhub.ai/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

body = {
    "model": "images_chatgpt",
    "settings": {
        "model": "gpt-image-2-5-sunburst",
        "prompt": "Уютная кофейня дождливым вечером, тёплый свет в окнах",
        "aspect_ratio": "1:1",
        "resolution": "2K",
    },
}

response = requests.post(f"{API}/tasks", json=body, headers=HEADERS, timeout=60)
response.raise_for_status()
task = response.json()
while task["status"] in ("queued", "running"):
    time.sleep(5)
    task = requests.get(f"{API}/tasks/{task['id']}", headers=HEADERS, timeout=30).json()
print(task["status"], task["result"])
Node.js
const API = "https://api.cyhub.ai/v1";
const HEADERS = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };

const body = {
  "model": "images_chatgpt",
  "settings": {
    "model": "gpt-image-2-5-sunburst",
    "prompt": "Уютная кофейня дождливым вечером, тёплый свет в окнах",
    "aspect_ratio": "1:1",
    "resolution": "2K"
  }
};

async function main() {
  let response = await fetch(`${API}/tasks`, { method: "POST", headers: HEADERS, body: JSON.stringify(body) });
  if (!response.ok) throw new Error(await response.text());
  let task = await response.json();
  while (task.status === "queued" || task.status === "running") {
    await new Promise((resolve) => setTimeout(resolve, 5000));
    response = await fetch(`${API}/tasks/${task.id}`, { headers: HEADERS });
    task = await response.json();
  }
  console.log(task.status, task.result);
}

main();
Get a key

Price before the run

Prices as of 15.10.2026: from 10 ₽. POST /v1/price shows the exact price of your settings.

ModePrice
GPT Image 2.5from 10 ₽

Send the same settings to POST /v1/price: the response shows the price of the run without charging you.

cURL
curl -X POST "https://api.cyhub.ai/v1/price" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "images_chatgpt",
  "settings": {
    "model": "gpt-image-2-5-sunburst",
    "prompt": "Уютная кофейня дождливым вечером, тёплый свет в окнах",
    "aspect_ratio": "1:1",
    "resolution": "2K"
  }
}'
  • amount_minor: the price of the run in minor units (kopecks for rubles)
  • currency: the wallet currency
  • available_minor: how much your balance has for new tasks right now

GPT Image 2.5

Two variants of version 2.5 with the same settings: thirteen aspect ratios, up to 4K, three quality steps, transparent background, up to 16 references. The prompt is required.

Value of the model field: gpt-image-2-5-flare gpt-image-2-5-sunburst

Price in this mode from 10 ₽.

Parameters

Model parameters go inside settings. Omitted optional fields take their default values.

promptRequired

What to draw. Required even with reference images.

Type: StringMinimum characters: 1Maximum characters: 20000
qualityOptional

How carefully the model works the image out. Each next step costs more and takes longer, and it decides which aspect ratios are available.

Type: StringAllowed values: highxhighmaxDefault: "high"
backgroundOptional

Background: auto, transparent (PNG) or opaque. With a transparent background the price is counted differently and also depends on the number of references.

Type: StringAllowed values: autotransparentopaqueDefault: "auto"
aspect_ratioOptional

Aspect ratio. The set depends on quality and background.

Type: StringAllowed values: 1:13:22:34:33:416:99:1621:927:1616:279:88:9The set depends on quality, background.
Exceptions
qualitybackgroundaspect_ratio
highauto, opaqueplus auto
Default: "9:16"
resolutionOptional

Image resolution: 1K, 2K or 4K. The price depends on it.

Type: StringAllowed values: 1K2K4KThe set depends on quality, aspect_ratio.
Exceptions
qualityaspect_ratioresolution
high27:16, 16:27, 9:8, 8:9only 1K
Default: "1K"
image_urlsOptional

Reference image URLs, up to 16.

Type: List (String, uri)Maximum items: 16

Parameters not listed here are not accepted: the response is 422 unknown_setting.

Input

  • References are URLs of JPEG, PNG or WebP images, up to 10 MB each.
FieldAcceptsFormatsFilesFile size up to
image_urlsImagesjpeg, jpg, png, webp1610 MB
How to send files

Request example

Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.

Square image in 2K

JSON
{
  "model": "images_chatgpt",
  "settings": {
    "model": "gpt-image-2-5-sunburst",
    "prompt": "Уютная кофейня дождливым вечером, тёплый свет в окнах",
    "aspect_ratio": "1:1",
    "resolution": "2K"
  }
}

Sticker without background

JSON
{
  "model": "images_chatgpt",
  "settings": {
    "model": "gpt-image-2-5-flare",
    "prompt": "Рыжий кот в очках, вырезать предмет, фон прозрачный",
    "aspect_ratio": "1:1",
    "resolution": "1K",
    "background": "transparent"
  }
}

Maximum quality

JSON
{
  "model": "images_chatgpt",
  "settings": {
    "model": "gpt-image-2-5-sunburst",
    "prompt": "Витрина ювелирного магазина, отражения и блики на стекле",
    "aspect_ratio": "16:9",
    "resolution": "4K",
    "quality": "max"
  }
}

The price is calculated when the task is accepted, currency RUB.

Complete generation example

Output

  • One PNG image per run.
  • 4K takes noticeably longer, up to several minutes.
KindFormatsHow manyNote
imagepng1

A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.

JSON
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "succeeded",
  "finished_at": "2026-10-01T12:03:41+00:00",
  "result": {
    "caption": "Caption of the result: the model and its settings",
    "texts": [],
    "files_expire_at": "2026-10-08T12:03:41+00:00",
    "files_expired": false,
    "artifacts": [
      {
        "index": 0,
        "kind": "image",
        "filename": "image.png",
        "size": 1843200,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
How to read the result and download files

See also

Try GPT Image 2.5 through the API

One key opens every CyHUB model. Payment in rubles, and you see the price before the run.

Get an API key