ByteDance · Images · API

Seedream API — ruble pricing and a 5-minute setup

Seedream API (ByteDance) with ruble billing: Lite and Pro versions through one Zerocoder key. Per-image pricing, code samples, limits, refunds.

What Seedream is and where it's strong

Seedream is ByteDance's image generation and editing family, available through the Zerocoder API as two model ids: seedream-5.0-lite and seedream-5.0-pro. Both models handle text-to-image generation and image editing, and support fixed sizes or aspect ratios so you can target square, landscape, or portrait output depending on where the image will be used.

The lite model is suited for drafts, previews, and high-volume pipelines where speed and cost matter more than fine detail. The pro model is the stronger tier for final assets, product shots, and edits that need to preserve detail across multiple reference images.

What Zerocoder adds

Zerocoder wraps both models behind one API key and one ruble wallet, so you don't juggle separate accounts per model. Top up with a Russian card or a company invoice directly in the cabinet — no foreign card or VPN required.

  • One key for seedream-5.0-lite and seedream-5.0-pro, and every other model on the platform
  • A dedicated ruble wallet, separate from studio credits, with prices visible in GET /v1/models
  • Docs and SDK-compatible request format, so existing HTTP clients work without rewrites
  • A shared cabinet for billing, keys, and usage

How a request and response work

You send a prompt and a model id to POST /v1/images/generations, choosing either a size or an aspect ratio. The response returns a temporary URL to the generated image — download it right away, since the link expires. For edits, POST /v1/images/edits accepts a prompt plus one or more reference images (as URLs or file uploads) and returns an edited result the same way.

Available models and prices

Built from the live GET /v1/models price list: prices include our margin, in rubles and in dollars at the internal rate. Anything missing is temporarily not served by the gateway.

ModelUnit₽$Cost examplesEndpoint
seedream-5.0-literecommendedper image4.8 ₽$0.053
1 generation: 4.8 ₽ · $0.053
10 generations: 48 ₽ · $0.533
/v1/images/generations
seedream-5.0-prorecommendedper image9.6 ₽$0.107
1 generation: 9.6 ₽ · $0.107
10 generations: 96 ₽ · $1.07
/v1/images/generations

Cost calculator

Pick a model and a volume — the calculator uses the same formulas as API billing.

per image4.8 ₽ $0.053
per month · 1048 ₽ $0.533

Prices from GET /v1/models, internal exchange rate. Failed generations are not charged.

First request

One zc-sk-… key, the x-api-key header (or Authorization: Bearer), base URL https://zerocoder.com/api/v1. Samples are generated from the real route contracts.

1

Create a key

Account → API: top up the balance in rubles and create a zc-sk-… key

2

Send a request

Copy the sample below — the model id is already taken from the price list.

3

Check the charge

GET /v1/balance shows the balance; the call price comes back in the response.

model: seedream-5.0-lite
curl https://zerocoder.com/api/v1/images/generations \
  -H "x-api-key: zc-sk-…" -H "content-type: application/json" \
  -d '{"model": "seedream-5.0-lite", "prompt": "Studio photo of a ceramic coffee mug on a walnut table, soft window light", "aspect": "1:1"}'
# → {"created":…,"data":[{"url":"https://…"}]}   (the URL is temporary — download it)
import requests

r = requests.post("https://zerocoder.com/api/v1/images/generations",
    headers={"x-api-key": "zc-sk-…"},
    json={"model": "seedream-5.0-lite", "prompt": "Studio photo of a ceramic coffee mug on a walnut table, soft window light", "aspect": "1:1"})
r.raise_for_status()
print(r.json()["data"][0]["url"])
const r = await fetch("https://zerocoder.com/api/v1/images/generations", {
  method: "POST",
  headers: { "x-api-key": "zc-sk-…", "content-type": "application/json" },
  body: JSON.stringify({ model: "seedream-5.0-lite", prompt: "Studio photo of a ceramic coffee mug on a walnut table, soft window light", aspect: "1:1" }),
});
const { data } = await r.json();
console.log(data[0].url);

Image editing (/images/edits)

# JSON — image(s) by https URL or data URI, up to 4
curl https://zerocoder.com/api/v1/images/edits \
  -H "x-api-key: zc-sk-…" -H "content-type: application/json" \
  -d '{"model": "seedream-5.0-lite", "prompt": "Make it a night scene", "image": "https://example.com/photo.jpg", "aspect": "16:9"}'

# multipart — files from disk (≤ 8 MB each)
curl https://zerocoder.com/api/v1/images/edits \
  -H "x-api-key: zc-sk-…" \
  -F model=seedream-5.0-lite -F prompt="Make it a night scene" -F aspect=16:9 \
  -F "image[]=@photo1.jpg" -F "image[]=@photo2.jpg"

How to connect the Seedream API: first request in 5 minutes

