Dokumentacja API Hop
Generowanie obrazów GPT-Image-2
Generuj obrazy lub edytuj obrazy referencyjne za pomocą gpt-image-2 i odbieraj wyniki w bieżącej odpowiedzi JSON lub połączeniu SSE.
https://api.apihop.ai/openai/v1/images/generationsgpt-image-2 obsługuje generowanie obrazów i edycję obrazów referencyjnych na potrzeby zdjęć produktów, szkiców plakatów, ilustracji, materiałów społecznościowych, grafik wysokiej rozdzielczości, przenoszenia stylu i łączenia wielu referencji.
POST https://api.apihop.ai/openai/v1/images/generationsUwierzytelnianie
Authorization: Bearer YOUR_API_KEY
Content-Type: application/jsonSzybki start
{
"model": "gpt-image-2",
"prompt": "A minimal black wireless earbud product poster on a white background, clean studio lighting, no text",
"n": 1,
"size": "2048x1152",
"resolution": "2k",
"quality": "low"
}Zakres porównania cen
Opublikowane progi obrazów 1K / 2K / 4K API Hop to *ceny sprzedaży API Hop*, a nie oficjalne stałe stawki OpenAI za obraz. Dokumentacja cen OpenAI opisuje opłaty za tokeny obrazów/tekstu i poziomy przetwarzania; rzeczywisty koszt zależy od rozmiaru, jakości, referencji wejściowych i wyniku. Porównanie tych cen wyłącznie dlatego, że obie wspominają 1k lub 2k, nie jest obliczeniem rabatu na porównywalnych warunkach.
Aby uniknąć nieudokumentowanej deklaracji oszczędności, dawne odniesienie zbiorcze dostawców USD per image i oznaczenie rabatu są celowo ukryte dla GPT Image 2. Cena API Hop pozostaje widoczna, a kontrakt rozliczeniowy nie zmienia się. Aby przyszłe porównanie było uzasadnione, zapisz dokładny model, punkt końcowy, jakość obrazu, rozmiar, warunki wejściowe, oficjalny źródłowy adres URL i datę weryfikacji odniesienia. Przed płatnym wywołaniem sprawdź efektywną cenę na swoim koncie.
Treść żądania
modelstringWymaganeWartość domyślna: gpt-image-2Identyfikator modelu obrazowego. Użyj gpt-image-2.
promptstringWymaganePrompt obrazu. Opisz temat, scenę, kompozycję, styl, materiał, oświetlenie, kolory i to, czy ma pojawić się tekst.
nintegerWartość domyślna: 1Liczba obrazów do wygenerowania. Obecny publiczny kontrakt gpt-image-2 obsługuje tylko 1. Inne wartości zwracają 400 przed rezerwacją.
sizestringWartość domyślna: autoProporcje wyjścia lub wymiary w pikselach.
Typowe wartości:
1:14:316:99:161024x10241536x10241024x15362048x20482048x11523840x21602160x3840auto
qualitystringWartość domyślna: autoJakość wyniku. Obsługiwane wartości obejmują low, medium, high i auto.
resolutionstringWartość domyślna: 1kPoziom rozdzielczości wyniku. Obsługiwane wartości to 1k, 2k i 4k.
Można go łączyć z size, na przykład size: "16:9" i resolution: "2k".
image_urlsarray<string>Obrazy referencyjne używane do edycji na podstawie instrukcji lub łączenia wielu obrazów.
- Do 16 obrazów.
- Każdy obraz może mieć do 20 MB, przy łącznym limicie wejścia 256 MB.
- Obsługiwane są publicznie dostępne adresy URL obrazów.
- Obsługiwane są identyfikatory URI danych Base64, takie jak
data:image/...;base64,.... - Adresy URL i identyfikatory URI danych Base64 można mieszać w tej samej tablicy.
output_formatstringWartość domyślna: pngFormat wyjściowy. Obsługiwane wartości obejmują png, jpeg i webp.
streambooleanWartość domyślna: falseCzy zwracać zdarzenia Server-Sent Events.
Obrazy referencyjne i edycja
Edycja obrazów referencyjnych używa tego samego punktu końcowego JSON. Dodaj image_urls i opisz w prompt, co zachować, a co zmienić:
{
"model": "gpt-image-2",
"prompt": "Keep the product unchanged, replace the background with a dark blue studio, and add soft rim lighting",
"image_urls": [
"https://example.com/product.png"
],
"size": "1:1",
"resolution": "2k"
}Wiele referencji może dostarczać temat, kompozycję lub styl wizualny:
{
"model": "gpt-image-2",
"prompt": "Use the product from the first image and the composition from the second image to create a clean ecommerce hero image",
"image_urls": [
"https://example.com/product.png",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
],
"size": "4:3",
"resolution": "2k"
}Granice obecnego publicznego kontraktu:
- Edycja całego obrazu, przenoszenie stylu i łączenie wielu referencji są obsługiwane przez
image_urls. - Nie ma oddzielnej trasy
POST https://api.apihop.ai/openai/v1/images/edits. - Przesyłanie
multipart/form-datanie jest akceptowane. Najpierw przekonwertuj lokalne obrazy na identyfikatory URI danych Base64 lub udostępnij je pod dostępnymi adresami URL. - Uzupełnianie obrazu na podstawie maski nie jest obsługiwane. Wysłanie
mask,mask_urllubmaskUrlzwraca400przed rezerwacją.
Przykłady żądań
Zdjęcie produktu 1:1
{
"model": "gpt-image-2",
"prompt": "A transparent glass cup on a light gray background, commercial product photography, soft shadow, no text",
"n": 1,
"size": "1024x1024",
"resolution": "1k",
"quality": "low",
"output_format": "png"
}Plakat 16:9
{
"model": "gpt-image-2",
"prompt": "A futuristic city night poster with neon lights, wet streets, cinematic composition, no text",
"n": 1,
"size": "2048x1152",
"resolution": "2k",
"quality": "medium",
"output_format": "jpeg"
}Jak zwracane są wyniki
Ten zgodny z OpenAI punkt końcowy nie zwraca najpierw odpowiedzi zgłoszenia zadania z data.jobId do późniejszego odpytywania:
- Przy
stream: falsebieżące żądanie HTTP czeka na zakończenie i zwraca adresy URL obrazów w odpowiedzi JSON. - Przy
stream: truebieżące połączenie SSE pozostaje otwarte doimage_generation.completedi[DONE].
Nie używaj GET https://api.apihop.ai/v1/jobs/{id} do pobierania wyników z tego punktu końcowego. Korzystaj z pobierania zadania asynchronicznego tylko wtedy, gdy asynchroniczny punkt końcowy tworzenia jawnie zwraca jobId.
Odpowiedź bez strumieniowania
Odpowiedź zawiera adresy URL obrazów. usage jest dołączane, gdy trasa dostawcy udostępnia informacje o zużyciu.
{
"created": 1777270000,
"data": [
{
"url": "https://image.example.com/generated/123456789012345678/0.png"
}
],
"usage": {
"input_tokens": 20,
"output_tokens": 1234,
"total_tokens": 1254
}
}Odpowiedź strumieniowa
event: image_generation.completed
data: {"type":"image_generation.completed","data":[{"index":0,"url":"https://image.example.com/generated/123456789012345678/0.png"}],"usage":{"input_tokens":20,"output_tokens":1234,"total_tokens":1254}}
data: [DONE]Zestawienie rozmiarów
| Docelowe proporcje | Zalecane 1K | Zalecane 2K | Zalecane 4K |
|---|---|---|---|
1:1 | 1024x1024 | 2048x2048 | Niezalecane |
3:2 | 1536x1024 | 2048x1360 | Niezalecane |
2:3 | 1024x1536 | 1360x2048 | Niezalecane |
4:3 | 1024x768 | 2048x1536 | Niezalecane |
3:4 | 768x1024 | 1536x2048 | Niezalecane |
16:9 | 1536x864 | 2048x1152 | 3840x2160 |
9:16 | 864x1536 | 1152x2048 | 2160x3840 |
21:9 | 2016x864 | 2688x1152 | 3840x1648 |
9:21 | 864x2016 | 1152x2688 | 1648x3840 |
Odpowiedź błędu
Zobacz kody błędów i diagnozowanie, aby poznać pełny wykaz kodów, różnice protokołów i kroki diagnostyczne.
{
"code": 10000,
"message": "prompt is required",
"type": "api_error"
}Typowe błędy:
400: brak wymaganych parametrów lub nieobsługiwana kombinacja parametrów401: nieudane uwierzytelnienie lub niepoprawny klucz API402: niewystarczające saldo404: model nie istnieje lub nie jest włączony429: przekroczony limit częstotliwości5xx: usługa tymczasowo niedostępna lub nieudane generowanie obrazu