Bilder

Bild erstellen

Erstellt ein Bild anhand eines Prompts

POST
/v1/images/generations

Übersicht

Für Coding-Agenten zuerst die aktuelle empfohlene Bild-Shortlist mit GET /v1/models?recommended_for=image ermitteln und dann das ausgewählte model explizit an diesen Endpunkt senden.

gpt-image-2 ist ein GPT-Image-Modell mit tokenbasierter Abrechnung. TokenLab rechnet nach der offiziellen OpenAI-Usage-Aufschlüsselung für Texteingabe, Bildeingabe, gemeldete Cache-Eingabe und Bildausgabe-Token ab; es wird nicht als Festpreis-pro-Bild-Modell behandelt.

Für die Bilderzeugung mit gpt-image-2 unterstützt der öffentliche Vertrag 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. Wenn size oder quality fehlt, verwendet TokenLab auto; eigene size-Werte müssen dem unten beschriebenen flexiblen WIDTHxHEIGHT-Vertrag entsprechen.

input_fidelity gehört nicht zum aktuellen öffentlichen TokenLab-Vertrag für gpt-image-2; lassen Sie es weg, sonst gibt die Anfrage 400 unsupported_parameter zurück.

Hinweise zum Modellverhalten

Google-Gemini-Bildfamilien verwenden keinen gemeinsamen Auswahlvertrag:

  • gemini-3.1-flash-image, gemini-3-pro-image und nano-banana-pro unterstützen aspect_ratio sowie resolution (1k, 2k, 4k) für ihre öffentlichen Text-zu-Bild- und Image-Edit/Image-to-Image-Operationen.
  • nano-banana-2 unterstützt aspect_ratio und resolution (1k, 2k, 4k) für Text-to-Image und Image-to-Image.
  • gemini-2.5-flash-image, nano-banana und nano-banana-edit unterstützen aspect_ratio, bieten aber keine öffentliche Auswahl von resolution.
  • Verwenden Sie für Nano-Banana-Referenzbild-Anfragen nano-banana-edit oder nano-banana-pro auf diesem Endpunkt (/v1/images/generations) mit operation: "image-to-image" und image_urls. Senden Sie Nano-Banana-Referenzbild-Anfragen nicht an /v1/images/edits.
  • Referenzbilder können an diesem Endpunkt als JSON image_url / image_urls oder als multipart-image-Datei übergeben werden. /v1/images/generations akzeptiert weder images[] noch file_id; /v1/files-Referenzen gelten nur für /v1/images/edits-Modelle, die images[].file_id ausdrücklich dokumentieren.

Bei Google-Bildfamilien bevorzugen Sie aspect_ratio und senden Sie resolution nur, wenn das Modell es ausdrücklich unterstützt.

xAI-Grok-Imagine-Bildmodelle (grok-imagine-image, grok-imagine-image-quality und das legacy grok-imagine-image-pro) unterstützen aspect_ratio sowie resolution (1k, 2k). grok-imagine-image-pro bleibt als Kompatibilitäts-ID für grok-imagine-image-quality erhalten.

Anfragekörper

Timeout für synchrone Anfragen: Einige Bildanfragen geben das endgültige Bild inline zurück und warten dafür, bis die Generierung abgeschlossen ist. Hochauflösende oder hochwertige Anfragen können fast eine Minute oder länger dauern; setzen Sie das Timeout Ihres HTTP-Clients daher auf mindestens 120s. Wenn die Create-Antwort status: "pending", task_id oder poll_url enthält, folgen Sie stattdessen der zurückgegebenen poll_url.

modelstringerforderlich

Zu verwendendes Modell (z. B. gpt-image-2, flux-pro oder nano-banana-pro). Die aktuelle Empfehlungsliste erhalten Sie mit GET /v1/models?recommended_for=image.

promptstringerforderlich

Textbeschreibung des gewünschten Bildes.

image_urlstring

Öffentliche HTTPS-Referenzbild-URL für Image-to-Image-Generierung. Setzen Sie bei Nano-Banana-Referenzbild-Anfragen operation auf image-to-image; nano-banana-pro darf resolution enthalten, während nano-banana-edit es weglassen sollte.

image_urlsstring[]

Öffentliche HTTPS-Referenzbild-URLs. Verwenden Sie dieses Feld 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 modellspezifische Referenzbild-URLs für Anbieter, die primäre Eingabebilder von Referenzen unterscheiden.

imagefile

Multipart-Referenzbilddatei für Image-to-Image-Generierung. Verwenden Sie dies, wenn das Quellbild privat ist oder Header-Authentifizierung benötigt. Dies ist keine /v1/files-file_id; dieser Endpunkt akzeptiert keine file_id.

nintegerStandard: 1

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

sizestring

Bildgröße. Verwenden Sie dieses Feld für OpenAI-ähnliche Bildfamilien und andere Modelle, die exakte Pixelgrößen akzeptieren.

Für gpt-image-2 akzeptiert size auto oder WIDTHxHEIGHT. Benutzerdefinierte Abmessungen müssen auf beiden Seiten Vielfache von 16 sein, die längste Kante darf höchstens 3840px betragen, das Verhältnis lange/kurze Kante höchstens 3:1, und die Gesamtpixelzahl muss zwischen 655,360 und 8,294,400 liegen. aspect_ratio und resolution gehören derzeit nicht zum öffentlichen TokenLab-Vertrag für gpt-image-2.