From a key to production — six steps based on the real /api/v1 contracts. Each step links to the relevant docs section.

  1. 1

    Get a key in your account

    Sign up, open the API section of your account, top up the balance in rubles and create a zc-sk-… key. One key unlocks Seedream and every other model in the catalogue.

    Read more →
  2. 2

    Send the first request

    POST /v1/images/generations with model, prompt and aspect or size — the response has data[0].url with the finished Seedream image.

    Read more →
  3. 3

    Save the result and try edits

    The image URL is temporary — download the file to your own storage right away. For edits use /v1/images/edits: up to four source images by https URL, data URI or multipart, up to 8 MB each.

    Read more →
  4. 4

    Handle limits and errors

    30 requests per minute per key: on 429 wait and retry with a growing pause; 402 — top up the balance; 400 — check model against GET /v1/models. Failed generations are not charged, so retrying is safe.

    Read more →
  5. 5

    Watch the budget

    GET /v1/balance returns the balance and 30-day spend; every call's price comes back in the response — write it to your logs and set an alert threshold in your own monitoring.

    Read more →
  6. 6

    Ship to production

    Keep the key in server secrets, never in the frontend. For high Seedream volumes contact us — the limit is raised individually and companies can pay by invoice. Check the observed stability on the status page.

    Read more →

No code

Any tool that can make an HTTP request can call our API: one POST with the x-api-key header.
HTTP Requestn8n

HTTP Request node: POST to the /api/v1 endpoint, x-api-key header and a JSON body built from workflow fields. For video add a Wait node and a second HTTP Request on GET ?id= in a loop until completed.

HTTP → Make a requestMake

HTTP “Make a request” module: POST, Body type JSON, x-api-key header. The response is parsed automatically — the image url or the answer text flows into the next modules.

Webhooks by ZapierZapier

Webhooks by Zapier → Custom Request action: POST, Data — JSON with model and prompt, Headers — x-api-key. Response fields are available to the following Zap steps.

Apps ScriptGoogle Sheets

In Apps Script use UrlFetchApp.fetch with method post, contentType application/json and a payload from the cells: prompts in one column, results written to the next one.

any bot frameworkTelegram bot

A bot on aiogram, grammY or Telegraf calls the same HTTP API: user message → model request → reply in the chat. For video — poll the status and send the file from the finished URL.

OpenAI-compatible base URLPython / Node SDK

For text models the official OpenAI and Anthropic SDKs work with a swapped base URL and our key — your application code stays the same. Images and video are a plain HTTP call from any language.

For business

We'll help bring AI into your business

More than a key: we help wire Seedream and other models into your workflows — from audit to production, with invoice payment.

  • Process auditWe find where AI pays off in your workflows: support, sales, content, documents — and name specific scenarios and models.
  • Integration into CRM, website, Telegram, n8nWired through our API or ready no-code scenarios; one key and a shared balance for every model.
  • Ruble payment by invoiceCompanies get an invoice for bank transfer, accounting documents and a top-up of the API balance.
  • Support and limitsHelp with prompts and architecture, request limits raised individually for your load.

Inputs, limits and refunds

  • Generation: prompt + aspect 1:1 / 16:9 / 9:16 / 4:3 / 3:4 or size 1024x1024 / 1792x1024 / 1024x1792
  • Editing: up to 4 images — https URLs, data URIs or multipart
  • Up to 8 MB per file, 48 MB per request (413 otherwise)
  • The result URL is temporary — save the file right away
  • Provider failure — nothing is charged
  • 30 requests per minute per key (all endpoints combined)

Error responses and refunds

# 401 {"type":"error","error":{"type":"authentication_error","message":"Invalid or revoked API key."}}
# 402 {"type":"error","error":{"type":"billing_error","message":"Not enough API balance: …"}}
# 429 {"type":"error","error":{"type":"rate_limit_error","message":"…"}}   ← 30 requests/min per key
# 400 {"type":"error","error":{"type":"invalid_request_error","message":"Unknown model \"…\". See GET /v1/models."}}
# 413 {"type":"error","error":{"type":"invalid_request_error","message":"…"}}   ← > 8 MB per file / > 48 MB body
# 502 {"type":"error","error":{"type":"api_error","message":"…"}}                ← provider failed → nothing charged

Observed stability of the API and image generation

Numbers come from the public /status summary: the share of successful requests over a period for the whole API and for the category as a whole (the summary has no per-model breakdown), no SLA promises. Failed generations are not charged, so retrying is safe.

Developer APIoperational

—now (2 h window)
65%last 30 days
65%last 90 days

Image generationoperational

—now (2 h window)
91%last 30 days
89%last 90 days

Refunds and charges

  • Provider failure — nothing is charged
  • Oversized file — 413 before any charge
  • The result URL is temporary — save the file right away

Tracking since Aug 6, 2026.

Use cases

1

A marketplace seller auto-generates product mockups in different aspect ratios for listings

2

A content team builds a pipeline that drafts blog cover images with seedream-5.0-lite before final review

3

An indie hacker adds an in-app 'generate an avatar' feature using a reference photo and seedream-5.0-pro

4

A Telegram bot lets users edit uploaded photos by describing changes in plain text

5

An internal design tool batch-generates background variations for a product catalog

6

A startup automates ad creative production, swapping backgrounds while keeping the product shot intact

