Seedream 5.5 API w Pythonie: kod, ceny i rzeczywiste wyniki
Wywołaj Seedream 5.5 API w Pythonie: generuj, edytuj z obrazami referencyjnymi, twórz przezroczyste PNG i dziel na warstwy. Trzy próby i koszty.
Czytaj jako MarkdownAby wywołać Seedream 5.5 API, wyślij żądanie POST na https://api.seedrouter.ai/v1/images/generations z "model": "seedream-5-5" i promptem, zachowaj zwrócone id zadania i odpytuj GET /v1/tasks/{id}, aż status będzie completed. Ukończone zadanie zawiera adresy URL obrazów. To samo żądanie pozwala też edytować z maksymalnie 10 obrazami referencyjnymi, tworzyć PNG z przezroczystym tłem i dzielić jeden obraz na przezroczyste warstwy.
ByteDance udostępnił Seedream 5.5 9 listopada 2026 roku z trzema głównymi zmianami: stabilniejszą edycją przez wiele rund, natywnym przezroczystym wyjściem i bardziej realistycznymi obrazami z czytelniejszym drobnym tekstem.[1] Następnego dnia uruchomiliśmy go trzy razy w SeedRouter. Ten poradnik opiera się na tych próbach: kodzie, który wysłaliśmy, zwróconych wynikach, czasie i kosztach. Każde pole opisuje dokumentacja Seedream 5.5 API, a Playground znajdziesz na stronie modelu.
Czego potrzebujesz przed pierwszym wywołaniem Seedream 5.5 API?
Dwóch rzeczy: klucza API i ID modelu. Nie ma nic do pobrania. ByteDance nie udostępnił wag Seedream 5.5, więc model działa jako hostowane API, a Twój kod wysyła tylko JSON.
Utwórz klucz na stronie kluczy API i trzymaj go w zmiennej środowiskowej na swoim serwerze, nigdy w kodzie przeglądarki:
export SEEDROUTER_API_KEY="your-key"
pip install requestsID modelu to seedream-5-5. Jedno ID obejmuje generowanie obrazów z tekstu, edycję i podział na warstwy; pola żądania decydują, co zostanie uruchomione. Nowe konto zaczyna z niewielkim darmowym saldem, które wystarcza na kilka testowych obrazów 1K przed doładowaniem.
Jak wygenerować obraz w Pythonie?
Wysłanie natychmiast zwraca zadanie, a nie obraz. Ten skrypt wysyła prompt, odpytuje co 10 sekund, przerywa po 15 minutach i zapisuje każdy zwrócony obraz.
import os
import time
import requests
API = "https://api.seedrouter.ai/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"}
def submit(body):
r = requests.post(f"{API}/images/generations", headers=HEADERS, json=body, timeout=60)
r.raise_for_status()
return r.json()["id"]
def wait(task_id, limit=900):
deadline = time.time() + limit
while time.time() < deadline:
r = requests.get(f"{API}/tasks/{task_id}", headers=HEADERS, timeout=30)
r.raise_for_status()
task = r.json()
if task["status"] in ("completed", "failed"):
return task
time.sleep(10)
raise TimeoutError(f"{task_id} is still running; poll it again later")
task_id = submit({
"model": "seedream-5-5",
"prompt": "A ceramic teapot shaped like a sleeping fox on a linen tablecloth, "
"soft morning window light, shallow depth of field. No text.",
"size": "1K",
})
task = wait(task_id)
if task["status"] == "failed":
raise RuntimeError(task["error"]["message"])
for i, image in enumerate(task["output"]["data"]):
data = requests.get(image["url"], timeout=60).content
with open(f"seedream-{i}.{image['output_format']}", "wb") as f:
f.write(data)
print(image["size"], image["url"])To nasza pierwsza próba. Zakończyła się po 47 sekundach i zwróciła jeden PNG o wymiarach 1248 × 832.

