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.
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 modelu | Wariant | Kanał |
|---|---|---|
gpt-image-2.5-flare | Flare: domyślny wybór w większości zastosowań | Standard |
gpt-image-2.5-sunburst | Sunburst: największe możliwości, ściślejsza kontrola przy edycjach, wolniejszy | Standard |
gpt-image-2.5-flare-official | Flare | Official |
gpt-image-2.5-sunburst-official | Sunburst | Official |
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łówek | Wartość |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/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
| Nazwa | Typ | Wymagany | Domyślnie | Uwagi |
|---|---|---|---|---|
model | string | Tak | — | Jeden z czterech powyższych ID modeli. |
prompt | string | Tak | — | Niepusty; do 32 000 znaków. |
images | object[] | Nie | — | Od 1 do 16 obiektów w postaci {"image_url":"https://..."}; przekazanie images włącza edycję. |
mask | object | Nie | — | {"image_url":"https://..."}; wymaga images. |
size | string | Nie | auto | auto albo WIDTHxHEIGHT, zgodnie z regułami poniżej. |
quality | enum | Nie | auto | auto, low, medium, high, xhigh, max. |
background | enum | Nie | auto | auto, opaque, transparent. |
output_format | enum | Nie | png | png, jpeg. |
output_compression | integer | Nie | 100 dla JPEG | Od 0 do 100; przesyłaj tylko z jpeg. Zero jest wartością poprawną. |
n | integer | Nie | 1 | Od 1 do 10 obrazów. |
moderation | enum | Nie | auto | auto, low. |
user | string | Nie | — | 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.
| Operacja | Parametry |
|---|---|
| Tekst na obraz | prompt |
| 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
}
}
}| Pole | Znaczenie |
|---|---|
id | Zachowaj ten identyfikator na potrzeby kolejnych zapytań. |
status | processing, completed lub failed. |
created_at, finished_at | Znaczniki czasu Unix w sekundach; w trakcie przetwarzania czas zakończenia jest pusty lub równy zero. |
output.data[].url | Adresy URL wygenerowanych obrazów, dostępne po zakończeniu. |
output.size | Rzeczywiste wymiary wyjściowe, jeśli są raportowane. |
output.quality | Rzeczywisty poziom jakości, jeśli jest raportowany. |
output.background | Rzeczywiste tło, jeśli jest raportowane. |
output.output_format | Rzeczywisty format obrazu, jeśli jest raportowany. |
output.usage | Raportowane zużycie tokenów, jeśli jest dostępne. Obiekty szczegółowe mogą zawierać liczbę tokenów tekstu i obrazu. |
error | Ustrukturyzowany 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.
