> ## Documentation Index
> Fetch the complete documentation index at: https://aisa.one/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAI-Compatible Image Generations

> Generate images with Seedream, Wan, gpt-image-2, and GPT Image 2.5 via the standard POST /v1/images/generations endpoint. OpenAI-compatible request shape; Seedream routes require a minimum image size of 3,686,400 pixels (e.g., 1920×1920).

The standard OpenAI-compatible `POST /v1/images/generations` endpoint. As of September 30, 2026 it serves `seedream-5-0-260128`, `wan2.7-image`, `wan2.7-image-pro`, `gpt-image-2`, `gpt-image-2.5-flare`, and `gpt-image-2.5-sunburst`. No image model is served on `POST /v1/chat/completions` — image generation goes through this endpoint (and `POST /v1/images/edits` where noted).

## Routing at a glance

| Model | Endpoint |
| - | - |
| `seedream-5-0-260128` | **`POST /v1/images/generations`** *(this page)* |
| `wan2.7-image` / `wan2.7-image-pro` | **`POST /v1/images/generations`** *(this page)*, `POST /v1/images/edits` |
| `gpt-image-2` | **`POST /v1/images/generations`** *(this page)*, `POST /v1/images/edits` |
| `gpt-image-2.5-flare` / `gpt-image-2.5-sunburst` | **`POST /v1/images/generations`** *(this page)*, `POST /v1/images/edits` |
| Gemini-compatible models | [`POST /v1beta/models/{model}:generateContent`](/docs/api-reference/chat/post_models-model-generatecontent) |

## Supported models

| Model | Billed by | Notes |
| - | - | - |
| `seedream-5-0-260128` | Per request | Min image size **3,686,400 pixels** (e.g., 1920×1920) |
| `wan2.7-image` | Per request | Also accepts `POST /v1/images/edits` |
| `wan2.7-image-pro` | Per request | Higher-quality Wan route |
| `gpt-image-2` | Per request or per image; token pricing also applies on some routes | See [AI Model Pricing](/docs/guides/pricing/ai-model-pricing-llm-inference) |
| `gpt-image-2.5-flare` | Per 1M tokens: input, output, cache read | GPT Image 2.5 route |
| `gpt-image-2.5-sunburst` | Per 1M tokens: input, output, cache read | GPT Image 2.5 route |

