Zum Hauptinhalt springen

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.

bash
curl https://api.opencheese.dev/v1/images/capabilities \
  -H "Authorization: Bearer $OPENCHEESE_API_KEY"

Eine gekürzte Antwort:

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

bash
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:

bash
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:

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

bash
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 mask werden abgelehnt.

Einschränkungen

  • Bildantworten werden nicht gestreamt: stream und partial_images werden abgelehnt.
  • Manche Modelle geben ein Bild pro Anfrage zurück; wie viele n erlaubt, zeigt /v1/images/capabilities.
  • moderation lässt sich nicht ändern; es gilt der Standardwert des Modells.
  • Ein Prompt, den die eigene Inhaltsrichtlinie des Modells ablehnt, wird mit moderation_blocked abgewiesen und nicht berechnet. Einige wenige Modelle prüfen stattdessen das fertige Bild und berechnen auch eines, das sie ablehnen: Diese Antwort lautet moderation_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.

Der Käse hat Löcher. Deine Infrastruktur sollte keine haben.