Für Google-Gemini-Bildfamilien wird size als Kompatibilitätsalias behandelt und auf den öffentlichen aspect_ratio-Vertrag des Modells sowie, falls unterstützt, auf resolution abgebildet. Für diese Modelle sollten Sie vorzugsweise aspect_ratio direkt senden.

aspect_ratiostring

Modellabhängiger Seitenverhältnis-Selektor.

Häufige Werte für Google-Bildfamilien sind 1:1, 16:9, 9:16, 3:2 und 2:3.

resolutionstring

Die Ausgabeauflösung hängt vom Modell ab. gemini-3.1-flash-image, gemini-3-pro-image, nano-banana-2 und nano-banana-pro unterstützen 1k, 2k und 4k; Grok-Imagine-Bildmodelle unterstützen 1k und 2k. Nur senden, wenn Modell und Operation dieses Feld ausdrücklich unterstützen.

qualitystring

Bildqualität. GPT-Image-Modelle wie gpt-image-2 verwenden auto, low, medium oder high. Andere Bildfamilien können anbieterspezifische Werte verwenden; prüfen Sie die Metadaten des ausgewählten Modells, bevor Sie Nicht-Standardwerte senden.

response_formatstringStandard: url

Antwortformat: url oder b64_json. Standard ist url.

url liefert Bild-URLs in data[].url; b64_json liefert Base64-Bilddaten in data[].b64_json.

asyncbooleanStandard: false

Auf true setzen, um mit gpt-image-2 oder offiziellen FLUX/BFL-Bildmodellen zuerst eine Aufgabe zu erstellen. Abgeschlossene Async-Bildaufgaben liefern unabhängig vom angeforderten response_format URLs; verwenden Sie synchrone Anfragen, wenn Sie b64_json benötigen.

stylestring

Optionaler Stil-Selektor. Senden Sie ihn nur, wenn das ausgewählte Modell ihn ausdrücklich dokumentiert; lassen Sie ihn für gpt-image-2 weg, sofern die Modellmetadaten nichts anderes sagen.

userstring

Eine eindeutige Kennung für den Endbenutzer.

Antwort

Inline-Antwort

createdinteger

Unix-Zeitstempel der Erstellung.

dataarray

Array der generierten Bilder.

Jedes Objekt enthält:

  • url (string): URL des generierten Bildes
  • b64_json (string): Base64-kodiertes Bild (falls angefordert)
  • revised_prompt (string): Optionale vom Anbieter zurückgegebene Prompt-Überarbeitung, wenn das Upstream-Modell sie meldet

Antwort für asynchrone Aufgaben

Setzen Sie async: true mit gpt-image-2 oder offiziellen FLUX/BFL-Bildmodellen, um eine Aufgabe zu erstellen, statt im Create-Request auf das endgültige Bild zu warten. Die Antwort enthält status: "pending", task_id und poll_url. Fragen Sie /v1/tasks/{task_id} ab, bis die Aufgabe completed oder failed erreicht.

Asynchrone Bildaufgaben liefern nur die endgültigen Bild-URLs. Wenn Sie rohe b64_json-Bilddaten benötigen, verwenden Sie eine synchrone Anfrage.

Beim Erstellen der Aufgabe kann der geschätzte Betrag reserviert werden. Abgeschlossene Aufgaben werden nach tatsächlicher Nutzung abgerechnet; fehlgeschlagene oder abgelaufene Aufgaben werden freigegeben oder erstattet.

createdinteger

Unix-Zeitstempel der Erstellung.

task_idstring

Eindeutige Aufgaben-ID zum Abfragen.

statusstring

Anfänglicher Status: pending.

poll_urlstring

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

dataarray

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

Wenn du status: "pending" erhältst, verwende 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 reine Aspect-Ratio-Bildfamilie: Für gemini-2.5-flash-image, nano-banana oder nano-banana-edit senden Sie aspect_ratio, aber lassen resolution weg:

{
  "model": "gemini-2.5-flash-image",
  "prompt": "A clean editorial product shot of a citrus soda can",
  "aspect_ratio": "16:9"
}

Nano-Banana-Pro-Referenzbild-Beispiel: 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"
}

Private oder lokale Quellbilder können direkt per multipart hochgeladen werden. Senden 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..."
    }
  ]
}

Verfügbare Modelle

Aktuelle Bildmodelle, Funktionen und Preise erhalten Sie mit GET /v1/models?recommended_for=image.

Behandeln Sie ein Modell nicht statisch als immer synchron oder immer asynchron. Wenn die Create-Antwort status: "pending" zurückgibt, folgen Sie poll_url und pollen Sie bis zum Abschluss.

Task-basierte Antworten behandeln

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"):
    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()

    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}")

        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"]
            if status_data["status"] == "failed":
                raise Exception(status_data.get("error", "Generation failed"))

            time.sleep(3)

    return data["data"][0]["url"]

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

Hy Image 3.5 Preview erstellt aus Text quadratische Bilder mit 1024 Pixeln und bearbeitet Referenzbilder anhand schriftlicher Anweisungen. Es eignet sich für visuelle Entwürfe und die Verfeinerung einer Bildkomposition.

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