Claude Opus 5.5 jest już dostępny w SeedRouter
SeedRouter Docs

GPT Image 2.5

Generuj i edytuj obrazy z GPT Image 2.5 Flare lub Sunburst przez jeden asynchroniczny punkt końcowy obrazów, z sześcioma poziomami jakości aż do max.

View Markdown

GPT Image 2.5 przyjmuje prompt tekstowy i opcjonalnie obrazy referencyjne. Wyślij raz, zachowaj zwrócony identyfikator zadania i odpytaj to zadanie, aby odebrać gotowe obrazy. Jest dostępny jako dwa modele, które przyjmują te same parametry: Flare do codziennej pracy i Sunburst, gdy najważniejsza jest precyzja edycji.

ID modeli

ID modeluWariantKanał
gpt-image-2.5-flareFlare: domyślny wybór w większości zastosowańStandard
gpt-image-2.5-sunburstSunburst: największe możliwości, ściślejsza kontrola przy edycjach, wolniejszyStandard
gpt-image-2.5-flare-officialFlareOfficial
gpt-image-2.5-sunburst-officialSunburstOfficial

Wszystkie cztery ID przyjmują te same parametry. Kanały różnią się rozliczaniem; aktualne ceny znajdziesz na stronie modelu.

Krótki przykład

curl https://api.seedrouter.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.5-flare",
    "prompt": "An amber glass bottle on a cream background, studio lighting",
    "size": "1024x1024",
    "quality": "low"
  }'

Punkt końcowy

POST https://api.seedrouter.ai/v1/images/generations
NagłówekWartość
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Ten sam punkt końcowy obsługuje generowanie, edycję z referencją i edycję z maską. Odpowiedź zawiera identyfikator zadania, a nie gotowy obraz. Klucze API trzymaj w kodzie po stronie serwera.

Parametry

NazwaTypWymaganyDomyślnieUwagi
modelstringTak—Jeden z czterech powyższych ID modeli.
promptstringTak—Niepusty; do 32 000 znaków.
imagesobject[]Nie—Od 1 do 16 obiektów w postaci {"image_url":"https://..."}; przekazanie images włącza edycję.
maskobjectNie—{"image_url":"https://..."}; wymaga images.
sizestringNieautoauto albo WIDTHxHEIGHT, zgodnie z regułami poniżej.
qualityenumNieautoauto, low, medium, high, xhigh, max.
backgroundenumNieautoauto, opaque, transparent.
output_formatenumNiepngpng, jpeg.
output_compressionintegerNie100 dla JPEGOd 0 do 100; przesyłaj tylko z jpeg. Zero jest wartością poprawną.
nintegerNie1Od 1 do 10 obrazów.
moderationenumNieautoauto, low.
userstringNie—Opcjonalny identyfikator użytkownika końcowego Twojej aplikacji. Unikaj danych osobowych.

Reguły rozmiaru

Typowe wartości to 1024x1024, 1536x1024 i 1024x1536. Własne wymiary muszą spełniać wszystkie reguły:

  • Szerokość i wysokość są wielokrotnościami 16.
  • Żaden bok nie przekracza 3840 pikseli.
  • Proporcje mieszczą się w przedziale od 1:3 do 3:1.
  • Łączna powierzchnia mieści się w przedziale od 655 360 do 8 294 400 pikseli włącznie.

auto pozostawia wymiary wyjściowe modelowi. Nie przesyłaj proporcji takich jak 16:9 w polu size.

Playground udostępnia elementy sterujące Auto, Proporcje i Własne. Tryb proporcji łączy proporcje obrazu z gotowym budżetem pikseli 1K, 2K lub 4K, a następnie przesyła wyłącznie wyliczony size. To ustawienia interfejsu, a nie osobne parametry API: nie przesyłaj resolution ani aspect_ratio. Na przykład 16:9 + 4K przesyła size: "3840x2160"; 9:16 + 4K przesyła "2160x3840"; 1:1 + 2K przesyła "2048x2048". Zaokrąglanie i limit boku mogą zmniejszyć liczbę pikseli wybranego poziomu. Dokładne wymiary są pokazywane przed wysłaniem.

