GPT Image 2.5 is live — OpenAI's newest image model, targeted edits that leave the rest of the frame alone
rreAPI Docs

doubao-seedream-5-0-lite

ByteDance Doubao Seedream 5.0 Lite — async image generation at 2K and 3K with image-to-image, batch output, and a flat per-image rate.

ByteDance Doubao's lean image model on reAPI. 2K, 3K and 4K resolution tiers, eleven aspect ratios, image-to-image via reference URLs, and batch generation of up to 15 images per call. Async-first: submit returns a task_id; poll until ready. See current pricing on the model page.

Quick example

curl https://reapi.ai/api/v1/images/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedream-5-0-lite",
    "prompt": "a kitten yawning into the camera, cinematic warm tones",
    "size": "16:9",
    "resolution": "2K",
    "n": 1
  }'
import requests

resp = requests.post(
    "https://reapi.ai/api/v1/images/generations",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "model": "doubao-seedream-5-0-lite",
        "prompt": "a kitten yawning into the camera, cinematic warm tones",
        "size": "16:9",
        "resolution": "2K",
        "n": 1,
    },
    timeout=30,
)
print(resp.json())
const r = await fetch("https://reapi.ai/api/v1/images/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "doubao-seedream-5-0-lite",
    prompt: "a kitten yawning into the camera, cinematic warm tones",
    size: "16:9",
    resolution: "2K",
    n: 1,
  }),
});
console.log(await r.json());
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    body, _ := json.Marshal(map[string]any{
        "model":      "doubao-seedream-5-0-lite",
        "prompt":     "a kitten yawning into the camera, cinematic warm tones",
        "size":       "16:9",
        "resolution": "2K",
        "n":          1,
    })
    req, _ := http.NewRequest("POST",
        "https://reapi.ai/api/v1/images/generations", bytes.NewReader(body))
    req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()
    out, _ := io.ReadAll(resp.Body)
    fmt.Println(string(out))
}

Submit response

{
  "id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
  "model": "doubao-seedream-5-0-lite",
  "status": "processing",
  "created_at": 1735000000
}

Poll GET /api/v1/tasks/{id} (see the Tasks reference) until status === "completed". The completed payload's output.image_urls holds the generated image URLs, valid for 72 hours. Mirror to your own storage if you need them longer.


Authentication

Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.

Authorization: Bearer YOUR_API_KEY

Keys carry the active workspace's billing scope — there is no separate project header.


Endpoint

POST /api/v1/images/generations
GET  /api/v1/tasks/{id}

Submission is async. The POST returns immediately with a task_id; the task endpoint returns the same envelope until completion. Polling does not consume credits.


Request body

model — required

string. Must be doubao-seedream-5-0-lite exactly. The dotted / capitalized aliases the upstream model card mentions are not accepted at this gateway — send the canonical hyphen-only id.

prompt — string, required

Up to 4,000 characters. Free-form text describing the image. Detailed prompts that name the subject, the composition, the lighting, and the style consistently produce better results.

size — string, default "1:1"

Output aspect ratio. One of:

ValueShape
1:1Square
4:3Traditional landscape
3:4Traditional portrait
16:9Widescreen landscape
9:16Widescreen portrait
3:2Photo landscape
2:3Photo portrait
2:1Extra-wide landscape
1:2Extra-tall portrait
21:9Cinematic ultrawide
autoMatch the first reference image's ratio (requires image_urls)

9:21 is not supported on Seedream 5.0 Lite. Sending it returns 400 — use 21:9 for ultrawide framing instead.

resolution — string, default "2K"

Detail tier. Case-insensitive — "2K" and "2k" are equivalent.

Value1:1 example16:9 example
2K2048 × 20482848 × 1600
3K3072 × 30724096 × 2304
4K4096 × 40965504 × 3040

1K is not supported on this model — only the three tiers above.

n — integer, default 1

How many images to return per call. Range [1, 15]. The number of image_urls plus n must not exceed 15 — a request over that returns 400.

When n > 1, the upstream automatically promotes sequential_image_generation to "auto" so the call returns a consistent batch in one shot. You don't need to set the field yourself unless you want to override the default.

image_urls — array, optional

Reference images for image-to-image / multi-ref fusion. Public HTTPS URLs only — base64 / data: URIs are rejected at the gateway.

Per-image constraints (from the upstream vendor doc):

  • Format: jpeg or png
  • Aspect ratio per image must be in [1/3, 3]
  • Each image ≤ 10 MB; total pixels ≤ 6000 × 6000

Upload to your own R2 / S3 / OSS / equivalent first, then pass the public URL.

output_format — string, default "jpeg"

Encoding for the returned files.

  • jpeg — small files, good for general use
  • png — needed for transparent backgrounds

sequential_image_generation — string, default "disabled"

Group-mode toggle. Two values:

  • disabled — single-image mode
  • auto — multi-image series mode

When n > 1, the upstream auto-sets this to "auto". Most callers should leave the field unset and let n drive the behavior.

sequential_image_generation_options — object, optional

Tuning for group mode. Only meaningful under "auto".

FieldTypeDescription
max_imagesintegerCap on the number of images in the series

Example:

{
  "sequential_image_generation": "auto",
  "sequential_image_generation_options": { "max_images": 4 }
}

watermark — boolean, default false

Set true to add a Doubao watermark to the output. Off by default.

content_filter — boolean, default true

With the default (true), the prompt and input images are screened before the task is submitted. A rejected request fails with a content-policy error (80006) and is refunded.

Set content_filter: false to skip that screening. What changes:

  • API keys only. The website playground always runs with the filter on.
  • Same parameters. Every field and rule in this document applies unchanged. Unfiltered requests bill on their own line in the pricing table.
  • Output lands in an isolated bucket and its URLs stay valid for 30 days — mirror the files if you need them longer.

Platform terms apply to everything you generate either way.


Pricing

Seedream 5.0 Lite charges a flat per-image rate at 2K, 3K and 4K. Multiply the per-image credit cost by n to size a batch. Failed and moderated requests are refunded automatically. content_filter: false requests bill on a separate line of the pricing table.

The exact credit cost surfaces on the model page and through the estimator before submit.


Response

The poll envelope returns image URLs in output.image_urls:

{
  "id": "task_019dfd44b7fd74168541552a3260a623",
  "model": "doubao-seedream-5-0-lite",
  "status": "completed",
  "output": {
    "image_urls": [
      "https://cdn.reapi.ai/...png"
    ]
  }
}

URLs are valid for 72 hours. Mirror to your own storage for longer retention.

Table of Contents