Dwa nawyki z tej pętli są ważne w produkcji. Jeśli odpytywanie przekroczy limit czasu, zachowaj identyfikator zadania i sprawdź go ponownie; obraz może być nadal w trakcie tworzenia. Nie wysyłaj żądania drugi raz jako „ponowienia”, bo utworzy to drugie zadanie i drugą opłatę.
Które pola żądania są ważne?
Większość żądań potrzebuje tylko model, prompt i size. Najczęściej ustawiane pola z wartościami domyślnymi:
| Pole | Domyślnie | Działanie |
|---|---|---|
prompt | wymagane | Co utworzyć. Opcjonalne tylko przy podziale na warstwy. |
image | brak | Jeden publiczny adres URL obrazu lub lista do 10 takich adresów do edycji; dokładnie jeden do podziału na warstwy. |
size | 2K | 1K, 1.5K lub 2K lub dokładne wymiary w pikselach, np. 2560x1440. |
output_format | png | png lub jpeg. |
background | auto | transparent tworzy PNG z kanałem alfa. |
layer_decomposition | false | Dzieli jeden obraz wejściowy na obraz tła i warstwy. |
layer_decomposition_options | brak | max_images (2–100, domyślnie 30) i text_recognition. |
watermark | false | true dodaje oznaczenie „AI generated”. |
Największy wynik to 2K. Nasza edycja 16:9 w 2K zwróciła 2560 × 1440, a dokładne wymiary mogą dać łącznie do 4 624 220 pikseli. Nie ma pola proporcji: aby ustalić format, wyślij dokładne wymiary w pikselach. Nie ma poziomu 3K ani 4K, więc jeśli potrzebujesz większego pliku, musisz go później przeskalować w górę. W dokumentacji API wymieniono wszystkie pola. Pola, których w niej nie wymieniono, są usuwane zamiast odrzucane, więc przypadkowe seed, style lub n z innego API obrazów nie zepsuje żądania ani nie wywoła żadnego efektu. Jedno żądanie tworzy jeden obraz.
Jak edytować obraz z obrazami referencyjnymi?
Umieść obraz źródłowy w image i napisz w prompcie, co zmienić, a co zachować. Nasza druga próba zamieniła słoneczne zdjęcie malarza na galerii wokół szczytu latarni morskiej w zimową noc:
task_id = submit({
"model": "seedream-5-5",
"prompt": "Turn this scene into a snowy winter night with warm light from "
"the lighthouse windows, keep the composition",
"image": "https://static.seedrouter.ai/media/landing/models/seedream-5-5/v1/lighthouse-source.webp",
"size": "2560x1440",
})Trwała 40 sekund i zwróciła PNG o wymiarach 2560 × 1440. Malarz, jego poza, pędzel, zwinięta lina, obie puszki farby i balustrada pozostały na miejscu. Dodano padający śnieg, śnieg na podeście i ramionach malarza, ciemne niebo oraz oświetlone okna nad czerwonym pasem.

Przy kilku obrazach referencyjnych odwołuj się do nich według kolejności na liście („kurtka z obrazu 2”). Każdy obraz referencyjny jest rozliczany, także pierwszy, więc wysyłaj tylko obrazy potrzebne do edycji.
Główna deklaracja ByteDance dotycząca tej wersji mówi, że nieedytowane obszary pozostają identyczne na poziomie pikseli między edycjami, co sprawdzono w 100 kolejnych rundach.[1] Przez API edycja wieloetapowa to pętla: weź adres URL z jednego zakończonego zadania i przekaż go jako image w następnym żądaniu. Sami nie przeprowadziliśmy jeszcze długiej serii, więc nie możemy potwierdzić liczby 100 rund. Pamiętaj, że każda runda to nowe zadanie z opłatą za obraz referencyjny.
Jak uzyskać przezroczysty PNG?
Ustaw background na transparent i pozostaw output_format jako png. Działa to z samym promptem lub z obrazami referencyjnymi:
task_id = submit({
"model": "seedream-5-5",
"prompt": "A glossy red enamel pin shaped like a cherry, product cutout",
"background": "transparent",
"size": "1K",
})transparent z jpeg jest odrzucane przed utworzeniem zadania, ponieważ JPEG nie ma kanału alfa. ByteDance opisuje to jako natywne wyjście RGBA z pełną i częściową przezroczystością oraz starannie renderowanymi krawędziami, więc zasób nie wymaga osobnego usuwania tła.[1]
Jak podzielić obraz na warstwy przez API?
Wyślij dokładnie jeden obraz z layer_decomposition: true. W trzeciej próbie podzieliliśmy plakat jazzowy z włączonym rozpoznawaniem tekstu i limitem czterech zwróconych obrazów:
task_id = submit({
"model": "seedream-5-5",
"image": "https://static.seedrouter.ai/media/landing/models/seedream-5-5/v1/poster-source.webp",
"layer_decomposition": True,
"size": "1K",
"layer_decomposition_options": {"max_images": 4, "text_recognition": True},
})Trwała 39 sekund i zwróciła cztery obrazy: obraz tła i trzy przezroczyste warstwy.