OpenAI określa rozdzielczości powyżej 2560×1440 jako eksperymentalne. W powyższych granicach są przyjmowane; wyższa rozdzielczość nie gwarantuje jednak lepszych detali.

Poziomy jakości

xhigh i max są nowością w GPT Image 2.5; GPT Image 2 kończy się na high. Wyższe poziomy renderują się dłużej, a w ID rozliczanych za tokeny zużywają więcej tokenów wyjściowych. W pomiarze przy 1024x1024 jeden render zaraportował 196, 439, 1 756, 3 122 i 7 024 tokeny wyjściowe dla low, medium, high, xhigh i max. To zaobserwowane próbki, a nie gwarancje: zużycie zależy też od rozmiaru i treści.

Do szkiców używaj low i porównaj wyniki, zanim wybierzesz wyższy poziom. auto pozostawia wybór modelowi; nie gwarantuje konkretnego poziomu ani kosztu.

Przezroczyste tło

Przezroczystość jest obsługiwana w GPT Image 2.5. Aby uzyskać przezroczyste tło, ustaw background: "transparent" i użyj PNG. JPEG nie obsługuje przezroczystości. Kompresja dotyczy wyłącznie JPEG.

user jest dostępny dla integracji przez API, ale w Playground nie jest pokazywany ani automatycznie wypełniany.

Opcjonalne ustawienia skalarne (n, size, quality, background, output_format, output_compression, moderation) przyjmują null jako pominięcie. Nieznane pola są odrzucane. input_fidelity nie jest parametrem GPT Image 2.5. style i response_format należą do innych modeli obrazów i nie są tutaj przyjmowane.

Tryby

Nie ma osobnego parametru trybu ani osobnego punktu końcowego edycji do wyboru.

OperacjaParametry
Tekst na obrazprompt
Edycja z referencjąprompt + images
Edycja z maskąprompt + images + mask

Edycja obrazów referencyjnych

curl https://api.seedrouter.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.5-flare",
    "prompt": "Make the bottle blue. Preserve the composition and lighting.",
    "images": [{"image_url": "https://example.com/reference.png"}],
    "mask": {"image_url": "https://example.com/mask.png"},
    "output_format": "jpeg",
    "output_compression": 90
  }'

Zastąp oba przykładowe adresy URL własnymi, dostępnymi obrazami. Pomiń mask, jeśli chcesz edycję z referencją bez wskazanego obszaru.

Dane wejściowe multimediów

To API przyjmuje wyłącznie odwołania przez adres URL. Identyfikatory OpenAI Files, adresy data URL w base64 oraz przesyłanie multipart nie są przyjmowane. Playground najpierw wysyła wybrane pliki do magazynu, a dopiero potem przesyła ich adresy URL.

Obrazy referencyjne muszą być publicznymi adresami HTTP(S) wskazującymi pliki PNG, JPEG lub WebP mniejsze niż 50 MB każdy. Maska musi być plikiem PNG mniejszym niż 4 MB, o tych samych wymiarach co pierwszy obraz referencyjny; jej przezroczysty obszar wskazuje, co ma zostać zmienione. Maska ukierunkowuje model i nie gwarantuje granic dokładnych co do piksela. Przy wielu referencjach maska dotyczy pierwszego obrazu. Multimedia podane adresem URL są sprawdzane podczas przetwarzania; nieprawidłowe lub niedostępne pliki mogą skutkować nieudanym zadaniem.

Playground wysyła wybrane pliki i przesyła ich adresy URL. Żądania API używają obiektów URL w JSON: nie przesyłaj bajtów pliku, base64, adresów data:, adresów blob: ani danych formularza multipart.

Czynniki wpływające na koszt

Aktualne stawki znajdziesz w sekcji cen modelu. ID Standard naliczają stałą cenę za każdy dostarczony obraz, niezależnie od jakości, rozmiaru i promptu. W ID Official koszt końcowy zależy od zużycia na wejściu i wyjściu: wpływ mają jakość, wymiary wyniku, obrazy referencyjne, długość promptu i liczba obrazów.

Szacunek w Playground opiera się na zmierzonej próbce i aktualnych stawkach; nie jest gwarantowaną wyceną. Ostateczne opłaty zobaczysz w historii zużycia swojego konta. Nieudane zadania nie są naliczane.

