Bilder

Bild erstellen

Erstellt ein Bild basierend auf einem Prompt

POST
/v1/images/generations

Übersicht

Verwenden Sie GET /v1/models?recommended_for=image, um die aktuellen Bildmodelle abzurufen, und senden Sie dann das ausgewählte model explizit mit.

gpt-image-2 ist ein GPT-Bildmodell mit Token-basierter Abrechnung. TokenLab folgt der offiziellen Aufschlüsselung von OpenAI für Text-Input, Bild-Input, zwischengespeicherte (cached) Input-Token und Bild-Output-Token; es wird nicht als Modell mit festem Preis pro Bild abgerechnet.

Für die Bildgenerierung mit gpt-image-2 sind die unterstützten öffentlichen Parameter prompt, n, size, quality, response_format, async, background, output_format, output_compression oder compression, moderation und user. background akzeptiert auto oder opaque; transparent wird nicht unterstützt. Lassen Sie size oder quality weg, damit TokenLab auto verwendet; benutzerdefinierte size-Werte müssen dem unten dokumentierten flexiblen WIDTHxHEIGHT-Vertrag entsprechen.

input_fidelity ist kein Teil der aktuell von TokenLab für gpt-image-2 unterstützten Felder; lassen Sie es weg, da die Anfrage sonst mit 400 unsupported_parameter fehlschlägt.

Hinweise zum Modellverhalten

Google Gemini-Bildmodelle teilen sich nicht denselben Selektor-Vertrag:

  • gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image, nano-banana-2.1 und nano-banana-pro unterstützen aspect_ratio sowie resolution (1k, 2k, 4k) für ihre öffentlichen Text-zu-Bild-, Bild-zu-Bild- und Bildbearbeitungsoperationen.
  • nano-banana-2 unterstützt aspect_ratio und resolution (1k, 2k, 4k) sowohl für Text-zu-Bild- als auch für Bild-zu-Bild-Generierung.
  • gemini-3.1-flash-lite-image und nano-banana-2-lite unterstützen Text-zu-Bild, Bild-zu-Bild und Bildbearbeitung nur bei 1k-Auflösung.
  • nano-banana unterstützt aspect_ratio, bietet jedoch keine öffentliche resolution-Auswahl.
  • Für Bild-zu-Bild mit gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3.1-flash-lite-image oder gemini-3-pro-image verwenden Sie diesen Endpunkt mit operation: "image-to-image" und Referenzbildern. Senden Sie Bildbearbeitungsanfragen für diese Modelle an /v1/images/edits.
  • Für Nano Banana Referenzbild-Anfragen verwenden Sie nano-banana-2, nano-banana-2.1, nano-banana-2-lite oder nano-banana-pro an diesem Endpunkt (/v1/images/generations) mit operation: "image-to-image" und image_urls. Bildbearbeitungsanfragen für nano-banana-2, nano-banana-2.1, nano-banana-2-lite und nano-banana-pro verwenden ebenfalls diesen Endpunkt mit operation: "image-edit". Senden Sie keine Nano Banana Referenzbild-Anfragen an /v1/images/edits.
  • Referenzbilder an diesem Endpunkt können als JSON image_url / image_urls oder als Multipart-image-Datei bereitgestellt werden. images[] und file_id werden an /v1/images/generations nicht akzeptiert; erstellen Sie /v1/files-Referenzen nur für /v1/images/edits-Modelle, die images[].file_id dokumentieren.

Bevorzugen Sie bei Google-Bildfamilien aspect_ratio und senden Sie resolution nur, wenn das Modell dies explizit unterstützt.

xAI Grok Imagine-Bildmodelle (grok-imagine-image, grok-imagine-image-2.0 und das ältere grok-imagine-image-pro) unterstützen aspect_ratio sowie resolution (1k, 2k). grok-imagine-image-pro wird als Kompatibilitäts-ID für grok-imagine-image-2.0 beibehalten.

Anfragetext

Synchroner Request-Timeout: Einige Bildanfragen geben das fertige Bild direkt zurück und warten, bis die Generierung abgeschlossen ist. Anfragen mit hoher Auflösung oder hoher Qualität können fast eine Minute oder länger dauern. Setzen Sie daher Ihren HTTP-Client-Timeout auf mindestens 120s. Wenn die Antwort status: "pending", task_id oder poll_url enthält, folgen Sie stattdessen der zurückgegebenen poll_url.

modelstringerforderlich

