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
Seedream API (ByteDance) with ruble billing: Lite and Pro versions through one Zerocoder key. Per-image pricing, code samples, limits, refunds.
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.
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.
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.
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.
| Model | Unit | ₽ | $ | Cost examples | Endpoint |
|---|---|---|---|---|---|
seedream-5.0-literecommended | per image | 4.8 ₽ | $0.053 | 1 generation: 4.8 ₽ · $0.053 10 generations: 48 ₽ · $0.533 | /v1/images/generations |
seedream-5.0-prorecommended | per image | 9.6 ₽ | $0.107 | 1 generation: 9.6 ₽ · $0.107 10 generations: 96 ₽ · $1.07 | /v1/images/generations |
Pick a model and a volume — the calculator uses the same formulas as API billing.
Prices from GET /v1/models, internal exchange rate. Failed generations are not charged.
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.
Account → API: top up the balance in rubles and create a zc-sk-… key
Copy the sample below — the model id is already taken from the price list.
GET /v1/balance shows the balance; the call price comes back in the response.
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);# 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"
From a key to production — six steps based on the real /api/v1 contracts. Each step links to the relevant docs section.
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 →POST /v1/images/generations with model, prompt and aspect or size — the response has data[0].url with the finished Seedream image.
Read more →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 →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 →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 →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 →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 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 Zapier → Custom Request action: POST, Data — JSON with model and prompt, Headers — x-api-key. Response fields are available to the following Zap steps.
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.
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.
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.

More than a key: we help wire Seedream and other models into your workflows — from audit to production, with invoice payment.
# 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
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.
Tracking since Aug 6, 2026.
A marketplace seller auto-generates product mockups in different aspect ratios for listings
A content team builds a pipeline that drafts blog cover images with seedream-5.0-lite before final review
An indie hacker adds an in-app 'generate an avatar' feature using a reference photo and seedream-5.0-pro
A Telegram bot lets users edit uploaded photos by describing changes in plain text
An internal design tool batch-generates background variations for a product catalog
A startup automates ad creative production, swapping backgrounds while keeping the product shot intact

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 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:1Wide 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:9Add the text in your layout so it is error-free.
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:16For a strict vertical format use the Pro version.
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:3Flat editorial illustration of a small team planning a product launch around a whiteboard, muted pastel palette, simple shapes, no text
aspect: 3:4Packaging 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
Industries where this kind of generation becomes part of the workflow rather than an experiment.
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.
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.
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.
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.
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.
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.
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.
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.