We route 52 image generation models through one API:https://openrouter.ai/models?output_modalities=image. We ran the same prompt through 20 of them and recorded what each call billed, what it returned, and what it accepts.

Cost is the hard part, because these models are not sold in the same unit. FLUX.2 is priced per megapixel. Gemini, OpenAI, and Microsoft MAI are priced per token. Grok, Recraft, Riverflow, Qwen, and Seedream are priced per image, at a rate that changes with the quality and resolution you ask for. Each model page is correct in its own unit, so you cannot compare two of them by reading their prices side by side.
We put them on the same footing. The 20 models we tested all got the same prompt at the same size, and we read the usage.cost field from each response, which is the amount we charged.
Every price on this page came from a real generation, measured on 11 September 2026. Prices and models change often, so treat any figure more than a month old as a hint rather than a budget line. You can re-pull the current state with GET /api/v1/images/models :https://openrouter.ai/docs/guides/overview/multimodal/image-generation#via-the-image-models-api for accepted parameters and GET /api/v1/images/models/{model}/endpoints :https://openrouter.ai/docs/guides/overview/multimodal/image-generation#per-endpoint-records for pricing with the unit named.
We sent each of these 20 models the prompt “A studio packshot of a glass bottle, hard key light, no text.” with aspect_ratio: "1:1" and no other settings, then read usage.cost off the response. The billing unit column is the unit field from each endpoint’s pricing record.

