Skill Tracer
Skills › Scientific Agent Skills › generate-image › models.md

models.md

225 lines · skills/generate-image/references/models.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# OpenRouter image model reference
2
3Reviewed 2026-09-30 using the public [image catalogue](https://openrouter.ai/api/v1/images/models)
4and all 55 corresponding `/api/v1/images/models/{model_id}/endpoints` responses. These are
5read-only metadata checks, not generation benchmarks or evidence that a paid request will succeed.
6
7```bash
8python scripts/generate_image.py --list-models
9python scripts/generate_image.py --list-models gemini
10python scripts/generate_image.py --model-info openai/gpt-image-2.5-sunburst
11```
13The first endpoint returns a `data` array and each model's capability **union**. Endpoint discovery
14returns an object with `id` and `endpoints`; there is no documented pagination for either list.
15The CLI additionally checks that at least one endpoint accepts the whole parameter combination.
16Account access, provider availability, moderation and undeclared cross-parameter constraints still
17require a real request. `--model-info` prints each provider's definitive capabilities and prices.

OpenRouter image model reference

Reviewed 2026-09-30 using the public image catalogue and all 55 corresponding /api/v1/images/models/{model_id}/endpoints responses. These are read-only metadata checks, not generation benchmarks or evidence that a paid request will succeed.

python scripts/generate_image.py --list-models
python scripts/generate_image.py --list-models gemini
python scripts/generate_image.py --model-info openai/gpt-image-2.5-sunburst

The first endpoint returns a data array and each model's capability union. Endpoint discovery returns an object with id and endpoints; there is no documented pagination for either list. The CLI additionally checks that at least one endpoint accepts the whole parameter combination. Account access, provider availability, moderation and undeclared cross-parameter constraints still require a real request. --model-info prints each provider's definitive capabilities and prices.

Raw lines 1 to 18
Runs code python scripts/generate_image.py :8
19## Catalogue snapshot
21`n` and `refs` are inclusive ranges. A dash is unsupported, not unlimited; omitting `n` uses the
22provider default. `n` is an upper bound and can produce fewer images. A positive `refs` minimum
23means text-only generation is not supported. Prices below are **output only**, not total cost.
25| Model | n | refs | stream | Output rates |
26| --- | --- | --- | --- | --- |
27| `black-forest-labs/flux.2-flex` | 1–1 | 0–8 | no | $0.06/megapixel |
28| `black-forest-labs/flux.2-klein-4b` | 1–1 | 0–4 | no | $0.014/megapixel |
29| `black-forest-labs/flux.2-max` | 1–1 | 0–8 | no | $0.07/megapixel |
30| `black-forest-labs/flux.2-pro` | 1–1 | 0–8 | no | $0.03/megapixel |
31| `bytedance-seed/seedream-4.5` | 1–10 | 0–14 | no | $0.04/image |
32| `bytedance-seed/seedream-5-0-lite` | 1–4 | 0–14 | no | $0.035/image |
33| `bytedance-seed/seedream-5-0-pro` | 1–1 | 0–14 | no | $0.045/image; $0.09/image (high_resolution) |
34| `google/gemini-2.5-flash-image` | 1–1 | 0–3 | no | $0.000054/token; $0.000015/token; $0.00003/token |
35| `google/gemini-3-pro-image` | 1–1 | 0–14 | no | $0.00012/token |
36| `google/gemini-3-pro-image-preview` | 1–1 | 0–14 | no | $0.00006/token; $0.00012/token |
37| `google/gemini-3.1-flash-image` | 1–1 | 0–14 | no | $0.00006/token |
38| `google/gemini-3.1-flash-image-preview` | 1–1 | 0–14 | no | $0.00006/token |
39| `google/gemini-3.1-flash-lite-image` | 1–1 | 0–14 | no | $0.00003/token |
40| `inclusionai/ming-image-0.1-design` | 1–1 | 0–0 | no | $0/token |
41| `inclusionai/ming-image-0.1-design-layer` | 1–1 | 1–1 | no | $0/token |
42| `krea/krea-2-large` | — | 0–1 | no | not published |
43| `krea/krea-2-medium` | — | 0–1 | no | not published |
44| `krea/krea-2-medium-turbo` | — | 0–1 | no | not published |
45| `meta/muse-image` | — | — | no | not published |
46| `microsoft/mai-image-2.5` | 1–1 | 0–1 | no | $0.000047/token |
47| `microsoft/mai-image-2.5-pro` | 1–1 | 0–1 | no | $0.000108/token |
48| `microsoft/mai-image-2.6` | 1–1 | 0–5 | no | $0.000038/token |
49| `microsoft/mai-image-2.6-flash` | 1–1 | 0–5 | no | $0.000019/token |
50| `openai/gpt-5-image` | 1–10 | 0–16 | yes | $0.00004/token |
51| `openai/gpt-5-image-mini` | 1–10 | 0–16 | yes | $0.000008/token |
52| `openai/gpt-5.4-image-2` | 1–10 | 0–16 | yes | $0.00003/token |
53| `openai/gpt-image-1` | 1–10 | 0–16 | yes | $0.00004/token |
54| `openai/gpt-image-1-mini` | 1–10 | 0–16 | yes | $0.000008/token |
55| `openai/gpt-image-2` | 1–10 | 0–16 | yes | $0.00003/token |
56| `openai/gpt-image-2.5-flare` | 1–10 | 0–16 | yes | $0.00003/token |
57| `openai/gpt-image-2.5-sunburst` | 1–10 | 0–16 | yes | $0.00003/token |
58| `qwen/qwen-image-3` | 1–6 | 0–4 | no | $0.03/image (1k); $0.03/image (2k) |
59| `qwen/qwen-image-3-pro` | 1–6 | 0–4 | no | $0.04/image (1k); $0.075/image (2k) |
60| `recraft/recraft-v3` | 1–6 | 0–1 | no | $0.04/image |
61| `recraft/recraft-v4` | 1–6 | 0–1 | no | $0.04/image |
62| `recraft/recraft-v4-pro` | 1–6 | 0–1 | no | $0.25/image |
63| `recraft/recraft-v4-pro-vector` | 1–6 | 0–1 | no | $0.3/image |
64| `recraft/recraft-v4-styles` | 1–6 | 1–10 | no | $0.035/image |
65| `recraft/recraft-v4-styles-pro` | 1–6 | 1–10 | no | $0.1/image |
66| `recraft/recraft-v4-styles-pro-vector` | 1–6 | 1–10 | no | $0.12/image |
67| `recraft/recraft-v4-styles-vector` | 1–6 | 1–10 | no | $0.05/image |
68| `recraft/recraft-v4-vector` | 1–6 | 0–1 | no | $0.08/image |
69| `recraft/recraft-v4.1` | 1–6 | 0–1 | no | $0.035/image |
70| `recraft/recraft-v4.1-flash` | 1–6 | — | no | $0.007/image |
71| `recraft/recraft-v4.1-pro` | 1–6 | 0–1 | no | $0.21/image |
72| `recraft/recraft-v4.1-pro-vector` | 1–6 | 0–1 | no | $0.3/image |
73| `recraft/recraft-v4.1-utility` | 1–6 | 0–1 | no | $0.035/image |
74| `recraft/recraft-v4.1-utility-pro` | 1–6 | 0–1 | no | $0.21/image |
75| `recraft/recraft-v4.1-vector` | 1–6 | 0–1 | no | $0.08/image |
76| `sourceful/riverflow-v2-fast` | 1–1 | 0–4 | no | $0.02/image; $0.04/image (2k) |
77| `sourceful/riverflow-v2-pro` | 1–1 | 0–10 | no | $0.15/image; $0.15/image (2k); $0.33/image (4k) |
78| `sourceful/riverflow-v2.5-fast` | 1–1 | 0–4 | no | $0.019/image; $0.021/image (2k) |
79| `sourceful/riverflow-v2.5-pro` | 1–1 | 0–10 | no | $0.13/image; $0.15/image (2k); $0.17/image (4k) |
80| `x-ai/grok-imagine-image-2.0` | 1–1 | 0–3 | no | $0.04/image (low_1k); $0.06/image (low_2k); $0.06/image (medium_1k); $0.08/image (medium_2k) |
81| `x-ai/grok-imagine-image-quality` | 1–1 | 0–3 | no | $0.05/image (1k); $0.07/image (2k) |
83`meta/muse-image` was listed but returned no provider endpoints: catalogue membership does not
84establish availability. Krea returned empty pricing arrays. Ming's zero published rates are not a
85promise of permanently free generation. Gemini 2.5 and Gemini 3 Pro Preview offer multiple
86endpoints/tiers with different prices; inspect the endpoint and routing tag instead of assuming
87the lowest rate. Gemini 3 Pro's Vertex endpoint advertises only 1K/2K although its model union
88includes 4K through AI Studio.
90Input charges matter: Riverflow v2 reports $0.20/reference and $0.03/font; Seedream 5.0 Pro
91reports $0.003/input image; Grok reports $0.01/input image. OpenAI and MAI advertise input token
92rates. Recraft Styles charges $0.005/request for the input-reference line. Inspect every pricing
93line and its `billable`, `unit`, and optional `variant`; do not multiply a token or megapixel rate
94as if it were per image. The discovery schema supplies variant labels but does not always explain
95how they map to a particular request (for example Seedream Pro's `high_resolution`).

Catalogue snapshot

n and refs are inclusive ranges. A dash is unsupported, not unlimited; omitting n uses the provider default. n is an upper bound and can produce fewer images. A positive refs minimum means text-only generation is not supported. Prices below are output only, not total cost.

ModelnrefsstreamOutput rates
black-forest-labs/flux.2-flex1–10–8no$0.06/megapixel
black-forest-labs/flux.2-klein-4b1–10–4no$0.014/megapixel
black-forest-labs/flux.2-max1–10–8no$0.07/megapixel
black-forest-labs/flux.2-pro1–10–8no$0.03/megapixel
bytedance-seed/seedream-4.51–100–14no$0.04/image
bytedance-seed/seedream-5-0-lite1–40–14no$0.035/image
bytedance-seed/seedream-5-0-pro1–10–14no$0.045/image; $0.09/image (high_resolution)
google/gemini-2.5-flash-image1–10–3no$0.000054/token; $0.000015/token; $0.00003/token
google/gemini-3-pro-image1–10–14no$0.00012/token
google/gemini-3-pro-image-preview1–10–14no$0.00006/token; $0.00012/token
google/gemini-3.1-flash-image1–10–14no$0.00006/token
google/gemini-3.1-flash-image-preview1–10–14no$0.00006/token
google/gemini-3.1-flash-lite-image1–10–14no$0.00003/token
inclusionai/ming-image-0.1-design1–10–0no$0/token
inclusionai/ming-image-0.1-design-layer1–11–1no$0/token
krea/krea-2-large—0–1nonot published
krea/krea-2-medium—0–1nonot published
krea/krea-2-medium-turbo—0–1nonot published
meta/muse-image——nonot published
microsoft/mai-image-2.51–10–1no$0.000047/token
microsoft/mai-image-2.5-pro1–10–1no$0.000108/token
microsoft/mai-image-2.61–10–5no$0.000038/token
microsoft/mai-image-2.6-flash1–10–5no$0.000019/token
openai/gpt-5-image1–100–16yes$0.00004/token
openai/gpt-5-image-mini1–100–16yes$0.000008/token
openai/gpt-5.4-image-21–100–16yes$0.00003/token
openai/gpt-image-11–100–16yes$0.00004/token
openai/gpt-image-1-mini1–100–16yes$0.000008/token
openai/gpt-image-21–100–16yes$0.00003/token
openai/gpt-image-2.5-flare1–100–16yes$0.00003/token
openai/gpt-image-2.5-sunburst1–100–16yes$0.00003/token
qwen/qwen-image-31–60–4no$0.03/image (1k); $0.03/image (2k)
qwen/qwen-image-3-pro1–60–4no$0.04/image (1k); $0.075/image (2k)
recraft/recraft-v31–60–1no$0.04/image
recraft/recraft-v41–60–1no$0.04/image
recraft/recraft-v4-pro1–60–1no$0.25/image
recraft/recraft-v4-pro-vector1–60–1no$0.3/image
recraft/recraft-v4-styles1–61–10no$0.035/image
recraft/recraft-v4-styles-pro1–61–10no$0.1/image
recraft/recraft-v4-styles-pro-vector1–61–10no$0.12/image
recraft/recraft-v4-styles-vector1–61–10no$0.05/image
recraft/recraft-v4-vector1–60–1no$0.08/image
recraft/recraft-v4.11–60–1no$0.035/image
recraft/recraft-v4.1-flash1–6—no$0.007/image
recraft/recraft-v4.1-pro1–60–1no$0.21/image
recraft/recraft-v4.1-pro-vector1–60–1no$0.3/image
recraft/recraft-v4.1-utility1–60–1no$0.035/image
recraft/recraft-v4.1-utility-pro1–60–1no$0.21/image
recraft/recraft-v4.1-vector1–60–1no$0.08/image
sourceful/riverflow-v2-fast1–10–4no$0.02/image; $0.04/image (2k)
sourceful/riverflow-v2-pro1–10–10no$0.15/image; $0.15/image (2k); $0.33/image (4k)
sourceful/riverflow-v2.5-fast1–10–4no$0.019/image; $0.021/image (2k)
sourceful/riverflow-v2.5-pro1–10–10no$0.13/image; $0.15/image (2k); $0.17/image (4k)
x-ai/grok-imagine-image-2.01–10–3no$0.04/image (low_1k); $0.06/image (low_2k); $0.06/image (medium_1k); $0.08/image (medium_2k)
x-ai/grok-imagine-image-quality1–10–3no$0.05/image (1k); $0.07/image (2k)

meta/muse-image was listed but returned no provider endpoints: catalogue membership does not establish availability. Krea returned empty pricing arrays. Ming's zero published rates are not a promise of permanently free generation. Gemini 2.5 and Gemini 3 Pro Preview offer multiple endpoints/tiers with different prices; inspect the endpoint and routing tag instead of assuming the lowest rate. Gemini 3 Pro's Vertex endpoint advertises only 1K/2K although its model union includes 4K through AI Studio.

Input charges matter: Riverflow v2 reports $0.20/reference and $0.03/font; Seedream 5.0 Pro reports $0.003/input image; Grok reports $0.01/input image. OpenAI and MAI advertise input token rates. Recraft Styles charges $0.005/request for the input-reference line. Inspect every pricing line and its billable, unit, and optional variant; do not multiply a token or megapixel rate as if it were per image. The discovery schema supplies variant labels but does not always explain how they map to a particular request (for example Seedream Pro's high_resolution).

Raw lines 19 to 96
97## Allowed values
99This table records the full advertised value sets for the CLI's format, size-tier, quality and
100background knobs. `seed` is supported when present in discovery; a boolean capability descriptor
101means support, **not** that the seed request value should be boolean. Send an integer seed.
103| Model | resolution | output_format | quality | background | seed |
104| --- | --- | --- | --- | --- | --- |
105| `black-forest-labs/flux.2-flex` | — | png, jpeg | — | — | yes |
106| `black-forest-labs/flux.2-klein-4b` | — | png, jpeg | — | — | yes |
107| `black-forest-labs/flux.2-max` | — | png, jpeg | — | — | yes |
108| `black-forest-labs/flux.2-pro` | — | png, jpeg | — | — | yes |
109| `bytedance-seed/seedream-4.5` | 1K, 2K, 4K | — | — | — | yes |
110| `bytedance-seed/seedream-5-0-lite` | 2K, 4K | — | — | — | yes |
111| `bytedance-seed/seedream-5-0-pro` | 1K, 2K | — | — | — | yes |
112| `google/gemini-2.5-flash-image` | — | — | — | — | — |
113| `google/gemini-3-pro-image` | 1K, 2K, 4K | — | — | — | — |
114| `google/gemini-3-pro-image-preview` | 1K, 2K, 4K | — | — | — | — |
115| `google/gemini-3.1-flash-image` | 512, 1K, 2K, 4K | — | — | — | — |
116| `google/gemini-3.1-flash-image-preview` | 512, 1K, 2K, 4K | — | — | — | — |
117| `google/gemini-3.1-flash-lite-image` | 1K | — | — | — | — |
118| `inclusionai/ming-image-0.1-design` | — | png, jpeg, webp | — | — | — |
119| `inclusionai/ming-image-0.1-design-layer` | — | png, webp | — | — | — |
120| `krea/krea-2-large` | 1K | — | — | — | yes |
121| `krea/krea-2-medium` | 1K | — | — | — | yes |
122| `krea/krea-2-medium-turbo` | 1K | — | — | — | yes |
123| `meta/muse-image` | — | — | — | — | — |
124| `microsoft/mai-image-2.5` | — | — | — | — | — |
125| `microsoft/mai-image-2.5-pro` | — | — | — | — | — |
126| `microsoft/mai-image-2.6` | — | — | — | — | — |
127| `microsoft/mai-image-2.6-flash` | — | — | — | — | — |
128| `openai/gpt-5-image` | — | — | auto, low, medium, high | auto, transparent, opaque | — |
129| `openai/gpt-5-image-mini` | — | — | auto, low, medium, high | auto, transparent, opaque | — |
130| `openai/gpt-5.4-image-2` | — | — | auto, low, medium, high | auto, opaque | — |
131| `openai/gpt-image-1` | — | — | auto, low, medium, high | auto, transparent, opaque | — |
132| `openai/gpt-image-1-mini` | — | — | auto, low, medium, high | auto, transparent, opaque | — |
133| `openai/gpt-image-2` | — | — | auto, low, medium, high | auto, opaque | — |
134| `openai/gpt-image-2.5-flare` | — | — | auto, low, medium, high, xhigh, max | auto, transparent, opaque | — |
135| `openai/gpt-image-2.5-sunburst` | — | — | auto, low, medium, high, xhigh, max | auto, transparent, opaque | — |
136| `qwen/qwen-image-3` | 1K, 2K | — | — | — | yes |
137| `qwen/qwen-image-3-pro` | 1K, 2K | — | — | — | yes |
138| `recraft/recraft-v3` | — | — | — | — | — |
139| `recraft/recraft-v4` | — | — | — | — | — |
140| `recraft/recraft-v4-pro` | — | — | — | — | — |
141| `recraft/recraft-v4-pro-vector` | — | svg | — | — | — |
142| `recraft/recraft-v4-styles` | — | — | — | — | — |
143| `recraft/recraft-v4-styles-pro` | — | — | — | — | — |
144| `recraft/recraft-v4-styles-pro-vector` | — | svg | — | — | — |
145| `recraft/recraft-v4-styles-vector` | — | svg | — | — | — |
146| `recraft/recraft-v4-vector` | — | svg | — | — | — |
147| `recraft/recraft-v4.1` | — | — | — | — | — |
148| `recraft/recraft-v4.1-flash` | — | — | — | — | — |
149| `recraft/recraft-v4.1-pro` | — | — | — | — | — |
150| `recraft/recraft-v4.1-pro-vector` | — | svg | — | — | — |
151| `recraft/recraft-v4.1-utility` | — | — | — | — | — |
152| `recraft/recraft-v4.1-utility-pro` | — | — | — | — | — |
153| `recraft/recraft-v4.1-vector` | — | svg | — | — | — |
154| `sourceful/riverflow-v2-fast` | 1K, 2K, 4K | — | — | — | — |
155| `sourceful/riverflow-v2-pro` | 1K, 2K, 4K | — | — | — | — |
156| `sourceful/riverflow-v2.5-fast` | 1K, 2K | jpeg | — | auto, transparent, opaque | — |
157| `sourceful/riverflow-v2.5-pro` | 1K, 2K, 4K | png, jpeg, webp | — | auto, transparent, opaque | — |
158| `x-ai/grok-imagine-image-2.0` | 1K, 2K | — | low, medium | — | — |
159| `x-ai/grok-imagine-image-quality` | 1K, 2K | — | — | — | — |
161The generic guide's OpenAI example includes `output_format`, but current OpenAI endpoint discovery
162does not advertise it. The helper follows discovery and rejects it unless preflight is explicitly
163bypassed. Recraft vector models now advertise `output_format: svg`; use that value only where
164listed. Riverflow Fast advertises both JPEG-only output and transparent backgrounds: the helper
165rejects their explicit combination, because JPEG has no alpha channel. Validate actual output
166when requesting transparency with an omitted format too.

Allowed values

This table records the full advertised value sets for the CLI's format, size-tier, quality and background knobs. seed is supported when present in discovery; a boolean capability descriptor means support, not that the seed request value should be boolean. Send an integer seed.

Modelresolutionoutput_formatqualitybackgroundseed
black-forest-labs/flux.2-flex—png, jpeg——yes
black-forest-labs/flux.2-klein-4b—png, jpeg——yes
black-forest-labs/flux.2-max—png, jpeg——yes
black-forest-labs/flux.2-pro—png, jpeg——yes
bytedance-seed/seedream-4.51K, 2K, 4K———yes
bytedance-seed/seedream-5-0-lite2K, 4K———yes
bytedance-seed/seedream-5-0-pro1K, 2K———yes
google/gemini-2.5-flash-image—————
google/gemini-3-pro-image1K, 2K, 4K————
google/gemini-3-pro-image-preview1K, 2K, 4K————
google/gemini-3.1-flash-image512, 1K, 2K, 4K————
google/gemini-3.1-flash-image-preview512, 1K, 2K, 4K————
google/gemini-3.1-flash-lite-image1K————
inclusionai/ming-image-0.1-design—png, jpeg, webp———
inclusionai/ming-image-0.1-design-layer—png, webp———
krea/krea-2-large1K———yes
krea/krea-2-medium1K———yes
krea/krea-2-medium-turbo1K———yes
meta/muse-image—————
microsoft/mai-image-2.5—————
microsoft/mai-image-2.5-pro—————
microsoft/mai-image-2.6—————
microsoft/mai-image-2.6-flash—————
openai/gpt-5-image——auto, low, medium, highauto, transparent, opaque—
openai/gpt-5-image-mini——auto, low, medium, highauto, transparent, opaque—
openai/gpt-5.4-image-2——auto, low, medium, highauto, opaque—
openai/gpt-image-1——auto, low, medium, highauto, transparent, opaque—
openai/gpt-image-1-mini——auto, low, medium, highauto, transparent, opaque—
openai/gpt-image-2——auto, low, medium, highauto, opaque—
openai/gpt-image-2.5-flare——auto, low, medium, high, xhigh, maxauto, transparent, opaque—
openai/gpt-image-2.5-sunburst——auto, low, medium, high, xhigh, maxauto, transparent, opaque—
qwen/qwen-image-31K, 2K———yes
qwen/qwen-image-3-pro1K, 2K———yes
recraft/recraft-v3—————
recraft/recraft-v4—————
recraft/recraft-v4-pro—————
recraft/recraft-v4-pro-vector—svg———
recraft/recraft-v4-styles—————
recraft/recraft-v4-styles-pro—————
recraft/recraft-v4-styles-pro-vector—svg———
recraft/recraft-v4-styles-vector—svg———
recraft/recraft-v4-vector—svg———
recraft/recraft-v4.1—————
recraft/recraft-v4.1-flash—————
recraft/recraft-v4.1-pro—————
recraft/recraft-v4.1-pro-vector—svg———
recraft/recraft-v4.1-utility—————
recraft/recraft-v4.1-utility-pro—————
recraft/recraft-v4.1-vector—svg———
sourceful/riverflow-v2-fast1K, 2K, 4K————
sourceful/riverflow-v2-pro1K, 2K, 4K————
sourceful/riverflow-v2.5-fast1K, 2Kjpeg—auto, transparent, opaque—
sourceful/riverflow-v2.5-pro1K, 2K, 4Kpng, jpeg, webp—auto, transparent, opaque—
x-ai/grok-imagine-image-2.01K, 2K—low, medium——
x-ai/grok-imagine-image-quality1K, 2K————

The generic guide's OpenAI example includes output_format, but current OpenAI endpoint discovery does not advertise it. The helper follows discovery and rejects it unless preflight is explicitly bypassed. Recraft vector models now advertise output_format: svg; use that value only where listed. Riverflow Fast advertises both JPEG-only output and transparent backgrounds: the helper rejects their explicit combination, because JPEG has no alpha channel. Validate actual output when requesting transparency with an omitted format too.

Raw lines 97 to 167
168### Aspect ratios
170Read `--model-info` for the complete enum. Several important boundaries:
172- GPT Image 1, 1 Mini, GPT-5 Image and Mini: `1:1`, `3:2`, `2:3`, `auto`.
173- GPT Image 2, 2.5 Flare/Sunburst and GPT-5.4 Image 2 additionally accept `4:3`, `3:4`,
174 `16:9`, `9:16`, `21:9`.
175- Regular Recraft v3/v4/v4.1: `1:1`, `4:3`, `3:4`, `16:9`, `9:16`, `auto`.
176 Recraft Styles also accepts `2:1`, `1:2`, `3:2`, `2:3`, `5:4`, `4:5`.
177- Gemini 3.1 Flash/Flash Lite include extreme ratios `1:4`, `1:8`, `4:1`, `8:1`;
178 Gemini 3 Pro and 2.5 Flash do not.
179- Krea accepts `1:1`, `4:3`, `3:2`, `16:9`, `4:5`, `2:3`, `9:16` and no `auto`.
181The CLI has no `--size` flag. Direct Image API requests can use `size` as a tier (`2K`) or explicit
182pixels (`2048x2048`); explicit pixels override normalization, and contradictory resolution/aspect
183settings cause 400 errors. A `resolution` tier is not a promise of exact pixel dimensions.

Aspect ratios

Read --model-info for the complete enum. Several important boundaries:

  • GPT Image 1, 1 Mini, GPT-5 Image and Mini: 1:1, 3:2, 2:3, auto.
  • GPT Image 2, 2.5 Flare/Sunburst and GPT-5.4 Image 2 additionally accept 4:3, 3:4, 16:9, 9:16, 21:9.
  • Regular Recraft v3/v4/v4.1: 1:1, 4:3, 3:4, 16:9, 9:16, auto. Recraft Styles also accepts 2:1, 1:2, 3:2, 2:3, 5:4, 4:5.
  • Gemini 3.1 Flash/Flash Lite include extreme ratios 1:4, 1:8, 4:1, 8:1; Gemini 3 Pro and 2.5 Flash do not.
  • Krea accepts 1:1, 4:3, 3:2, 16:9, 4:5, 2:3, 9:16 and no auto.

The CLI has no --size flag. Direct Image API requests can use size as a tier (2K) or explicit pixels (2048x2048); explicit pixels override normalization, and contradictory resolution/aspect settings cause 400 errors. A resolution tier is not a promise of exact pixel dimensions.

Raw lines 168 to 184
185## Provider options and routing
187[The Image API guide](https://openrouter.ai/docs/guides/overview/multimodal/image-generation)
188documents `provider.only`, `order`, `ignore`, `sort` and `allow_fallbacks`. Use an endpoint's
189`provider_tag` for routing; a null tag means provider-level routing is unavailable. Options use the
190separate `provider_slug` key under `provider.options`. The helper prints both but does not expose
191routing/options flags. Do not put passthrough options at the request top level.
193Current passthrough sets differ even within a family:
195- Regular Recraft: `style`, `controls`, `text_layout`; Flash: `controls` only;
196 Styles: `style_id`, `style_match`, `controls`, `random_seed`.
197- Krea: `styles`, `moodboards`, `image_style_references`, `creativity`, `intensity`, `complexity`,
198 `movement`, `strength`.
199- OpenAI: `moderation`; Gemini: `cachedContent`; Riverflow: `font_inputs`.
200- MAI 2.6: `web_grounding`; FLUX: `steps`, `guidance`, `safety_tolerance`.
202An allowed key does not validate nested types, option values, or model/provider restrictions.

Provider options and routing

The Image API guide documents provider.only, order, ignore, sort and allow_fallbacks. Use an endpoint's provider_tag for routing; a null tag means provider-level routing is unavailable. Options use the separate provider_slug key under provider.options. The helper prints both but does not expose routing/options flags. Do not put passthrough options at the request top level.

Current passthrough sets differ even within a family:

  • Regular Recraft: style, controls, text_layout; Flash: controls only; Styles: style_id, style_match, controls, random_seed.
  • Krea: styles, moodboards, image_style_references, creativity, intensity, complexity, movement, strength.
  • OpenAI: moderation; Gemini: cachedContent; Riverflow: font_inputs.
  • MAI 2.6: web_grounding; FLUX: steps, guidance, safety_tolerance.

An allowed key does not validate nested types, option values, or model/provider restrictions.

Raw lines 185 to 203
204## Response, streaming and billing
206Generation uses authenticated `POST https://openrouter.ai/api/v1/images` with a Bearer API key and
207JSON `model`/`prompt`. References use `input_references[].image_url.url` plus `type: image_url`,
208with HTTP(S) or base64 data URLs. Buffered output is `data[].b64_json` (raw base64) with optional
209`media_type` and `usage`. There is no task polling/pagination in this synchronous workflow.
211Only use SSE when the endpoint advertises streaming. Its `data:` JSON has `type` equal to
212`image_generation.partial_image`, `image_generation.completed`, or `error`; final `[DONE]` is not
213itself an image or proof of success. Completed events carry `b64_json`, optional `media_type`,
214`created` and `usage`. The CLI does not stream.
216The Image API documents full billing for completed generations and none for failed/cancelled
217ones. Preview frames are not separate billable images. A local timeout or malformed response does
218not by itself establish server-side billing status; inspect activity before replaying a request.
220[Usage accounting](https://openrouter.ai/docs/cookbook/administration/usage-accounting) defines
221`usage.cost` as the OpenRouter charge and `usage.cost_details.upstream_inference_cost` as upstream
222inference cost. [BYOK](https://openrouter.ai/docs/guides/overview/auth/byok) may incur an OpenRouter
223fee after its plan allowance. Display both fields without blindly adding them, and do not assume
224`cost: 0` means an upstream provider did no billable work. Pixel area alone does not determine
225output token count; old claims that 4K always costs sixteen times 1K were unsupported.

Response, streaming and billing

Generation uses authenticated POST https://openrouter.ai/api/v1/images with a Bearer API key and JSON model/prompt. References use input_references[].image_url.url plus type: image_url, with HTTP(S) or base64 data URLs. Buffered output is data[].b64_json (raw base64) with optional media_type and usage. There is no task polling/pagination in this synchronous workflow.

Only use SSE when the endpoint advertises streaming. Its data: JSON has type equal to image_generation.partial_image, image_generation.completed, or error; final [DONE] is not itself an image or proof of success. Completed events carry b64_json, optional media_type, created and usage. The CLI does not stream.

The Image API documents full billing for completed generations and none for failed/cancelled ones. Preview frames are not separate billable images. A local timeout or malformed response does not by itself establish server-side billing status; inspect activity before replaying a request.

Usage accounting defines usage.cost as the OpenRouter charge and usage.cost_details.upstream_inference_cost as upstream inference cost. BYOK may incur an OpenRouter fee after its plan allowance. Display both fields without blindly adding them, and do not assume cost: 0 means an upstream provider did no billable work. Pixel area alone does not determine output token count; old claims that 4K always costs sixteen times 1K were unsupported.

Raw lines 204 to 225