Current prices are on [aisa.one/models](https://aisa.one/models).

## Size constraint ⚠️ (Seedream routes)

Seedream's upstream enforces a minimum of **3,686,400 pixels**. Requests below that are rejected with:

```
400 InvalidParameter: image size must be at least 3686400 pixels
```

| Size | Pixels | Accepted? |
| - | - | - |
| `1024x1024` | 1,048,576 | ❌ |
| `1536x1536` | 2,359,296 | ❌ |
| `1920x1920` | 3,686,400 | ✅ (exact threshold) |
| `2048x2048` | 4,194,304 | ✅ |
| `2304x1600` | 3,686,400 | ✅ |
| `2560x1920` | 4,915,200 | ✅ |

Any aspect ratio works as long as `width × height ≥ 3,686,400`.

## Request

<CodeGroup>
  ```bash curl theme={null}
  curl -sS -X POST "https://api.aisa.one/v1/images/generations" \
    -H "Authorization: Bearer $AISA_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "seedream-5-0-260128",
      "prompt": "A cute red panda, ultra-detailed, cinematic lighting",
      "n": 1,
      "size": "2048x2048"
    }'
  ```

  ```python Python theme={null}
  from openai import OpenAI

  client = OpenAI(base_url="https://api.aisa.one/v1", api_key="sk-aisa-...")

  resp = client.images.generate(
      model="seedream-5-0-260128",
      prompt="A cute red panda, ultra-detailed, cinematic lighting",
      n=1,
      size="2048x2048",
  )

  for item in resp.data:
      print(item.url)
  ```

  ```typescript TypeScript theme={null}
  import OpenAI from "openai";

  const client = new OpenAI({
    baseURL: "https://api.aisa.one/v1",
    apiKey: process.env.AISA_API_KEY,
  });

  const resp = await client.images.generate({
    model: "seedream-5-0-260128",
    prompt: "A cute red panda, ultra-detailed, cinematic lighting",
    n: 1,
    size: "2048x2048",
  });

  for (const item of resp.data) {
    console.log(item.url);
  }
  ```
</CodeGroup>

### Request fields

| Field | Type | Required | Notes |
| - | - | - | - |
| `model` | string | yes | One of `seedream-5-0-260128`, `wan2.7-image`, `wan2.7-image-pro`, `gpt-image-2`, `gpt-image-2.5-flare`, `gpt-image-2.5-sunburst` |
| `prompt` | string | yes | Text description of the image to generate |
| `n` | integer | no | Number of images. Each is billed separately at the model's per-request rate |
| `size` | string | no | `WIDTHxHEIGHT`. Seedream routes must satisfy `width × height ≥ 3,686,400`; `wan2.7-image` and `gpt-image-2` accept smaller sizes (`1024x1024` verified working) |

## Response

```json theme={null}
{
  "model": "seedream-5-0-260128",
  "created": 1776495432,
  "data": [
    {
      "url": "https://cdn.aisa.one/images/seedream/...",
      "size": "2048x2048"
    }
  ],
  "usage": {
    "generated_images": 1,
    "output_tokens": 16384,
    "total_tokens": 16384
  }
}
```

**AIsa's response adds a few extensions** over the vanilla OpenAI schema:

* `model` echoed at the root
* `data[].size` — actual dimensions of each returned image
* `usage` — includes `generated_images` (drives billing), plus `output_tokens` / `total_tokens` for token accounting

<Warning>
  URLs in `data[].url` are **short-lived**. Download and persist the image to your own storage before it expires.
</Warning>

## Common 4xx causes

* `400 InvalidParameter — image size must be at least 3686400 pixels` — `size` was too small. Use `1920x1920` or larger.
* `400 model_route_not_supported` — the model doesn't serve this endpoint (e.g., a text model like `gpt-4.1-mini`). The error body's `supported_routes` lists the routes it does serve.
* `404 model not found` — the model ID doesn't exist on the gateway (e.g., the retired `seedream-4-5-251128`). Check the [model catalog](/docs/guides/models).
* `400 invalid_request` — malformed `size` string (e.g., `1024` instead of `1024x1024`).

See [Error Codes](/docs/api-reference/errors) and [Rate Limits](/docs/api-reference/rate-limits) for more.

## Related

<CardGroup cols={3}>
  <Card title="Model catalog" icon="list" href="/docs/guides/models">
    Current model IDs and the endpoints each one serves.
  </Card>

  <Card title="Gemini generateContent" icon="google" href="/docs/api-reference/chat/post_models-model-generatecontent">
    Gemini-compatible generateContent endpoint.
  </Card>

  <Card title="Media Gen skill" icon="image" href="/docs/agent-skills/mediagen">
    Agent skill that wraps image + video generation.
  </Card>
</CardGroup>


## OpenAPI

````yaml openapi/openai-images-generations.json POST /images/generations
openapi: 3.0.3
info:
  title: OpenAI-Compatible Image Generations
  version: 1.0.0
  description: >-
    Standard OpenAI-compatible `POST /v1/images/generations` endpoint. As of
    September 30, 2026 it serves `seedream-5-0-260128`, `wan2.7-image`,
    `wan2.7-image-pro`, `gpt-image-2`, `gpt-image-2.5-flare`, and
    `gpt-image-2.5-sunburst`. No image model is served on
    `/v1/chat/completions`; Gemini-compatible `generateContent` requests use
    [`/v1beta/models/{model}:generateContent`](/api-reference/chat/post_models-model-generatecontent).
servers:
  - url: https://api.aisa.one/v1
security:
  - BearerAuth: []
paths:
  /images/generations:
    post:
      summary: Generate images (OpenAI-compatible)
      description: >-
        Generate images with the OpenAI-compatible images-generations endpoint.


        **Size constraint (Seedream routes only).** Seedream's upstream requires
        a minimum of **3,686,400 pixels** per image. Requests below that return
        `400 InvalidParameter: image size must be at least 3686400 pixels`. Wan
        and `gpt-image-2` routes accept smaller sizes — `1024x1024` is verified
        working for `wan2.7-image`.
      operationId: createImageGeneration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - model
                - prompt
              properties:
                model:
                  type: string
                  enum:
                    - seedream-5-0-260128
                    - wan2.7-image
                    - wan2.7-image-pro
                    - gpt-image-2
                    - gpt-image-2.5-flare
                    - gpt-image-2.5-sunburst
                  description: >-
                    Image generation model. `seedream-5-0-260128`,
                    `wan2.7-image`, `wan2.7-image-pro`, `gpt-image-2`,
                    `gpt-image-2.5-flare`, or `gpt-image-2.5-sunburst`.
                prompt:
                  type: string
                  description: Text description of the image to generate.
                'n':
                  type: integer
                  minimum: 1
                  default: 1
                  description: >-
                    Number of images to generate. Each image is billed
                    separately at the per-image rate.
                size:
                  type: string
                  description: >-
                    Image dimensions as `WIDTHxHEIGHT`. Seedream routes require
                    `width × height ≥ 3,686,400` (e.g. `1920x1920`,
                    `2048x2048`); Wan and `gpt-image-2` accept smaller sizes
                    such as `1024x1024`.
                  example: 2048x2048
            examples:
              basic:
                summary: Single 2K image
                value:
                  model: seedream-5-0-260128
                  prompt: A cute red panda, ultra-detailed, cinematic lighting
                  'n': 1
                  size: 2048x2048
              minimum_size:
                summary: Exactly at minimum allowed size (1920×1920)
                value:
                  model: seedream-5-0-260128
                  prompt: A futuristic cyberpunk city, neon lights, rainy night, 8k
                  'n': 1
                  size: 1920x1920
              batch:
                summary: Four candidates for selection
                value:
                  model: seedream-5-0-260128
                  prompt: Oil painting of a rolling hillside at sunset
                  'n': 4
                  size: 2048x2048
      responses:
        '200':
          description: Images generated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  model:
                    type: string
                    example: seedream-5-0-260128
                  created:
                    type: integer
                    example: 1776495432
                  data:
                    type: array
                    description: One entry per generated image.
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          format: uri
                          description: >-
                            Short-lived URL to the generated image. Download and
                            persist it; the URL expires.
                        size:
                          type: string
                          description: Actual dimensions of the returned image.
                  usage:
                    type: object
                    properties:
                      generated_images:
                        type: integer
                      output_tokens:
                        type: integer
                      total_tokens:
                        type: integer
              example:
                model: seedream-5-0-260128
                created: 1776495432
                data:
                  - url: https://cdn.aisa.one/images/seedream/20260418-abc.png
                    size: 2048x2048
                usage:
                  generated_images: 1
                  output_tokens: 16384
                  total_tokens: 16384
        '400':
          description: >-
            Invalid request. Most common: `size` smaller than 3,686,400 pixels →
            `"image size must be at least 3686400 pixels"`.
        '401':
          description: Missing or invalid AIsa API key.
        '404':
          description: >-
            The model isn't routed through this endpoint. The gateway returns
            `model_route_not_supported` with the model's actual supported routes
            — see the [model catalog](/guides/models).
        '429':
          description: Rate limit hit.
        '500':
          description: Internal error.
        '502':
          description: Upstream provider unreachable.
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: AISA API Key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.