Figure 1. The same prices, sorted. The three billing units are mixed all the way up the range, so the unit does not tell you where a model lands in it.
Three things to know before you budget from this table.
On OpenAI models, quality changes your bill more than any other setting. We ran gpt-image-2 with the same prompt at the same 1024x1024 size with quality unset, set to low , and set to high .
Leaving quality unset gave us the same token count and bill as low . Set quality explicitly when the image matters, and treat a per-image price for an OpenAI model as incomplete unless it names the quality tier. The high call also took 123 seconds to return against 12 seconds for the default call.
On a per-megapixel model, the frame you ask for changes the bill, but by less than the pixel count suggests. We ran black-forest-labs/flux.2-klein-4b:https://openrouter.ai/black-forest-labs/flux.2-klein-4b at two shapes. The 21:9 call returned 2400x1024, which is 2.46 megapixels against 1.05 for the square. We were billed $0.014 for the square and $0.016 for the wide crop.
Each model publishes a rate on its page and on the API’s endpoints route. Those rates are a planning number, and the response is what you pay. On 11 September 2026, sourceful/riverflow-v2.5-pro listed $0.13 per image at its default resolution and billed us $0.064. black-forest-labs/flux.2-flex listed $0.06 per megapixel and billed us $0.05 for a one-megapixel image. black-forest-labs/flux.2-max listed $0.07 and billed us exactly $0.07. krea/krea-2-medium published no pricing record on its endpoint and billed us $0.03.
When the two disagree, read usage.cost :https://openrouter.ai/docs/guides/overview/multimodal/image-generation#response-format rather than multiplying a listed rate by an estimate.
We bill a completed image request in full and charge nothing for one that fails. The Image API billing documentation:https://openrouter.ai/docs/guides/overview/multimodal/image-generation#billing-and-cancellation describes which outcomes are billed.
Price is one axis. These are the others, and two of them rule models out before cost matters at all. The values come from each endpoint’s supported_parameters on 11 September 2026.
A reference image is one you send with the request for the model to work from, either an image you want edited or an example of the style or product you want matched. The limit on how many you can send is a hard ceiling. Grok takes three and Gemini takes fourteen, so a six-image brand kit rules Grok out before you compare anything else.
The output modalities column is the second axis. Most of these models take text and images in and return only image bytes. The Gemini image models and OpenAI’s gpt-5-image models can also return written text in the same reply, which matters if you want the model to explain what it made. We tested how reliably they do that further down.
Re-pull this table for any model with GET /api/v1/images/models :https://openrouter.ai/docs/guides/overview/multimodal/image-generation#via-the-image-models-api, which publishes each model’s accepted parameters and their ranges. A parameter that is absent from supported_parameters is not supported on that endpoint.
seed is the number you send to make a result repeatable. It is missing from every Gemini, Grok, OpenAI, Riverflow, Recraft, and MAI image model on our catalog. It exists on FLUX.2, Seedream, Qwen, and Krea.
We ran black-forest-labs/flux.2-klein-4b twice with the same prompt and seed: 424242 . The two responses were identical byte for byte, and both billed $0.014. We only tested Klein, so treat the other seed-capable models as untested rather than assuming they behave the same way. For comparison, two sourceful/riverflow-v2.5-fast calls with no seed parameter returned two different images from the same request body.
We show Design Arena:https://www.designarena.ai/leaderboard/image ratings on each model’s page. When we pulled the current ratings through our benchmarks API:https://openrouter.ai/docs/api/api-reference/benchmarks on 11 September 2026, sourceful/riverflow-v2.5-pro had the highest rating on both the image board and the image editing board. Microsoft’s MAI Image 2.6 models and Google’s Gemini image models followed on the image board, and black-forest-labs/flux.2-klein-4b had the lowest rating of the models listed on both boards.
Those ratings come from head-to-head votes between models, which Design Arena turns into an Elo rating, a score that rises when a model wins a matchup and falls when it loses.
Two caveats. The Gemini ratings sit on the -preview versions of those slugs rather than the general release slugs we link on this page. And Elo tells you what voters preferred on their prompts, not yours. The top-rated model billed $0.064 per image in our run and the lowest-rated one billed $0.014. Shortlist from the board, then decide from your own prompts.
We sent one prompt to six models across the price range and put the bill under each image. We asked for a matte black coffee bag with two lines of text printed on it.
A studio packshot of a matte black coffee bag on a plain white background, hard key light. Printed across the front of the bag in clean sans-serif capitals are the words OPENROUTER ROASTERS, and beneath that in smaller capitals the words SINGLE ORIGIN.
We picked readable words because they are easy to grade. Either the bag says what you asked for or it does not.
Figure 2. The same prompt through six models, with the measured cost of each call.
Five of the six printed both lines correctly. The exception is black-forest-labs/flux.2-klein-4b , which rendered the brand name correctly and misspelled the second line as SINGLE ORISION.
The most useful comparison is the cheapest model against the most expensive one on the Design Arena board. openai/gpt-image-2 billed $0.0135 and sourceful/riverflow-v2.5-pro billed $0.0654, and both produced a correct, usable packshot. Spending about five times more gave us a different look, not better text.
That does not make Riverflow overpriced. It leads the Design Arena boards, and on a harder image, an unusual composition, or a longer string of text, the gap may show. What it does mean is that neither the leaderboard nor the price column predicted the result on this prompt, and only running the prompt did.
Two smaller things came out of the same test. Your prompt length changes your bill on the per-token models, since openai/gpt-image-2 billed $0.006 on the one-line prompt earlier and $0.0135 on this longer one. And every model read “studio packshot” differently, from a hard-shadow product shot to a soft-lit one, so composition is a style choice to test.
Pick the model on whichever constraint is tightest for you. That may be cost at volume, whether the image has to contain readable words, how many reference images you need to send, or whether the reply needs text alongside the picture.
Start with openai/gpt-image-2:https://openrouter.ai/openai/gpt-image-2. It billed $0.006 on the short prompt in the cost table and $0.0135 on the longer coffee-bag prompt, because it is priced per token and your prompt is part of the bill. Budget in that range for product prompts of similar length. It is the cheapest model we measured and it rendered our text correctly for the least money.
black-forest-labs/flux.2-klein-4b:https://openrouter.ai/black-forest-labs/flux.2-klein-4b at $0.014 is the other cheap option, with one measured catch. It was the only model of the six that misspelled the label, and it had the lowest Design Arena rating of the models on both boards. Use it for volume work with no readable words in the frame. Do not use it when a product name has to come out right.
The OpenAI figures assume you leave quality unset. Moving it to high multiplied that line of our bill by 35. Klein has no quality setting, so its cost is easier to forecast and there is no setting to raise when you need a better result.
On the coffee-bag prompt the two came out at $0.0135 and $0.014, which is $135 against $140 for ten thousand images. At that point price is not deciding anything, so run your own prompts through both and let the output decide.
One operational note about Klein. Black Forest Labs publishes its weights on Hugging Face, where the repository is named black-forest-labs/FLUX.2-klein-4B:https://huggingface.co/black-forest-labs/FLUX.2-klein-4B rather than using our slug’s capitalization. You can call it through us now and move it in-house later without changing the model family you built around.
Packaging, UI mockups, slides, and posters fail when the model garbles a product name.
Five of the six models we tested handled a two-line label with no help, so pick on cost and style, then check the result against your own words rather than ours.
black-forest-labs/flux.2-flex:https://openrouter.ai/black-forest-labs/flux.2-flex rendered our label correctly, billed $0.05 for the image, and takes up to eight reference images. If you are already on FLUX.2 and the words matter, it is the FLUX.2 model to move to. If you are not committed to a family, openai/gpt-image-2 did the same job for about a quarter of the price.
Before you settle, look at recraft/recraft-v4.1-vector:https://openrouter.ai/recraft/recraft-v4.1-vector, which solves the problem differently. It returns SVG rather than pixels, and its endpoint accepts style , controls , and text_layout as passthrough parameters under provider.options . For a logo or a label that has to scale and stay editable, vector output beats a sharper raster, and $0.08 an image gets you a file you can open in a design tool.
Here, the same object has to look the same everywhere it appears. A bottle on the product page and the same bottle in a campaign image should not drift apart.
We tested this. We took the coffee bag openai/gpt-image-2 had already made, sent it back as an input_references :https://openrouter.ai/docs/guides/overview/multimodal/image-generation#image-to-image-reference-images image, and asked four models to keep the bag and its printed label exactly as they were while replacing the white background with a dark walnut counter under warm side light.
Figure 3. One source image, one instruction, four models, with the measured cost of each edit.
All four kept the wording and the typeface. All four also changed the bag’s shape, proportions, or lighting to some degree, and none reproduced the source bag pixel for pixel, so if every image in a campaign has to match one hero shot, compare the outputs against the source rather than reading the label alone.
To compare editing against generating fairly, we also ran the generate side using the edit instruction as the prompt, so both columns come from the same wording. That matters because two of these models bill per token, where a longer prompt is a bigger bill on its own.
black-forest-labs/flux.2-pro billed half as much again for the edit. Its edit response reported 4,096 prompt tokens where the generate response reported 34, which is the reference image being counted as input, and its endpoint lists a rate for output megapixels only, so the listed rate alone does not predict the edit price. sourceful/riverflow-v2.5-pro billed 18 percent more for the edit. On openai/gpt-image-2 and google/gemini-3-pro-image the gap was under 7 percent. These are single runs, so read the small gaps as approximate rather than as precise premiums.
Two numbers narrow the field for editing, namely how many reference images the model accepts and how it rates on the Design Arena image editing board.
black-forest-labs/flux.2-pro:https://openrouter.ai/black-forest-labs/flux.2-pro takes eight references and billed $0.03 to generate and $0.045 to edit. black-forest-labs/flux.2-max:https://openrouter.ai/black-forest-labs/flux.2-max gives you the same eight references at $0.07 per generated image.
If your brand kit runs past eight images, FLUX.2 cannot take it. The Gemini 3.x image models and Seedream 5.0 take fourteen, and the OpenAI image models take sixteen. Grok caps at three.
Sometimes the user is in a conversation and the answer should include an image and a written explanation. Nine of the 52 models on our catalog list text among their output modalities, and they are the ones that can do this. They are the Gemini image models and OpenAI’s gpt-5-image models.
Being able to return text and doing it are different things. We took four of the nine, sent each the same request through the chat completions endpoint with modalities: ["image", "text"] , asked for an image plus a two-sentence explanation, and counted how often we got both. These costs are higher than the same models’ figures in the cost table because the reply carries text, and on a per-token model you pay for both.
Every one of those calls returned at least one image. google/gemini-3-pro-image returned two images per call. The difference is the written half, and the two cheaper Gemini models mostly skipped it even though the prompt asked for it directly.
If the text is optional, google/gemini-3.1-flash-image at $0.067 works and you handle the empty case. If your product breaks without the text, google/gemini-3-pro-image at about $0.139 was the only model of the four that answered with text every time in our run.
We recommend the dedicated Image API over chat completions for new image work:https://openrouter.ai/blog/announcements/image-api, because new image models are added only to the Image API and the chat route gives you fewer parameters. openai/gpt-5-image was also the most expensive option here at $0.20 to $0.28 a call, and it returned text in two of three calls. These chat calls bill prompt and completion tokens on top of the image, so a long instruction and a long answer cost more than the per-image figure.
Generating, editing, and chatting look similar, but they are different requests. Generating and editing use the images endpoint and differ by one field. Chatting uses the chat completions endpoint instead, and only the nine text-capable models above can do it. Our Image Generation Models on OpenRouter:https://openrouter.ai/blog/tutorials/image-generation-models/ tutorial covers the full request and response contract for both endpoints.
Figure 4. Generating and editing are one endpoint with a different body. Chatting is a different endpoint.
Generating is POST /api/v1/images with a model and a prompt . You get image bytes back.
Editing is the same endpoint with input_references added, because you are changing an image you already have instead of making a new one.
Chatting sends a messages array to POST /api/v1/chat/completions . Text and images go in, and text and images can come back.
The images route is POST https://openrouter.ai/api/v1/images . The only required fields are model and prompt .
