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.
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
| Parameter | Typ | Beschreibung |
|---|---|---|
modelreq. | string | Eine 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. | string | Beschreibung des Bildes. |
n | number | Nur 1: Jede Generierung ist ein separater Auftrag mit eigenem Preis. Für mehrere Bilder senden Sie mehrere Anfragen. |
size | string | Wird 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. |
quality | string | Nur 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). |
user | string | Akzeptiert 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-idmit der Auftrags-ID. - Wenn der Auftrag nicht innerhalb von 300 Sekunden abgeschlossen wurde, lautet die Antwort
504mitcause: image_generation_timeoutund der Auftrags-ID in der Nachricht. Die Generierung läuft weiter: Rufen Sie sie unterGET /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 Betragcost_rubauf.
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.
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
| Parameter | Typ | Beschreibung |
|---|---|---|
400 | invalid_request_error | Invalid body: unknown_parameter, unsupported_parameter, unsupported_n, unsupported_size, unsupported_quality, unsupported_model_kind. Fix the request. |
401 / 403 | authentication_error / permission_error | Ungültiger Schlüssel oder die aufrufende IP-Adresse steht nicht auf der Positivliste des Schlüssels. |
402 | insufficient_quota | Nicht genügend Guthaben für diese Generierung. Es wurde kein Auftrag erstellt. |
404 | not_found_error | model_not_found — kein solches Bildmodell. Siehe /api/media-catalog. |
429 | rate_limit_error | Medien-Ratenbegrenzung; wiederholen Sie den Versuch nach Retry-After. |
502 | upstream_error | Die Generierung ist fehlgeschlagen. Es wurde nichts abgerechnet; Sie können den Versuch wiederholen. |
503 | upstream_error | Das 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. |
504 | upstream_error | image_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:
- Fügen Sie einen Anbieter vom Typ OpenAI mit der API-Adresse
https://getvibeapi.comhinzu (die App hängt/v1selbst an) sowie Ihrensk-pv-…-Schlüssel. - Fügen Sie das Modell manuell hinzu, indem Sie eine ID aus
https://getvibeapi.com/api/media-catalogverwenden (nur Einträge mitkind: "image"), z. B.nano-bananaodergpt-image-2. Die Modellliste der App zeigt Textmodelle; Medienmodelle sind darin nicht enthalten. - 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. - 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/generationsaufgefü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.