Image generation API compared: 11 models, the same 3 prompts, real outputs
We ran GPT Image 2.5, GPT Image 2, Seedream, Qwen Image, FLUX, SDXL Turbo and Bria FIBO on the same three prompts through one API and compared text rendering, composition, latency and price per image.
QuickSilver Pro sells a dozen image-generation models behind one OpenAI-compatible endpoint, /v1/images/generations. They are billed per image, and the price per image ranges widely: $0.003 for FLUX.1 Schnell, $0.07 for Seedream 5.0 Pro. The question is what the extra money buys.
So on 2026-10-20 we gave 11 of them the same three prompts and looked at every image.
| Model | Price per image |
|---|---|
| GPT Image 2.5 Flare | $0.018 |
| GPT Image 2.5 Sunburst | $0.018 |
| GPT Image 2 | $0.01 |
| Seedream 5.0 Pro | $0.07 |
| Seedream 4 | $0.055 |
| Qwen Image 3.0 | $0.04 |
| FLUX.2 Pro | $0.027 |
| FLUX.2 Klein | $0.02 |
| FLUX.1 Schnell | $0.003 |
| SDXL Turbo | $0.003 |
| Bria FIBO 1.5 | $0.055 |
Nano Banana Pro is also in the catalog; it is not part of this test.
How we tested
Three prompts, each testing something different:
- Text on packaging: Product photo of a matte black coffee bag standing on a wooden table. The front label reads "NORTHWIND ROASTERS" in large white capital letters, and below it, in smaller text, "Ethiopia Yirgacheffe" and "250 g". Soft studio lighting, shallow depth of field.
- Exact composition: Flat vector illustration on a plain white background: exactly three red apples on the left side of the image, and exactly one blue cup on the right side. Nothing else in the image.
- Photoreal scene: Photorealistic photograph of a small wooden cabin beside a mountain lake at dawn, mist over the water, a red canoe tied to a wooden dock in the foreground, pine trees, no people.
Every request used the same parameters: size="1024x1024", n=1, nothing else. Each model ran each prompt once. We then ran the composition prompt a second time on every model, one request at a time, to get a cleaner latency figure and a second sample. We judged every image by eye: for the label, whether all three lines are spelled exactly right; for the illustration, whether there are exactly three apples on the left and one cup on the right; for the scene, whether every element in the prompt is there and physically plausible.
Results
| Model | Median latency | Text on packaging | Three apples, one cup | Photoreal scene |
|---|---|---|---|---|
| GPT Image 2.5 Flare | 11.5 s | All correct | 2 of 2 | All elements |
| GPT Image 2.5 Sunburst | 17.5 s | All correct, plus a line we did not ask for | 2 of 2 | All elements |
| GPT Image 2 | 20.2 s | All correct | 2 of 2 | All elements |
| Seedream 5.0 Pro | 40.8 s | All correct, brand name smaller than asked | 1 of 1 | All elements |
| Seedream 4 | 6.4 s | All correct | 1 of 1 | All elements, very saturated colours |
| Qwen Image 3.0 | 5.0 s | All correct | 1 of 2 (four apples once) | All elements |
| FLUX.2 Pro | 8.9 s | All correct | 1 of 2 (two apples once) | All elements |
| FLUX.2 Klein | 1.3 s | All correct | 0 of 2 (two apples both times) | Canoe overlaps the dock |
| FLUX.1 Schnell | 0.7 s | Brand correct, small text garbled | 1 of 2 (two apples and two cups once) | Canoe lying on the dock |
| SDXL Turbo | 4.1 s | Garbled | 0 of 2 | Two canoes, neither at the dock |
| Bria FIBO 1.5 | 8.9 s | "Yirgachefee", plus two lines of invented text | 1 of 1 | All elements |
Latency is the median of four requests per model, measured from one client. The second composition run was not saved for Seedream 4, Seedream 5.0 Pro and Bria FIBO 1.5, so those have one sample. All 33 requests in the main run succeeded.
What stands out:
- Text is mostly solved, except at the cheap end. Eight of the eleven models wrote all three lines of the label correctly. FLUX.1 Schnell and Bria FIBO 1.5 got the brand name right and garbled or misspelled the smaller lines; SDXL Turbo produced lettering that is not words.
- Counting is where models differ. Only the three GPT Image models drew three apples and one cup in both runs. Qwen Image 3.0, FLUX.2 Pro and FLUX.1 Schnell got it right once and wrong once, so a single good image does not mean the model follows counts reliably. FLUX.2 Klein drew two apples both times.
- The photoreal scene was easy for nearly everyone. Eight of eleven images had every element in a plausible arrangement. The failures were physical: a canoe merged into the dock, a canoe lying on top of it.
- Latency spans nearly two orders of magnitude. FLUX.1 Schnell answered in under a second; Seedream 5.0 Pro took 28 to 51 seconds per image.
Text on packaging
| GPT Image 2.5 Flare | GPT Image 2.5 Sunburst | Qwen Image 3.0 |
|---|---|---|
![]() | ![]() | ![]() |
| FLUX.2 Klein | Bria FIBO 1.5 | SDXL Turbo |
![]() | ![]() | ![]() |
Three apples on the left, one cup on the right
| GPT Image 2.5 Sunburst | Seedream 5.0 Pro | Bria FIBO 1.5 |
|---|---|---|
![]() | ![]() | ![]() |
| Qwen Image 3.0 (first run) | FLUX.2 Pro (first run) | SDXL Turbo |
![]() | ![]() | ![]() |
Cabin, lake and red canoe
| GPT Image 2.5 Flare | Seedream 5.0 Pro | FLUX.2 Pro |
|---|---|---|
![]() | ![]() | ![]() |
| Qwen Image 3.0 | FLUX.2 Klein | SDXL Turbo |
![]() | ![]() | ![]() |
What the API actually returns
The models do not all answer a request the same way, and code that works with one can break on another:
- Size is not always what you ask for. We asked for 1024x1024 every time. Seedream 4 returned 1280x1024 every time we checked. GPT Image 2 picks its own aspect ratio at about 1.57 megapixels: 1774x887 for the apples (twice), 1536x1024 for the lake, 1312x1199 for the coffee bag. Every other model returned 1024x1024.
- Some models return a link instead of the image. GPT Image, Qwen Image, FLUX and SDXL Turbo put the image in
b64_json. Seedream 4, Seedream 5.0 Pro and Bria FIBO 1.5 return a download URL inurlinstead, and still did when we passedresponse_format="b64_json". We did not test how long those links stay valid, so download the file straight away. - The format differs too. FLUX, SDXL Turbo and the Seedream models returned JPEG; GPT Image, Qwen Image and Bria returned PNG. Check the file's first bytes rather than assuming an extension.
Code that handles both response shapes:
import base64
import urllib.request
from openai import OpenAI
client = OpenAI(
base_url="https://api.quicksilverpro.io/v1",
api_key="YOUR_QSP_KEY",
)
result = client.images.generate(
model="gpt-image-2.5-flare",
prompt="Flat vector illustration: three red apples on the left, one blue cup on the right, plain white background.",
size="1024x1024",
n=1,
)
image = result.data[0]
if image.b64_json:
data = base64.b64decode(image.b64_json)
else: # Seedream and Bria return a download link instead
data = urllib.request.urlopen(image.url).read()
with open("apples.png", "wb") as f:
f.write(data)
Which one to use
- GPT Image 2.5 Flare if the image has to match the prompt: correct text and correct counts in every run, at $0.018 per image and about 11 seconds. Sunburst gave the same accuracy here, more slowly, and added a line of text we did not ask for; GPT Image 2 is cheaper at $0.01 but slower and does not keep the size you request.
- Qwen Image 3.0 or FLUX.2 Pro for good text and photoreal scenes in five to nine seconds, if you can retry when a count comes out wrong.
- FLUX.2 Klein or FLUX.1 Schnell when speed and volume matter more than precision: drafts, thumbnails, many variations to choose from. Klein even got the label text right, in about a second.
- Seedream 5.0 Pro produced accurate, natural-looking images, but at $0.07 and 28 to 51 seconds per image it is the most expensive and slowest model in this test.
The whole test, about 50 images including reruns and checks, cost about $1.45 at QuickSilver Pro prices on 2026-10-20.
Limits of this test
One or two images per model per prompt is a very small sample: the composition prompt showed that the same model can get it right on one run and wrong on the next, so treat every cell in the table as one observation, not a rate. Quality was judged by one person looking at the images, and "looks natural" is a matter of taste. We used default settings only; several of these models accept extra parameters (quality, seeds, prompt rewriting) that we did not try. Latency was measured from one client on one day, and in the first run all eleven models were working at the same time. Run your own prompts before choosing: every image request appears in your dashboard with its cost.
For setup in other languages and SDKs, see the quickstart and the model list.

















