API Hop

Dokumentacja

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.

POSThttps://api.apihop.ai/openai/v1/images/generations

gpt-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.

text
POST https://api.apihop.ai/openai/v1/images/generations

Uwierzytelnianie

http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Szybki start

json
{
  "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-2

Identyfikator modelu obrazowego. Użyj gpt-image-2.

promptstringWymagane

Prompt obrazu. Opisz temat, scenę, kompozycję, styl, materiał, oświetlenie, kolory i to, czy ma pojawić się tekst.

nintegerWartość domyślna: 1

Liczba obrazów do wygenerowania. Obecny publiczny kontrakt gpt-image-2 obsługuje tylko 1. Inne wartości zwracają 400 przed rezerwacją.

sizestringWartość domyślna: auto

Proporcje wyjścia lub wymiary w pikselach.

Typowe wartości:

  • 1:1
  • 4:3
  • 16:9
  • 9:16
  • 1024x1024
  • 1536x1024
  • 1024x1536
  • 2048x2048
  • 2048x1152
  • 3840x2160
  • 2160x3840
  • auto
qualitystringWartość domyślna: auto

Jakość wyniku. Obsługiwane wartości obejmują low, medium, high i auto.

resolutionstringWartość domyślna: 1k

Poziom 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: png

Format wyjściowy. Obsługiwane wartości obejmują png, jpeg i webp.

streambooleanWartość domyślna: false

Czy 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ć:

json
{
  "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:

json
{
  "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-data nie 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_url lub maskUrl zwraca 400 przed rezerwacją.

Przykłady żądań

Zdjęcie produktu 1:1

json
{
  "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

json
{
  "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: false bieżące żądanie HTTP czeka na zakończenie i zwraca adresy URL obrazów w odpowiedzi JSON.
  • Przy stream: true bieżące połączenie SSE pozostaje otwarte do image_generation.completed i [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.

json
{
  "created": 1777270000,
  "data": [
    {
      "url": "https://image.example.com/generated/123456789012345678/0.png"
    }
  ],
  "usage": {
    "input_tokens": 20,
    "output_tokens": 1234,
    "total_tokens": 1254
  }
}

Odpowiedź strumieniowa

text
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 proporcjeZalecane 1KZalecane 2KZalecane 4K
1:11024x10242048x2048Niezalecane
3:21536x10242048x1360Niezalecane
2:31024x15361360x2048Niezalecane
4:31024x7682048x1536Niezalecane
3:4768x10241536x2048Niezalecane
16:91536x8642048x11523840x2160
9:16864x15361152x20482160x3840
21:92016x8642688x11523840x1648
9:21864x20161152x26881648x3840

Odpowiedź błędu

Zobacz kody błędów i diagnozowanie, aby poznać pełny wykaz kodów, różnice protokołów i kroki diagnostyczne.

json
{
  "code": 10000,
  "message": "prompt is required",
  "type": "api_error"
}

Typowe błędy:

  • 400: brak wymaganych parametrów lub nieobsługiwana kombinacja parametrów
  • 401: nieudane uwierzytelnienie lub niepoprawny klucz API
  • 402: niewystarczające saldo
  • 404: model nie istnieje lub nie jest włączony
  • 429: przekroczony limit częstotliwości
  • 5xx: usługa tymczasowo niedostępna lub nieudane generowanie obrazu