Bild-API: Bilder erzeugen und bearbeiten
/ API-Doku← API-SchnellstartAls Markdown anzeigen
OpenCheese stellt die Images-API von OpenAI für jedes Bildmodell bereit, das für dein Konto freigeschaltet ist, mit demselben API-Schlüssel wie für Text- und Codemodelle.
Bildmodelle und ihre Parameter finden
GET /v1/images/capabilities listet jedes Bildmodell auf, das dein Schlüssel nutzen kann, dazu die
Parameter, die jedes Modell akzeptiert – etwa Größe, Seitenverhältnis, Bildgröße, Qualität,
Hintergrund und Ausgabeformat – und wie viele Bilder eine Anfrage höchstens zurückgeben darf.
Anfragen werden anhand derselben Liste geprüft; sende also nur die Parameter, die ein Modell nennt.
curl https://api.opencheese.dev/v1/images/capabilities \
-H "Authorization: Bearer $OPENCHEESE_API_KEY"
Eine gekürzte Antwort:
{
"models": [
{
"publicModelId": "IMAGE_MODEL_ID",
"displayName": "Example Image Model",
"supportsEdit": true,
"maxImagesPerRequest": 1,
"params": [
{ "kind": "enum", "id": "aspect_ratio", "values": ["1:1", "16:9", "9:16"], "initial": "16:9" },
{ "kind": "enum", "id": "quality", "values": ["auto", "low", "medium", "high"], "initial": "auto" }
]
}
]
}
Jeder Eintrag in params ist ein Parameter, den du unter seiner id senden kannst, zusammen mit den
Werten, die er akzeptiert. initial ist ein sinnvoller Startwert; default gilt, wenn du den
Parameter weglässt. maxImagesPerRequest ist das größte n, und supportsEdit gibt an, ob das
Modell /v1/images/edits unterstützt.
Ein Bild erzeugen
curl https://api.opencheese.dev/v1/images/generations \
-H "Authorization: Bearer $OPENCHEESE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "IMAGE_MODEL_ID", "prompt": "A wedge of cheese on a circuit board"}'
model und prompt sind Pflichtfelder. size, quality, background, output_format,
aspect_ratio, image_size und n werden akzeptiert, wenn das Modell sie aufführt.
Die Antwort enthält jedes Bild als base64 in data[].b64_json; gehostete Bild-URLs werden nicht
ausgegeben, daher akzeptiert response_format nur b64_json. opencheese_cost_usd im selben Body
gibt an, was dich die Anfrage gekostet hat, in Credits (USD). So speicherst du das erste Bild:
curl ... | jq -r '.data[0].b64_json' | base64 --decode > image.png
Wähle die Dateiendung passend zum Format, das du in output_format angefordert hast.
Mit dem Python-SDK von OpenAI:
import base64
from openai import OpenAI
client = OpenAI(base_url="https://api.opencheese.dev/v1", api_key="YOUR_OPENCHEESE_API_KEY")
result = client.images.generate(model="IMAGE_MODEL_ID", prompt="A wedge of cheese on a circuit board")
with open("image.png", "wb") as file:
file.write(base64.b64decode(result.data[0].b64_json))
Bilder bearbeiten
POST /v1/images/edits erwartet multipart/form-data: das Ausgangsbild in image (oder mehrere in
image[]), dazu model und prompt als Formularfelder.
curl https://api.opencheese.dev/v1/images/edits \
-H "Authorization: Bearer $OPENCHEESE_API_KEY" \
-F "model=IMAGE_MODEL_ID" \
-F "prompt=Turn the scene into night" \
-F "image=@input.png"
- Uploads müssen PNG, JPEG oder WebP sein: bis zu 5 Bilder mit je bis zu 10 MB.
- Andere Dateifelder wie
maskwerden abgelehnt.
Einschränkungen
- Bildantworten werden nicht gestreamt:
streamundpartial_imageswerden abgelehnt. - Manche Modelle geben ein Bild pro Anfrage zurück; wie viele
nerlaubt, zeigt/v1/images/capabilities. moderationlässt sich nicht ändern; es gilt der Standardwert des Modells.- Ein Prompt, den die eigene Inhaltsrichtlinie des Modells ablehnt, wird mit
moderation_blockedabgewiesen und nicht berechnet. Einige wenige Modelle prüfen stattdessen das fertige Bild und berechnen auch eines, das sie ablehnen: Diese Antwort lautetmoderation_blocked_billed.
Bildmodelle in Chat-Apps
Chat-Apps, die alle Modelle in einer gemeinsamen Auswahl anzeigen, können ein Bildmodell im normalen
Chat nutzen: Bei /v1/chat/completions und /v1/responses wird die letzte Nachricht des Nutzers zum
Prompt, und das Bild kommt in der Antwort zurück. Wie diese Antwort aufgebaut ist, steht unter
Chat Completions.
Preise und Verbrauch
Bildmodelle werden pro Bild abgerechnet, je nach Auflösung und Qualität. Die Preise für dein Konto findest du nach der Anmeldung auf der Dashboard-Seite Preise, und jedes erzeugte Bild erscheint mit seinen Kosten unter Transaktionen.