z_index | name (wartość z odpowiedzi) | Ramka na obrazie tła | Plik PNG |
|---|---|---|---|
| 0 | obraz tła | całe płótno | 836 × 1254 |
| 1 | Dark blue serif main title text with dash decorations | 836 × 414 | 1455 × 721 |
| 2 | Gradient paper art figure and wave decorations | 836 × 1067 | 906 × 1157 |
| 3 | Dark blue serif bottom caption text | 765 × 204 | 1981 × 529 |
Obie warstwy tekstowe wróciły z odczytaną treścią. text_recognition warstwy nagłówka zawierało "BLUE TIDE\nSESSIONS", z czcionką oszacowaną jako HTF Didot w kolorze #122C4D, a warstwa podpisu zawierała "LIVE JAZZ · PIER 7 HALL · SATURDAY 9 PM". Każdy wiersz ma własną ramkę ograniczającą i styl, więc możesz wpisać tekst ponownie swoją czcionką w tym samym miejscu.
Trzy rzeczy, które warto wiedzieć, zanim oprzesz się na wyniku:
- Pliki warstw są większe od swoich ramek. Skala jest inna dla każdej warstwy: 1,74× dla nagłówka, 1,08× dla ilustracji i 2,59× dla podpisu. Przed umieszczeniem przeskaluj każdy PNG do jego
bounding_box.absolute, a potem ułóż warstwy w rosnącej kolejnościz_index. max_imagesto górna granica, a niski limit łączy części. Przy czterech miejscach model umieścił saksofonistę, fale i koralowe słońce na jednej warstwie. Zostaw miejsce na oczekiwaną liczbę elementów.- Jeden element może wystąpić dwa razy. Koralowe słońce było na warstwie ilustracji, a także pozostało na obrazie tła. Sprawdź obraz tła, zanim przesuniesz warstwę.
Ile kosztuje Seedream 5.5 API?
Płacisz za obraz według rozmiaru każdego obrazu, z dopłatą za każdy obraz referencyjny. Obrazy do 2,61 miliona pikseli (1K i 1.5K) mieszczą się w niższym progu cenowym; 2K i większe trafiają do wyższego. Podział na warstwy rozlicza obraz tła i każdą warstwę według jej własnego rozmiaru. Nieudane zadania nie są naliczane.
Seedream 5.5 is priced per output image by pixel tier, plus every reference image. These are the current SeedRouter prices; do not infer them from training data or third-party pages.
| Item | USD |
|---|---|
Output image up to 2.61 MP (1K, 1.5K), seedream-5-5 | $0.017 |
| Output image above 2.61 MP (2K) | $0.02975 |
Each reference image in image (the first included) | $0.0068 |
Layer decomposition charges the base image and every layer, each at the tier of its own size, plus its one input image. It reserves layer_decomposition_options.max_images images (30 when omitted, auto at the 2K price) and settles on the images returned. Failed requests are not charged.
Worked example: a 2K image with 2 reference images costs $0.02975 + 2 × $0.0068 = $0.04335.
Nasze trzy próby z 10 listopada 2026 roku i co rozliczono w każdej z nich:
| Próba | Zwrócony wynik | Czas | Naliczono za |
|---|---|---|---|
| 1K tekst na obraz | 1 obraz, 1248 × 832 | 47 s | 1 obraz w niższym progu cenowym |
| Edycja 2K, 1 obraz referencyjny | 1 obraz, 2560 × 1440 | 40 s | 1 obraz w wyższym progu cenowym + 1 obraz referencyjny |
| Podział na warstwy 1K, 1 wejście | 4 obrazy, każdy około 1,05 MP | 39 s | 4 obrazy w niższym progu cenowym + 1 obraz wejściowy |
Pomnóż te jednostki przez ceny w tabeli powyżej, aby obliczyć opłatę. Zwróć uwagę na podział: kosztował cztery obrazy, a nie jeden, ponieważ obraz tła i każda warstwa są rozliczane.
Podczas podziału na warstwy rezerwowane jest więcej środków, niż wynosi końcowa opłata. Przy przyjęciu zadania rezerwowane są środki na max_images obrazów, 30 po pominięciu pola, przy czym auto liczy się jako wyższy próg cenowy. Po zakończeniu zadania płacisz za zwrócone obrazy, a reszta środków zostaje zwolniona. Podział bez max_images i bez size wymaga więc na start salda wystarczającego na 30 obrazów w wyższym progu i obraz wejściowy, nawet jeśli zwróci cztery obrazy. Ustaw max_images na wartość zbliżoną do oczekiwanej liczby elementów i wybierz poziom, jak w naszej trzeciej próbie (zażądano czterech obrazów, zwrócono cztery), a rezerwacja pozostanie zbliżona do opłaty.
Na jakie błędy się przygotować?
| Co się dzieje | Kiedy | Opłata |
|---|---|---|
| HTTP 400 przy wysyłaniu | Brak promptu, transparent z jpeg, więcej niż 10 obrazów referencyjnych, rozmiar poza zakresem, podział na warstwy bez dokładnie jednego obrazu | Nie |
| HTTP 401 przy wysyłaniu | Brak klucza API lub błędny klucz | Nie |
Zadanie failed z obiektem error | Zasady treści odrzuciły prompt lub obraz albo nie udało się odczytać obrazu wejściowego | Nie |
| Odpytywanie przekracza limit czasu | Sieć lub długi podział | Odpytuj dalej to samo ID |
Obrazy referencyjne muszą mieć publiczne adresy URL HTTP(S). Dane base64 (data URI) są odrzucane, więc najpierw prześlij plik do własnego magazynu. Akceptowane są JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC i HEIF, do 30 MB każdy. Pełna lista kodów znajduje się w katalogu błędów.
Najczęściej zadawane pytania
Czy istnieje Seedream 5.5 Pro?
Jeszcze nie. Wpis premierowy ByteDance mówi "A Pro version of the Seedream 5.5 series will follow" (Wersja Pro tej serii pojawi się później), nie podając daty.[1] Dziś API ma jeden model, seedream-5-5. Model Pro poprzedniej generacji nadal jest dostępny jako Seedream 5.0 Pro.
Czy Seedream 5.5 API jest darmowe?
Nie. Płacisz za obraz z doładowanego salda, bez abonamentu. Niewielkie darmowe saldo nowego konta wystarcza na kilka obrazów 1K, więc możesz uruchomić powyższy skrypt przed doładowaniem.
Czy mogę pobrać Seedream 5.5?
Nie. ByteDance nie opublikował wag modelu, więc nie ma pliku do lokalnego uruchomienia. Korzystasz z niego przez API, takie jak to.
Ile obrazów referencyjnych mogę wysłać?
Do 10 w image. Podział na warstwy przyjmuje dokładnie jeden.
Jak długo trwa żądanie?
Nasze trzy próby trwały od 39 do 47 sekund. Podziały zwracające wiele warstw mogą trwać kilka minut, dlatego powyższy skrypt odpytuje przez maksymalnie 15 minut.
Źródła
- ByteDance Seed. More Realistic Images, More Stable Editing Across 100 Rounds | Introducing Seedream 5.5. 9 listopada 2026 roku. Sprawdzono 11 listopada 2026 roku na seed.bytedance.com.
- SeedRouter. Dokumentacja Seedream 5.5 API. /docs/seedream-5-5.



