# GPT Image 2.6

GPT Image 2.6 accepts text prompts and optional reference images. Submit once to `POST /v1/images/generations`, keep the task ID, and poll `GET /v1/tasks/{id}` for the result. Finished files are returned as URLs.

## Model IDs and pricing

Use `GET /v1/models` to discover the models available to your key. The configured Sunburst IDs are `gpt-image-2.6-sunburst-official` and `gpt-image-2.6-sunburst`. Flare IDs, when listed, use the same parameter contract. The bare model ID uses its Default group; additional groups use the `model:group` ID shown by discovery.

See [current prices and the Playground](https://seedrouter.ai/models/gpt-image-2-6#pricing). Token-priced models settle using actual usage; per-image models use the configured image price. SVG responses report their author model's tokens separately in `svg_usage`, billed at that model's own SeedRouter price.

## Generate an image

```bash
curl https://api.seedrouter.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.6-sunburst-official",
    "prompt": "A red paper crane on a pale blue table, soft daylight",
    "size": "1024x1024",
    "quality": "low",
    "complexity": "high"
  }'
```

The response contains an `id`. Poll that ID instead of submitting the generation again:

```bash
curl "https://api.seedrouter.ai/v1/tasks/$TASK_ID" \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"
```

On completion, `output.data` contains objects with a `url`. Download the URL to retain the original file format and, for GIFs, every animation frame. A failed task has an `error` and is not charged. See [task states and polling](https://seedrouter.ai/docs/api/tasks).

## Parameters

There are 18 top-level fields. Only `model` and `prompt` are required. Optional fields accept `null`, which behaves like omission. Unknown fields are discarded. Invalid supported values fail validation before image generation.

| Field                | Type    | Default and constraints                                                                                                         |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `model`              | string  | Required; use an ID available to your key.                                                                                      |
| `prompt`             | string  | Required, nonblank, at most 32,000 Unicode characters.                                                                          |
| `n`                  | integer | 1; range 1–10. SVG requires 1.                                                                                                  |
| `size`               | string  | `auto`, or `WIDTHxHEIGHT`. See size rules below.                                                                                |
| `quality`            | string  | `auto`; also `low`, `medium`, `high`, `xhigh`, `max`.                                                                           |
| `background`         | string  | `auto`; also `opaque`, `transparent`. JPEG cannot be transparent.                                                               |
| `output_format`      | string  | `png`; also `jpeg`, `gif`, `svg`. WebP output is not offered.                                                                   |
| `output_compression` | integer | 100 for JPEG; 0–100. Only send with `output_format: "jpeg"`.                                                                    |
| `moderation`         | string  | `auto`; also `low`. The public Playground keeps `low` API-only.                                                                 |
| `complexity`         | string  | `high`; also `low`, `medium`. Planning effort, with no separate surcharge.                                                      |
| `frame_count`        | integer | 9; range 2–16. GIF only.                                                                                                        |
| `frame_duration_ms`  | integer | 200; at least 20 milliseconds, no maximum. GIF only; the encoder rounds to the nearest 10 ms and caps each frame at 655,350 ms. |
| `svg`                | object  | Omitted. Optional author model selection; see below.                                                                            |
| `images`             | array   | 1–16 objects shaped as `{"image_url":"https://..."}`; switches to editing.                                                      |
| `mask`               | object  | `{"image_url":"https://..."}`. Requires `images`; cannot accompany `markup`.                                                    |
| `markup`             | object  | `{"image_url":"https://..."}`. Requires `images`; cannot accompany `mask`.                                                      |
| `safety_identifier`  | string  | Optional stable end-user identifier, at most 128 characters. A nonempty value takes precedence over `user`.                     |
| `user`               | string  | Deprecated optional end-user identifier; omitted from the Playground and never filled automatically.                            |

Reference URLs must use HTTP or HTTPS and must not contain credentials. File IDs, inline base64 and multipart uploads are not accepted; upload files first and supply their public URLs. Requests use asynchronous task polling rather than `stream` or `partial_images`. `input_fidelity`, `response_format` and `prompt_rewriter` are not exposed by this contract.

### Image size

For PNG, JPEG and SVG reference-image generation, each dimension must be divisible by 16 and no larger than 3840 pixels. Total pixels must be 655,360–8,294,400 and the aspect ratio must be between 1:3 and 3:1. Examples: `1024x1024`, `1536x1024`, `2160x3840`, `2880x2880`.

GIF dimensions must be positive multiples of 16, or use `auto`. GIF has a separate total pixel budget shared by frame count, frame dimensions and `n`; OpenAI has not published its numerical limit. A `512x512` GIF does not use the static-image minimum pixel rule.

## Animated GIF

```json
{
  "model": "gpt-image-2.6-sunburst-official",
  "prompt": "A red paper crane flapping its wings in a seamless loop on pale blue",
  "output_format": "gif",
  "size": "512x512",
  "quality": "low",
  "frame_count": 4,
  "frame_duration_ms": 200
}
```

GIF can be generated from a prompt or requested from reference images. Do not combine it with a mask or compression. Preview availability can depend on the selected model's access.

**Documentation discrepancy, checked November 5, 2026:** OpenAI's image generation guide gives 2–64 frames and 20–2000 ms and says the edit endpoint does not return GIFs. The Images API reference gives 2–16 frames, no duration maximum and lists GIF output on edits. Upstream requests on November 5, 2026 matched the reference: 17 frames were rejected and a 3,000 ms frame was accepted. This API follows the reference.

## SVG

```json
{
  "model": "gpt-image-2.6-sunburst-official",
  "prompt": "A simple geometric red paper-crane logo, clean editable vector paths",
  "output_format": "svg",
  "n": 1
}
```

SVG is generation-only and requires `n: 1`. Do not send images, a mask, markup or compression. The file is static UTF-8 XML containing vector shapes; scripts, external resources and embedded raster images are unsupported.

When author selection is available, add `svg: {"model":"YOUR_AUTHOR_MODEL_ID"}`. An explicitly provided `svg` object requires a nonempty `model`. You may also set `svg.reasoning.effort` to `none`, `minimal`, `low`, `medium`, `high`, `xhigh` or `max`; the selected author determines which values it supports. Omit `reasoning` to use its default. OpenAI does not publish an author model allowlist or a universal default. If author selection is unavailable, omit the entire `svg` object.

The completed result can include `svg_usage` with `model`, `input_tokens`, `output_tokens`, `reasoning_tokens` and `total_tokens`. This is separate from the image `usage`, not an additional image-token count.

## Reference images, mask and markup

```json
{
  "model": "gpt-image-2.6-sunburst-official",
  "prompt": "Replace the marked background with a pale blue studio backdrop",
  "images": [{"image_url":"https://example.com/reference.png"}],
  "markup": {"image_url":"https://example.com/transparent-markup.png"},
  "output_format": "png",
  "complexity": "low"
}
```

Reference images support PNG, JPEG and WebP, at most 50 MB each. Mask and markup must be PNG and match the first reference image's dimensions after orientation. Markup must contain transparent pixels; both markup and the first reference image may contain at most 16,777,216 pixels, and markup may be at most 50 MB. Mask and markup are mutually exclusive.

## Response fields

Completed image output contains `created`, `data: [{url}]`, and, when reported, `size`, `quality`, `background`, `output_format`, `usage`, `svg_usage` and `safety_identifier`. `usage` may split text/image input and output tokens and cached input. No base64 image bytes or cost fields are included in the public output.

[OpenAPI schema](https://seedrouter.ai/docs/gpt-image-2-6.openapi.json) · [OpenAI generation reference](https://developers.openai.com/api/reference/resources/images/methods/generate) · [OpenAI editing reference](https://developers.openai.com/api/reference/resources/images/methods/edit) · [OpenAI image guide](https://developers.openai.com/api/docs/guides/image-generation)
