Design
Sprache

Bildgenerierung (OpenAI Images API)

Synchrone Bildgenerierung im Format der OpenAI Images API: Parameter, eine Wartezeit von bis zu 300 Sekunden, Abrechnung nur für ein fertiggestelltes Bild, Einrichtung von Cherry Studio. Die Bearbeitung erfolgt über die asynchrone Schnittstelle /api/media/generate.

POST /v1/images/generations generiert Bilder im Format der OpenAI Images API: Sie senden eine Anfrage und erhalten das Bild in derselben Antwort zurück. Es handelt sich um einen Adapter über dieselbe Warteschlange wie POST /api/media/generate: Modelle, Preis, Kontostandsprüfung, Anbieter-Fallback und Abrechnung werden gemeinsam genutzt, daher kostet dieselbe Generierung an beiden Adressen gleich viel.

POSThttps://getvibeapi.com/v1/images/generations
curl https://getvibeapi.com/v1/images/generations \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"nano-banana","prompt":"a red bicycle on a bridge","n":1,"size":"1024x1024"}'

Antwort (HTTP 200):

{
  "created": 1792706400,
  "data": [{ "url": "https://getvibeapi.com/media/r/…/0.png" }]
}

Übergeben Sie den Schlüssel als Authorization: Bearer sk-pv-… oder x-api-key. Das offizielle OpenAI SDK funktioniert unverändert:

from openai import OpenAI

client = OpenAI(base_url="https://getvibeapi.com/v1", api_key="sk-pv-...", timeout=600)
image = client.images.generate(model="nano-banana", prompt="a red bicycle on a bridge", size="1024x1024")
print(image.data[0].url)

Body-Parameter

ParameterTypBeschreibung
modelreq.stringEine Bildmodell-ID aus /api/media-catalog (kind: "image"), z. B. nano-banana, gpt-image-2, flux-2. Eine anbieterpräfixierte ID (google/nano-banana) und eine angeheftete Variante (gpt-image-2:network) werden ebenfalls akzeptiert. Video- und Audiomodelle werden hier mit 400 abgelehnt.
promptreq.stringBeschreibung des Bildes.
nnumberNur 1: Jede Generierung ist ein separater Auftrag mit eigenem Preis. Für mehrere Bilder senden Sie mehrere Anfragen.
sizestringWird als Seitenverhältnis berücksichtigt: 1024x1024 → 1:1, 1792x1024 → 16:9, 1024x1792 → 9:16, 1536x1024 → 3:2, 1024x1536 → 2:3; andere Werte werden exakt reduziert (1920x1080 → 16:9). Ein vom Modell nicht angebotenes Verhältnis wird zusammen mit der Liste der unterstützten Größen abgelehnt — es erfolgt keine Ersetzung durch die nächstgelegene Übereinstimmung. "auto" oder ein fehlendes Feld bedeutet den Modellstandard.
qualitystringNur für Modelle mit einem quality-Parameter im Katalog; ein nicht unterstützter Wert wird abgelehnt. "auto" lässt ihn weg.
response_format"url" | "b64_json"url standardmäßig. b64_json gibt die Datei im Antworttext zurück (bis zu 20 MB).
userstringAkzeptiert und ignoriert.

Unbekannte Felder sowie background, style, output_format, output_compression, moderation, stream und partial_images werden anhand ihres Namens mit 400 abgelehnt, anstatt stillschweigend entfernt zu werden – andernfalls würden Sie für ein Bild bezahlen, das Sie nicht angefordert haben. Modelle, die ein Quellbild benötigen (Bearbeitung, Hochskalierung, Inpainting), funktionieren unter dieser Adresse nicht, da es hier keine Möglichkeit gibt, ein Bild zu übergeben; verwenden Sie POST /api/media/generate.

Warten und Timeout

Die Anfrage bleibt geöffnet, bis der Auftrag abgeschlossen ist, maximal 300 Sekunden. Die mediane Dauer beträgt je nach Modell 15 bis 85 Sekunden; einzelne Generierungen bei den langsamsten Modellen dauern 3–4 Minuten. Setzen Sie das Client-Timeout auf mindestens 300 Sekunden (der Standard des OpenAI SDK beträgt 600).

  • Jede Antwort, einschließlich Fehlern nach der Erstellung des Auftrags, enthält den Header x-pv-media-job-id mit der Auftrags-ID.
  • Wenn der Auftrag nicht innerhalb von 300 Sekunden abgeschlossen wurde, lautet die Antwort 504 mit cause: image_generation_timeout und der Auftrags-ID in der Nachricht. Die Generierung läuft weiter: Rufen Sie sie unter GET /api/media/jobs/{id} ab.
  • Wenn die Verbindung abbricht (App-Timeout, Netzwerk), wird der Auftrag dennoch bis zum Abschluss ausgeführt. GET /v1/images/generations?limit=20 (bis zu 100) listet die letzten Bilder dieses Schlüssels mit ihrem Status, den Links und dem abgerechneten Betrag cost_rub auf.

Abrechnung

