gemini-3.1-flash-lite-image vs Seedream 5.0 Lite
Which one, when — curated verdict, not a benchmark table
These two bill in different units — gemini-3.1-flash-lite-image charges per token ($0.25 per million in, $30 per million out) while seedream-5-0-260128 charges a flat $0.035 per call — so no single conversion between them is honest; budget against your own prompt sizes and call volume. Pick the Google model when you need text back alongside images, since it emits both text and image (up to 4096 output tokens) from text or image input. Pick the ByteDance model for pure text-or-image-to-image work at a predictable per-call cost.
Pricing
| gemini-3.1-flash-lite-image | Seedream 5.0 Lite | Δ | |
|---|---|---|---|
| Per generated image | — | $0.035 | — |
| Input / 1M tokens | $0.25 | — | — |
| Output / 1M tokens | $30 | — | — |
These two models bill in different units, so no Δ is shown — converting between them would require an assumption we have not measured. Each card is listed in its own unit above.
Specs
| gemini-3.1-flash-lite-image | Seedream 5.0 Lite | |
|---|---|---|
| Input modalities | text image | text image |
| Output modalities | text image | image |
| Released | 2026-06-30 | 2026-01 |
| Knowledge cutoff | 2025-01 | — |
| Output sizes | 1K only (1:1 = 1024x1024) |
|
| Input modes | text-to-image, interleaved generation + editing, up to 14 reference images | text-to-image, single-image image-to-image, multi-reference image-to-image (2–14 refs), batch/sequential image sets |
| Images per request | — | 15 |
| Formats | — | png, jpeg |
| Notes | 1K (1024px) output only 10 aspect ratios (1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9) and up to 14 reference images interleaved generation and editing with fast multi-turn local edits sub-2s end-to-end latency SynthID + C2PA watermarking always on | 2K/3K/4K output, png/jpeg text-to-image + single/multi-reference image editing batch generation with reference + generated images <=15 500 max IPM |
Specs are transcribed from each vendor’s documentation; a row a vendor does not publish is left out rather than inferred. Full sources: gemini-3.1-flash-lite-image · Seedream 5.0 Lite
One prompt, both models — measured through the gateway
One prompt, one request per model, no retries and no cherry-picking — the first result each model returned. Neither size nor duration was pinned: each model used its own default, because a request shaped to fit all of them would flatter none. Files here are re-encoded for the web, so judge composition and prompt adherence, not compression.
Switch between them with one line
Both ids are in every tab below — the highlighted pair of lines is the only edit. Same endpoint, same key, same request shape.
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.images.generate(
model="gemini-3.1-flash-lite-image",
# model="seedream-5-0-260128", # uncomment this line, comment the one above
prompt="a watercolor lighthouse at dawn",
size="1024x1024",
)
print(resp.data[0].b64_json[:80])import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://synthorai.io/v1",
apiKey: "sk-syn-...",
});
const resp = await client.images.generate({
model: "gemini-3.1-flash-lite-image",
// model: "seedream-5-0-260128", // uncomment this line, comment the one above
prompt: "a watercolor lighthouse at dawn",
size: "1024x1024",
});
console.log(resp.data?.[0]?.b64_json?.slice(0, 80));curl https://synthorai.io/v1/images/generations \
-H "Authorization: Bearer sk-syn-..." \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-lite-image",
# "model": "seedream-5-0-260128", # uncomment this line, comment the one above
"prompt": "a watercolor lighthouse at dawn",
"size": "1024x1024"
}'package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://synthorai.io/v1"),
option.WithAPIKey("sk-syn-..."),
)
resp, _ := client.Images.Generate(context.TODO(), openai.ImageGenerateParams{
Model: "gemini-3.1-flash-lite-image",
// Model: "seedream-5-0-260128", // uncomment this line, comment the one above
Prompt: "a watercolor lighthouse at dawn",
Size: "1024x1024",
})
fmt.Println(resp.Data[0].B64JSON[:80])
}import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.images.*;
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://synthorai.io/v1")
.apiKey("sk-syn-...")
.build();
ImagesResponse resp = client.images().generate(
ImageGenerateParams.builder()
.model("gemini-3.1-flash-lite-image")
// .model("seedream-5-0-260128") // uncomment this line, comment the one above
.prompt("a watercolor lighthouse at dawn")
.size("1024x1024")
.build());
System.out.println(resp.data().orElseThrow().get(0).b64Json().orElseThrow().substring(0, 80));FAQ
Which is cheaper, gemini-3.1-flash-lite-image or Seedream 5.0 Lite?
They bill in different units, so there is no single honest number: gemini-3.1-flash-lite-image and Seedream 5.0 Lite each appear in their own unit in the table above. Compare them on your own workload — the practical trade-off is described in the verdict at the top of this page.
Can I A/B test gemini-3.1-flash-lite-image against Seedream 5.0 Lite without two integrations?
Yes. Both are served through the same OpenAI-compatible endpoint with one API key — switching is a one-line model-string change, so you can route a fraction of traffic to each and compare bills directly.
Does the price change with image size?
It depends on how the model bills. Per-image models charge the same regardless of prompt or output size; token-billed models scale with the resolution you render, so a 4K image costs a multiple of a small one. The table above shows which applies to each.