Prompting tips

  • State the framing directly: close-up, wide shot, or product-on-white — don't leave composition implicit
  • Name the style and material explicitly, e.g. matte ceramic, brushed metal, watercolor paper
  • Describe the light source and mood: soft window light, harsh noon sun, studio softbox
  • Pick aspect ratio for the destination: 16:9 for banners, 9:16 for stories, 1:1 for product cards
  • For edits, say exactly what to change and what to keep, e.g. 'change the background, keep the person unchanged'

Ready-made prompts for Seedream

Copy the prompt and the parameters into the request body — the fields are named exactly as in the /api/v1 contract. Replace the angle-bracket placeholders with your material.

Product photo on a light background

Product photo of a glass bottle of cold-pressed orange juice on a light beige background, soft daylight from the left, gentle shadow, clean catalog composition
aspect: 1:1

Banner with room for a headline

Wide promotional banner for a summer sale: beach towels and sunglasses arranged on warm sand on the right side, empty space on the left for a headline, bright midday light
aspect: 16:9

Add the text in your layout so it is error-free.

Vertical story creative

Vertical lifestyle shot of a young woman holding a takeaway coffee cup on a city street at golden hour, shallow depth of field, warm tones, empty space at the top for a caption
aspect: 9:16

For a strict vertical format use the Pro version.

Interior visualisation

Scandinavian living room with a light oak floor, a soft grey sofa, a large window with morning light and indoor plants, photorealistic architectural visualization
aspect: 4:3

Article illustration

Flat editorial illustration of a small team planning a product launch around a whiteboard, muted pastel palette, simple shapes, no text
aspect: 3:4

Packaging concept

Packaging concept for a premium herbal tea: matte dark green box with gold line-art leaves, studio lighting, three-quarter view, blank front panel for the logo
aspect: 1:1

Who the Seedream API is for

Industries where this kind of generation becomes part of the workflow rather than an experiment.

E-commerceCatalogue photos and lifestyle scenes for product cards — Seedream straight from your admin panel.
Advertising & performanceCreatives in every placement format and dozens of variations for A/B tests.
Media & blogsCovers and illustrations for stories in one consistent visual style.
Design & agenciesConcepts and moodboards for pitches before manual polish.
Interiors & propertyVisualise finishes and atmosphere before renovation or sale.
SaaS & appsSeedream image generation inside your product — one key and a shared balance.

FAQ

How much does one Seedream API image cost in rubles?

Seedream is billed per finished image: Lite and Pro each have their own per-image price, shown in the table above and in GET /v1/models, in rubles and including our margin. The amount is charged when you send the request, and a batch costs exactly the image price times the number of images; the calculator on this page shows the total up front.

How do I send a request to the Seedream API from Python or Node.js?

With a plain HTTP request: POST /v1/images/generations with the x-api-key header and a JSON body of model, prompt and aspect — the response carries data[0].url. The shape is OpenAI-Images-compatible, so the official OpenAI SDK with base_url zerocoder.com/api/v1 works too. Ready Seedream samples for the shell, Python and Node.js are in the “First request” block.

What is the difference between Seedream Lite and Seedream Pro?

Both versions are made by ByteDance and are called the same way — only the model field changes. Pro follows complex multi-part prompts more precisely and keeps fine detail better, and its frame format is set with the aspect parameter; Lite is cheaper per image and suits drafts and bulk variations. The exact Seedream version ids are in the table and in GET /v1/models.

Which aspect ratios and limits does the Seedream API have?

Pass the aspect ratio in aspect — 1:1, 16:9, 9:16, 4:3 or 3:4 — or a size such as 1024x1024, 1792x1024, 1024x1792; the Pro version honours the format. One request returns one Seedream image, n above one is not supported. The key limit is shared — 30 requests per minute; a Pro generation can take a few minutes, so give your client a generous timeout.

Am I charged if Seedream returns no image?

No: if the request ends with an error, the Seedream image price goes back to your API balance, and the error text says so explicitly. You only pay for responses with a finished link in data[0].url. The link is temporary — save the file to your own storage right away, otherwise a repeat request is a new paid generation.

Does the Seedream API accept bank-transfer payments from companies?

Yes. A legal entity requests an invoice in the API account and pays it from the corporate account — the money lands on the API balance and Seedream works with the same key as every other model. Individuals and sole traders top up with a Russian bank card; no BytePlus account or foreign card is needed, and accounting documents are available on request.

Are there free Seedream generations through the API?

No, the API has no free Seedream images: the wallet opens with a minimum first top-up, and every generation is then charged at the list price. To avoid overspending while tuning prompts, refine the wording on Lite and switch to Pro once it is settled — the request format is the same for both versions.

How should I write prompts for Seedream to get the composition I want?

Seedream handles long descriptions well, so list everything in order: subject, setting, camera angle, light, style and where to leave room for a headline or logo. Add the actual lettering in your layout. If the frame drifts, cut the prompt down to the essentials and bring details back one at a time — that shows which one breaks it.

AI API for your product

Ruble billing, no VPN, one key for every model