Schemat odpowiedzi

Wysłanie zwraca odwołanie do zadania:

{
  "id": "task_...",
  "model": "gpt-image-2.5-flare",
  "status": "processing",
  "created_at": 1789970508
}

Odpytywanie zadania

curl https://api.seedrouter.ai/v1/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

Odpytuj w umiarkowanym tempie, na przykład co trzy sekundy, aż status przyjmie wartość completed lub failed. Przekroczenie limitu czasu sieci podczas odpytywania nie oznacza, że generowanie się nie powiodło: zachowaj identyfikator zadania i wznów sprawdzanie. Nie twórz kolejnego zadania, aby sprawdzić postęp.

Pełny przykład odpytywania

Uruchom to po powyższym przykładzie wysyłania w Pythonie. Używa zwróconego task_id i czeka do dziesięciu minut. Osiągnięcie tego lokalnego terminu przerywa jedynie odpytywanie; zachowaj identyfikator i wznów odpytywanie tego samego zadania.

import time

print(f"Task ID: {task_id}")
deadline = time.monotonic() + 600
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "completed":
        for image in task["output"]["data"]:
            print(image["url"])
        break
    if task["status"] == "failed":
        raise RuntimeError(task["error"]["message"])
    time.sleep(3)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

Zakończone zadanie

Zakończone zadanie zwraca hostowane adresy URL obrazów oraz informacje o zużyciu:

{
  "id": "task_...",
  "model": "gpt-image-2.5-flare",
  "status": "completed",
  "created_at": 1789970508,
  "finished_at": 1789970538,
  "output": {
    "created": 1789970532,
    "data": [{"url": "https://static.seedrouter.ai/media/tasks/task_example/0.png"}],
    "usage": {
      "input_tokens": 29,
      "output_tokens": 196,
      "total_tokens": 225
    }
  }
}
PoleZnaczenie
idZachowaj ten identyfikator na potrzeby kolejnych zapytań.
statusprocessing, completed lub failed.
created_at, finished_atZnaczniki czasu Unix w sekundach; w trakcie przetwarzania czas zakończenia jest pusty lub równy zero.
output.data[].urlAdresy URL wygenerowanych obrazów, dostępne po zakończeniu.
output.sizeRzeczywiste wymiary wyjściowe, jeśli są raportowane.
output.qualityRzeczywisty poziom jakości, jeśli jest raportowany.
output.backgroundRzeczywiste tło, jeśli jest raportowane.
output.output_formatRzeczywisty format obrazu, jeśli jest raportowany.
output.usageRaportowane zużycie tokenów, jeśli jest dostępne. Obiekty szczegółowe mogą zawierać liczbę tokenów tekstu i obrazu.
errorUstrukturyzowany błąd nieudanego zadania.

To API dostarcza wyniki asynchronicznie przez zadania. Nie zastępuje synchronicznego SDK Images; stream i partial_images nie są obsługiwane.

Błędy

Żądania odrzucone przed utworzeniem zadania zwracają błąd HTTP wraz z obiektem error. Zadanie, które zawiodło po przyjęciu, przy odpytaniu zwraca HTTP 200 z status: "failed" i obiektem error.

Kody, statusy HTTP i wskazówki dotyczące ponawiania znajdziesz we wspólnym katalogu błędów. Wszystkie API modeli używają tej samej struktury błędu.

{
  "id": "task_...",
  "status": "failed",
  "error": {
    "code": 60002,
    "message": "Generation could not be completed. Please try again."
  }
}

Jeśli limit czasu został przekroczony przy samym wysyłaniu, przed ponownym wysłaniem sprawdź historię zadań: pierwsze żądanie mogło już zostać przyjęte.

Wskazówki

  • W prompcie opisz materiały, kompozycję i oświetlenie.
  • Przy edycji wskaż zarówno zmianę, jak i to, co ma pozostać bez zmian.
  • Użyj maski, gdy zmienić ma się tylko wybrany obszar.
  • Zapisz zwrócone obrazy we własnym magazynie, jeśli potrzebujesz trwałej kopii.

Powiązane