Imágenes
Crear imagen
Crea una imagen a partir de un prompt
Descripción general
Utilice GET /v1/models?recommended_for=image para obtener los modelos de imagen actuales, luego envíe el model seleccionado explícitamente.
gpt-image-2 es un modelo de imagen GPT con precio basado en tokens. TokenLab sigue el desglose de uso oficial de OpenAI para tokens de entrada de texto, entrada de imagen, entrada almacenada en caché y salida de imagen; no se factura como un modelo fijo por imagen.
Para la generación de imágenes con gpt-image-2, los parámetros públicos admitidos son prompt, n, size, quality, response_format, async, background, output_format, output_compression o compression, moderation y user. background acepta auto u opaque; transparent no es compatible. Omita size o quality para permitir que TokenLab utilice auto; los valores personalizados de size deben utilizar el contrato flexible WIDTHxHEIGHT documentado a continuación.
input_fidelity no forma parte de los campos admitidos actualmente por TokenLab para gpt-image-2; omítalo o la solicitud devolverá 400 unsupported_parameter.
Notas sobre el comportamiento del modelo
Los modelos de la familia de imágenes Google Gemini no comparten el mismo contrato de selector:
gemini-3.1-flash-image,gemini-nano-banana-2.1,gemini-3-pro-image,nano-banana-2.1ynano-banana-proadmitenaspect_ratioademás deresolution(1k,2k,4k) para sus operaciones públicas de texto a imagen, imagen a imagen y edición de imagen.nano-banana-2admiteaspect_ratioyresolution(1k,2k,4k) tanto para la generación de texto a imagen como de imagen a imagen.gemini-3.1-flash-lite-imageynano-banana-2-liteadmiten texto a imagen, imagen a imagen y edición de imagen solo en resolución1k.nano-bananaadmiteaspect_ratiopero no expone la selección pública deresolution.- Para imagen a imagen con
gemini-3.1-flash-image,gemini-nano-banana-2.1,gemini-3.1-flash-lite-imageogemini-3-pro-image, utilice este endpoint conoperation: "image-to-image"y las imágenes de referencia. Envíe las solicitudes de edición de imagen para estos modelos a/v1/images/edits. - Para solicitudes de imagen de referencia de Nano Banana, utilice
nano-banana-2,nano-banana-2.1,nano-banana-2-liteonano-banana-proen este endpoint (/v1/images/generations) conoperation: "image-to-image"yimage_urls. Las solicitudes de edición de imagen paranano-banana-2,nano-banana-2.1,nano-banana-2-liteynano-banana-protambién utilizan este endpoint, conoperation: "image-edit". No envíe solicitudes de imagen de referencia de Nano Banana a/v1/images/edits. - Las imágenes de referencia en este endpoint pueden proporcionarse como
image_url/image_urlsen JSON, o como un archivoimagemultipart.images[]yfile_idno se aceptan en/v1/images/generations; cree referencias de/v1/filessolo para modelos de/v1/images/editsque documentenimages[].file_id.
Para las familias de imágenes de Google, prefiera aspect_ratio y envíe resolution solo cuando el modelo lo admita explícitamente.
Los modelos de imagen xAI Grok Imagine (grok-imagine-image, grok-imagine-image-2.0 y el legado grok-imagine-image-pro) admiten aspect_ratio además de resolution (1k, 2k). grok-imagine-image-pro se mantiene como un ID de compatibilidad para grok-imagine-image-2.0.
Cuerpo de la solicitud
Tiempo de espera de solicitud síncrona: Algunas solicitudes de imagen devuelven la imagen final en línea y esperan a que finalice la generación. Las solicitudes de alta resolución o alta calidad pueden tardar cerca de un minuto o más, así que configure el tiempo de espera de su cliente HTTP en al menos 120s. Si la respuesta de creación incluye status: "pending", task_id o poll_url, siga la poll_url devuelta en su lugar.
Modelo a utilizar (por ejemplo, gpt-image-2, flux-pro-1.1 o nano-banana-pro). Consulte GET /v1/models?recommended_for=image para obtener la lista recomendada actual.
Descripción textual de la imagen deseada.
URL de imagen de referencia HTTPS pública para la generación de imagen a imagen. Para solicitudes de imagen de referencia de Nano Banana, establezca operation en image-to-image; nano-banana-pro puede incluir resolution.
URLs de imágenes de referencia HTTPS públicas. Utilícelo para una o más imágenes de referencia en solicitudes JSON. file_id e images[] no son compatibles en este endpoint.
URLs de imágenes de referencia adicionales para modelos que distinguen las entradas principales de las referencias.
Archivo de imagen de referencia multipart para la generación de imagen a imagen. Utilícelo cuando la imagen de origen sea privada o esté protegida por encabezados. Esto es diferente de un file_id de /v1/files, que no se acepta en este endpoint.
1Número de imágenes a generar (1-10, dependiendo del modelo).
Tamaño de la imagen. Utilícelo para familias de imágenes al estilo OpenAI y otros modelos que aceptan tamaños de píxel exactos.
Para gpt-image-2, size acepta auto o WIDTHxHEIGHT. Las dimensiones personalizadas deben ser múltiplos de 16, el borde más largo debe ser como máximo 3840px, la relación largo/corto debe ser como máximo 3:1, y el total de píxeles debe estar entre 655,360 y 8,294,400. aspect_ratio y resolution no forman parte de los detalles del modelo TokenLab actual para gpt-image-2.
Para los modelos de imagen de Google con niveles de resolución (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 y nano-banana-pro), size acepta un tamaño de salida de la tabla de tamaños del modelo, como 1376x768 (16:9 a 1K), o un nivel de resolución: 1K, 2K o 4K. TokenLab envía un nivel como resolution, por lo que la solicitud y su precio son los mismos que con resolution. Un nivel que el modelo no admite (por ejemplo, 2K en gemini-3.1-flash-lite-image), o un nivel que es diferente de resolution, devuelve 400 con el código invalid_image_size_contract y las allowed_resolutions del modelo. Para estos modelos, la forma recomendada es aspect_ratio con resolution.
Selector de relación de aspecto dependiente del modelo.
Los valores comunes de la familia de imágenes de Google incluyen 1:1, 16:9, 9:16, 3:2 y 2:3.
Resolución de salida dependiente del modelo. gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image, nano-banana-2, nano-banana-2.1 y nano-banana-pro admiten 1k, 2k y 4k; los modelos de imagen Grok Imagine admiten 1k y 2k. Omita este campo a menos que el modelo y la operación seleccionados lo admitan explícitamente.
Calidad de la imagen. Los modelos de imagen GPT como gpt-image-2 utilizan auto, low, medium o high. Otros modelos pueden utilizar valores diferentes; verifique los detalles del modelo antes de enviar un valor no predeterminado.
Cómo se devuelven las imágenes: url o b64_json.
- Omitido: cuando el modelo devuelve bytes de imagen, cada imagen está en
data[].b64_json, y también endata[].urlcuando TokenLab la ha almacenado. Cuando el modelo devuelve un enlace, cada imagen está endata[].url. url: cada imagen está solo endata[].url.b64_json: cada imagen está solo endata[].b64_jsoncomo datos Base64.
Los enlaces son URLs de resultados multimedia de TokenLab. Permanecen válidos durante 30 días. Consulte Retención de datos.
falseEstablezca en true con gpt-image-2 o modelos de imagen oficiales FLUX/BFL para crear una tarea primero. Las tareas de imagen asíncronas completadas devuelven URLs independientemente del response_format solicitado; utilice solicitudes síncronas cuando necesite b64_json.
Selector de estilo opcional. Envíelo solo cuando el modelo seleccionado lo documente explícitamente; omítalo para gpt-image-2 a menos que los metadatos del modelo indiquen lo contrario.
Un identificador único para el usuario final.
Respuesta
Respuesta en línea
Marca de tiempo Unix de creación.
Matriz de imágenes generadas.
Cada objeto contiene:
url(string): URL de resultado multimedia de TokenLab de la imagen, válida por 30 días. No presente cuandoresponse_formatesb64_json. Cuando se omiteresponse_format, falta si TokenLab no pudo almacenar la imagen.b64_json(string): Datos de imagen en Base64. Presente cuandoresponse_formatesb64_json, o cuando se omite y el modelo devuelve bytes de imagen.revised_prompt(string): Revisión opcional del prompt, cuando el modelo seleccionado devuelve una.
Respuesta de tarea asíncrona
Establezca async: true con gpt-image-2 o modelos de imagen oficiales FLUX/BFL para crear una tarea en lugar de esperar la imagen final en la solicitud de creación. La respuesta incluye status: "pending", task_id y poll_url. Realice el sondeo de /v1/tasks/{task_id} hasta que la tarea llegue a completed o failed.
Las tareas de imagen asíncronas devuelven solo URLs de imágenes finales. Si necesita datos de imagen b64_json sin procesar, utilice una solicitud síncrona.
La facturación puede reservar el monto estimado cuando se crea la tarea. Las tareas completadas se facturan según el uso real, y las tareas fallidas o que excedieron el tiempo de espera se liberan o reembolsan.
Marca de tiempo Unix de creación.
Identificador único de tarea para el sondeo.
Estado inicial: pending.
URL relativa para sondear resultados, por ejemplo /v1/tasks/{id}.
Vacío mientras la tarea está pendiente. Las tareas de imagen completadas devuelven URLs de imágenes generadas en data[].url.
Cuando reciba status: "pending", utilice poll_url o GET /v1/tasks/{task_id} para recuperar el resultado.
Solicitud
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"
}'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)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
$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'];Ejemplo de familia de imágenes solo con relación: para nano-banana, envíe aspect_ratio pero omita resolution:
{
"model": "nano-banana",
"prompt": "A clean editorial product shot of a citrus soda can",
"aspect_ratio": "16:9"
}Ejemplo de imagen de referencia de Nano Banana Pro: envíe la solicitud a /v1/images/generations, no a /v1/images/edits. resolution es opcional y puede establecerse en 1k, 2k o 4k:
{
"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"
}Ejemplo de carga multipart directa para imágenes de origen privadas o locales. No pase un file_id a /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"Respuesta
{
"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..."
}
]
}Elegir un modelo
Consulte GET /v1/models?recommended_for=image o utilice la página de modelos para conocer la disponibilidad, capacidades y precios actuales.
No codifique un modelo como siempre síncrono o siempre asíncrono. Si la respuesta de creación devuelve status: "pending", siga poll_url y realice el sondeo hasta que se complete.
Manejo de respuestas basadas en tareas
Para los modelos de imagen, verifique siempre si la respuesta contiene status: "pending" / status: "processing":
import requests
import time
def generate_image(prompt, model="gpt-image-2"):
# Crear solicitud de imagen
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()
# Comprobar si está basada en tareas
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}")
# Sondear resultado
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:
# Respuesta en línea
return data["data"][0]["url"]
# Uso
url = generate_image("a beautiful sunset over mountains", model="gpt-image-2")
print(f"Generated image: {url}")Hy Image 3.5 Preview crea imágenes cuadradas de 1024 píxeles a partir de texto y edita imágenes de referencia utilizando instrucciones escritas. Es útil para esbozar visuales y refinar una composición.
{
"model": "hy-image-v3.5-preview",
"prompt": "A yellow lemon on a white table",
"size": "1024x1024",
"n": 1,
"response_format": "url"
}Autorización
BearerAuth Autenticación con API Key. Cree o gestione API keys en Dashboard > API > API Keys.
Ubicación: header
Encabezados
Política de entrega por solicitud. Sustituye los valores predeterminados de la API key y del Workspace. Auto intenta primero con TokenLab Verified y puede cambiar una vez a Official solo antes de la salida, la aceptación de la solicitud o la creación de recursos persistentes.
Valores permitidos
- "auto"
- "verified"
- "official"
Respuesta
application/json
application/json
application/json
application/json
application/json
application/json
application/json