Zu verwendendes Modell (zum Beispiel gpt-image-2, flux-pro-1.1 oder nano-banana-pro). Fragen Sie GET /v1/models?recommended_for=image für die aktuell empfohlene Liste ab.

promptstringerforderlich

Textbeschreibung des gewünschten Bildes.

image_urlstring

Öffentliche HTTPS-Referenzbild-URL für die Bild-zu-Bild-Generierung. Setzen Sie für Nano Banana Referenzbild-Anfragen operation auf image-to-image; nano-banana-pro kann resolution enthalten.

image_urlsstring[]

Öffentliche HTTPS-Referenzbild-URLs. Verwenden Sie dies für ein oder mehrere Referenzbilder in JSON-Anfragen. file_id und images[] werden an diesem Endpunkt nicht unterstützt.

reference_image_urlsstring[]

Zusätzliche Referenzbild-URLs für Modelle, die zwischen primären Inputs und Referenzen unterscheiden.

imagefile

Multipart-Referenzbilddatei für die Bild-zu-Bild-Generierung. Verwenden Sie dies, wenn das Quellbild privat oder Header-geschützt ist. Dies unterscheidet sich von einer /v1/files file_id, die an diesem Endpunkt nicht akzeptiert wird.

nintegerStandard: 1

Anzahl der zu generierenden Bilder (1-10, modellabhängig).

sizestring

Bildgröße. Verwenden Sie dies für Bildfamilien im OpenAI-Stil und andere Modelle, die exakte Pixelgrößen akzeptieren.

Für gpt-image-2 akzeptiert size auto oder WIDTHxHEIGHT. Benutzerdefinierte Dimensionen müssen beide Vielfache von 16 sein, die längste Kante darf maximal 3840px betragen, das Verhältnis von lang zu kurz darf maximal 3:1 sein und die Gesamtpixelzahl muss zwischen 655.360 und 8.294.400 liegen. aspect_ratio und resolution sind kein Teil der aktuellen TokenLab-Modelldetails für gpt-image-2.

Für Google-Bildmodelle mit Auflösungsstufen (gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image, gemini-3.1-flash-lite-image, nano-banana-2, nano-banana-2.1 und nano-banana-pro) akzeptiert size eine Ausgabegröße aus der Größentabelle des Modells, wie 1376x768 (16:9 bei 1K), oder eine Auflösungsstufe: 1K, 2K oder 4K. TokenLab sendet eine Stufe als resolution, sodass die Anfrage und ihr Preis identisch mit der Verwendung von resolution sind. Eine Stufe, die das Modell nicht unterstützt (zum Beispiel 2K bei gemini-3.1-flash-lite-image), oder eine Stufe, die sich von resolution unterscheidet, gibt 400 mit dem Code invalid_image_size_contract und den allowed_resolutions des Modells zurück. Für diese Modelle ist die empfohlene Form aspect_ratio mit resolution.

aspect_ratiostring

Modellabhängiger Seitenverhältnis-Selektor.

Gängige Werte für die Google-Bildfamilie sind 1:1, 16:9, 9:16, 3:2 und 2:3.

resolutionstring

Modellabhängige Ausgabeauflösung. gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image, nano-banana-2, nano-banana-2.1 und nano-banana-pro unterstützen 1k, 2k und 4k; Grok Imagine-Bildmodelle unterstützen 1k und 2k. Lassen Sie dieses Feld weg, es sei denn, das ausgewählte Modell und die Operation unterstützen es explizit.

qualitystring

Bildqualität. GPT-Bildmodelle wie gpt-image-2 verwenden auto, low, medium oder high. Andere Modelle verwenden möglicherweise andere Werte; prüfen Sie die Modelldetails, bevor Sie einen Wert senden, der vom Standard abweicht.

response_formatstring

Wie die Bilder zurückgegeben werden: url oder b64_json.

  • Weggelassen: Wenn das Modell Bild-Bytes zurückgibt, befindet sich jedes Bild in data[].b64_json und auch in data[].url, wenn TokenLab es gespeichert hat. Wenn das Modell einen Link zurückgibt, befindet sich jedes Bild in data[].url.
  • url: Jedes Bild befindet sich nur in data[].url.
  • b64_json: Jedes Bild befindet sich nur in data[].b64_json als Base64-Daten.

Links sind TokenLab-Medien-Ergebnis-URLs. Sie bleiben 30 Tage lang gültig. Siehe Datenaufbewahrung.

asyncbooleanStandard: false