Bei der Übermittlung wird nichts abgerechnet. Nur eine erfolgreich abgeschlossene Generierung wird abgerechnet, zum selben Preis wie in /api/media-catalog und im POST /api/media/price-Angebot. Eine fehlgeschlagene Generierung gibt 502 mit der Meldung "Nothing was charged" zurück und kostet nichts. Der abgerechnete Betrag wird im Header x-pv-cost-rub zurückgegeben. Wenn das Guthaben die Generierung nicht abdecken kann, lautet die Antwort 402, bevor ein Auftrag gestartet wird.

Die Links in data[].url verweisen auf unsere Domain und sind 7 Tage nach Abschluss der Generierung gültig; anschließend antworten sie mit 410 media_result_expired. Speichern Sie die Dateien auf Ihrer Seite.

Fehler

ParameterTypBeschreibung
400invalid_request_errorInvalid body: unknown_parameter, unsupported_parameter, unsupported_n, unsupported_size, unsupported_quality, unsupported_model_kind. Fix the request.
401 / 403authentication_error / permission_errorUngültiger Schlüssel oder die aufrufende IP-Adresse steht nicht auf der Positivliste des Schlüssels.
402insufficient_quotaNicht genügend Guthaben für diese Generierung. Es wurde kein Auftrag erstellt.
404not_found_errormodel_not_found — kein solches Bildmodell. Siehe /api/media-catalog.
429rate_limit_errorMedien-Ratenbegrenzung; wiederholen Sie den Versuch nach Retry-After.
502upstream_errorDie Generierung ist fehlgeschlagen. Es wurde nichts abgerechnet; Sie können den Versuch wiederholen.
503upstream_errorDas Modell ist derzeit bei keinem Anbieter verfügbar. Es wurde kein Auftrag erstellt; versuchen Sie es später erneut oder wählen Sie ein anderes Modell.
504upstream_errorimage_generation_timeout — der Auftrag läuft noch; rufen Sie ihn über die ID aus x-pv-media-job-id ab.

Desktop-Apps (Cherry Studio und andere)

Jede App, die Bilder über einen OpenAI-kompatiblen Anbieter generieren kann, funktioniert. Als Beispiel verwenden wir Cherry Studio:

  1. Fügen Sie einen Anbieter vom Typ OpenAI mit der API-Adresse https://getvibeapi.com hinzu (die App hängt /v1 selbst an) sowie Ihren sk-pv-…-Schlüssel.
  2. Fügen Sie das Modell manuell hinzu, indem Sie eine ID aus https://getvibeapi.com/api/media-catalog verwenden (nur Einträge mit kind: "image"), z. B. nano-banana oder gpt-image-2. Die Modellliste der App zeigt Textmodelle; Medienmodelle sind darin nicht enthalten.
  3. Generieren Sie das Bild über die Mal- bzw. Bildgenerierungsfunktion der App, nicht über den gewöhnlichen Chat. Der Chat sendet die Anfrage an /v1/chat/completions, wo Bildmodelle nicht funktionieren.
  4. Wenn die App Ihnen erlaubt, ein Anfrage-Timeout festzulegen, setzen Sie es auf mindestens 300 Sekunden. Ein Bild, bei dem die App aufgegeben hat, wird unter GET /v1/images/generations aufgeführt. Ein erneuter Versuch über die App erstellt eine neue Generierung, die separat abgerechnet wird.

Der Modus, mit dem solche Apps ein hochgeladenes Bild bearbeiten, heißt /v1/images/edits und wird ebenfalls unterstützt (siehe unten).

Editing: /v1/images/edits

POST /v1/images/edits akzeptiert die OpenAI-SDK-Anfrage (multipart/form-data: die Datei in image oder mehrere Dateien in image[] mit prompt, model, size, quality und response_format) oder JSON mit images: [{"image_url": "…"}]. Die Verarbeitung entspricht der oben beschriebenen Generierung: dieselbe Antwort, dieselbe Wartezeit, dasselbe x-pv-media-job-id und derselbe Preis wie bei POST /api/media/generate mit einem Quellbild; eine fehlgeschlagene Bearbeitung wird nicht berechnet. Der Bearbeitungsmodus des Modells wird aus dem Katalog ausgewählt. Ein mask wird mit 400 unsupported_parameter abgelehnt, und ein Modell, das kein Quellbild akzeptiert, mit model_cannot_edit. Für eine Bearbeitung mit Maske verwenden Sie POST /api/media/generate und fragen Sie GET /api/media/jobs/{id} ab — siehe den Leitfaden zur asynchronen Generierung. Videos werden nicht synchron generiert: Auch /v1/video/generations und /v1/videos antworten mit 410 (Details).

Nano Banana Pro-ID

Verwenden Sie im Katalog und in neuem Code nano-banana-pro. Für die Migration vorhandener asynchroner Clients wird der Wert gemini-3-pro-image weiterhin ausschließlich im Feld model der Anfrage /api/media/generate akzeptiert und auf dasselbe öffentliche Modell aufgelöst. Er wird nicht in der Discovery oder bei der Preisgestaltung veröffentlicht.

Bildgenerierung mit GetVibe API — OpenAI-kompatible Images API | GetVibe API