Setzen Sie dies auf true bei gpt-image-2 oder offiziellen FLUX/BFL-Bildmodellen, um zuerst eine Aufgabe (Task) zu erstellen. Abgeschlossene asynchrone Bildaufgaben geben URLs zurück, unabhängig vom angeforderten response_format; verwenden Sie synchrone Anfragen, wenn Sie b64_json benötigen.

stylestring

Optionaler Stil-Selektor. Senden Sie diesen nur, wenn das ausgewählte Modell ihn explizit dokumentiert; lassen Sie ihn für gpt-image-2 weg, es sei denn, die Modellmetadaten geben etwas anderes an.

userstring

Ein eindeutiger Identifikator für den Endbenutzer.

Antwort

Inline-Antwort

createdinteger

Unix-Zeitstempel der Erstellung.

dataarray

Array der generierten Bilder.

Jedes Objekt enthält:

  • url (string): TokenLab-Medien-Ergebnis-URL des Bildes, gültig für 30 Tage. Nicht vorhanden, wenn response_format b64_json ist. Wenn response_format weggelassen wird, fehlt es, wenn TokenLab das Bild nicht speichern konnte.
  • b64_json (string): Base64-Bilddaten. Vorhanden, wenn response_format b64_json ist oder wenn es weggelassen wurde und das Modell Bild-Bytes zurückgibt.
  • revised_prompt (string): Optionale Prompt-Überarbeitung, wenn das ausgewählte Modell eine solche zurückgibt.

Asynchrone Aufgabenantwort

Setzen Sie async: true bei gpt-image-2 oder offiziellen FLUX/BFL-Bildmodellen, um eine Aufgabe zu erstellen, anstatt auf das endgültige Bild in der Erstellungsanfrage zu warten. Die Antwort enthält status: "pending", task_id und poll_url. Pollen Sie /v1/tasks/{task_id}, bis die Aufgabe completed oder failed erreicht.

Asynchrone Bildaufgaben geben nur endgültige Bild-URLs zurück. Wenn Sie rohe b64_json-Bilddaten benötigen, verwenden Sie eine synchrone Anfrage.

Die Abrechnung kann den geschätzten Betrag reservieren, wenn die Aufgabe erstellt wird. Abgeschlossene Aufgaben werden nach tatsächlicher Nutzung abgerechnet, fehlgeschlagene oder zeitlich abgelaufene Aufgaben werden freigegeben oder erstattet.

createdinteger

Unix-Zeitstempel der Erstellung.

task_idstring

Eindeutiger Aufgaben-Identifikator für das Polling.

statusstring

Anfangsstatus: pending.

poll_urlstring

Relative URL zum Abrufen der Ergebnisse, zum Beispiel /v1/tasks/{id}.

dataarray

Leer, während die Aufgabe aussteht. Abgeschlossene Bildaufgaben geben generierte Bild-URLs in data[].url zurück.

Wenn Sie status: "pending" erhalten, verwenden Sie poll_url oder GET /v1/tasks/{task_id}, um das Ergebnis abzurufen.

Anfrage

cURL
curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3-pro-image",
    "prompt": "A cinematic portrait of a white cat sitting on a rainy windowsill",
    "aspect_ratio": "16:9",
    "resolution": "2k"
  }'
Python
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.tokenlab.sh/v1"
)

response = client.images.generate(
    model="gemini-3-pro-image",
    prompt="A cinematic portrait of a white cat sitting on a rainy windowsill",
    extra_body={"aspect_ratio": "16:9", "resolution": "2k"}
)

print(response.data[0].url)
JavaScript
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'sk-your-api-key',
  baseURL: 'https://api.tokenlab.sh/v1'
});

const response = await client.images.generate({
  model: 'gemini-3-pro-image',
  prompt: 'A cinematic portrait of a white cat sitting on a rainy windowsill',
  aspect_ratio: '16:9',
  resolution: '2k'
});

console.log(response.data[0].url);
PHP
<?php
$ch = curl_init('https://api.tokenlab.sh/v1/images/generations');

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer sk-your-api-key'
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'model' => 'gemini-3-pro-image',
        'prompt' => 'A cinematic portrait of a white cat sitting on a rainy windowsill',
        'aspect_ratio' => '16:9',
        'resolution' => '2k'
    ])
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo $data['data'][0]['url'];

Beispiel für eine Bildfamilie nur mit Seitenverhältnis: Senden Sie für nano-banana aspect_ratio, lassen Sie aber resolution weg:

{
  "model": "nano-banana",
  "prompt": "A clean editorial product shot of a citrus soda can",
  "aspect_ratio": "16:9"
}

Beispiel für Nano Banana Pro Referenzbild: Senden Sie die Anfrage an /v1/images/generations, nicht an /v1/images/edits. resolution ist optional und kann auf 1k, 2k oder 4k gesetzt werden:

{
  "model": "nano-banana-pro",
  "prompt": "Create a clean cinematic character image based on the reference images",
  "operation": "image-to-image",
  "image_urls": ["https://example.com/reference-1.png"],
  "aspect_ratio": "1:1",
  "resolution": "2k"
}

Beispiel für direkten Multipart-Upload für private oder lokale Quellbilder. Übergeben Sie keine file_id an /v1/images/generations:

curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
  -H "Authorization: Bearer sk-your-api-key" \
  -F "model=nano-banana-pro" \
  -F "prompt=Create a clean cinematic character image based on this reference" \
  -F "operation=image-to-image" \
  -F "image=@reference.png" \
  -F "aspect_ratio=1:1" \
  -F "resolution=2k"

Antwort

{
  "created": 1706000000,
  "data": [
    {
      "url": "https://...",
      "revised_prompt": "A fluffy white cat with bright eyes sitting peacefully on a wooden windowsill, watching raindrops stream down the glass window..."
    }
  ]
}

Ein Modell auswählen

Fragen Sie GET /v1/models?recommended_for=image ab oder nutzen Sie die Modellseite für aktuelle Verfügbarkeit, Fähigkeiten und Preise.

Hardcodieren Sie ein Modell nicht als immer synchron oder immer asynchron. Wenn die Erstellungsantwort status: "pending" zurückgibt, folgen Sie der poll_url und pollen Sie bis zum Abschluss.

Umgang mit aufgabenbasierten Antworten

Prüfen Sie bei Bildmodellen immer, ob die Antwort status: "pending" / status: "processing" enthält:

import requests
import time

def generate_image(prompt, model="gpt-image-2"):
    # Bildanfrage erstellen
    response = requests.post(
        "https://api.tokenlab.sh/v1/images/generations",
        headers={"Authorization": "Bearer sk-your-api-key"},
        json={"model": model, "prompt": prompt, "async": True},
        timeout=120
    )
    response.raise_for_status()
    data = response.json()

    # Prüfen, ob aufgabenbasiert
    if data.get("status") in ("pending", "processing"):
        task_id = data["task_id"]
        poll_url = data.get("poll_url")
        print(f"Image task started: {task_id}")

        # Auf Ergebnis pollen
        while True:
            status_resp = requests.get(
                f"https://api.tokenlab.sh{poll_url}" if poll_url else f"https://api.tokenlab.sh/v1/tasks/{task_id}",
                headers={"Authorization": "Bearer sk-your-api-key"},
                timeout=30
            )
            status_resp.raise_for_status()
            status_data = status_resp.json()

            if status_data["status"] == "completed":
                return status_data["data"][0]["url"]
            elif status_data["status"] == "failed":
                raise Exception(status_data.get("error", "Generation failed"))

            time.sleep(3)
    else:
        # Inline-Antwort
        return data["data"][0]["url"]

# Verwendung
url = generate_image("a beautiful sunset over mountains", model="gpt-image-2")
print(f"Generated image: {url}")

Hy Image 3.5 Preview erstellt 1024-Pixel-Quadratbilder aus Text und bearbeitet Referenzbilder mithilfe schriftlicher Anweisungen. Es ist nützlich für das Entwerfen von Visuals und das Verfeinern einer Komposition.

{
  "model": "hy-image-v3.5-preview",
  "prompt": "A yellow lemon on a white table",
  "size": "1024x1024",
  "n": 1,
  "response_format": "url"
}

Autorisierung

BearerAuth
AuthorizationBearer <token>

API-Key-Authentifizierung. Erstellen oder verwalten Sie API-Keys unter Dashboard > API > API Keys.

Ort: header

Header

X-TokenLab-Delivery-Policy?string

Zustellungsrichtlinie pro Anfrage. Überschreibt die API-Key- und Workspace-Standardeinstellungen. Versucht automatisch zuerst TokenLab Verified und kann vor der Ausgabe, der Annahme der Anfrage oder der Erstellung persistenter Ressourcen einmalig auf Official umstellen.

Zulässige Werte

  • "auto"
  • "verified"
  • "official"

Anfragekörper

Antwort

application/json

application/json

application/json

application/json

application/json

application/json

application/json