Imágenes

Editar imagen

Edita una imagen dado un prompt y una imagen de origen

POST
/v1/images/edits

Descripción general

Crea una imagen editada o extendida dada una imagen original y un prompt.

El endpoint admite ambos flujos:

  • el flujo de carga multipart/form-data compatible con OpenAI documentado abajo
  • solicitudes JSON que proporcionan image_url, image_urls o referencias oficiales images para familias de imagen a imagen compatibles

gpt-image-2 es compatible aquí. Acepta uploads multipart image, JSON image_url / image_urls y referencias oficiales images[] (image_url o file_id), hasta 16 imágenes fuente. Crea los file_id primero con /v1/files. Usa async: true para recibir una tarea primero; los modelos de edición oficiales FLUX/BFL usan el mismo flujo de polling.

Las ediciones con gpt-image-2 no aceptan resolution; usa size para las dimensiones de salida. background acepta auto u opaque; transparent no es compatible. Para ediciones con varias imágenes o alta latencia, prefiere async: true y consulta la tarea devuelta.

Las solicitudes Nano Banana con imagen de referencia (nano-banana-edit, nano-banana-2 y nano-banana-pro) se exponen en /v1/images/generations con operation: "image-to-image" e image_urls, no en este endpoint /v1/images/edits.

Los modelos de edición de imagen xAI Grok Imagine (grok-imagine-image, grok-imagine-image-quality y el legacy grok-imagine-image-pro) aceptan como máximo 3 imágenes fuente. Las solicitudes con más de 3 imágenes fuente fallan durante la validación de entrada con 400 too_many_images.

input_fidelity no forma parte del campos admitidos actual de TokenLab para gpt-image-2; omítelo o la solicitud devolverá 400 unsupported_parameter.

Cuerpo de la solicitud

Tiempo de espera de solicitudes síncronas: algunas solicitudes de imagen devuelven la imagen final inline y esperan a que termine la generación. Las solicitudes de alta resolución o alta calidad pueden tardar cerca de un minuto o más, así que configura el timeout de tu cliente HTTP en al menos 120s. Si la respuesta de creación incluye status: "pending", task_id o poll_url, sigue el poll_url devuelto en su lugar.

URLs de imagen remotas: cuando se necesita entrada multipart, TokenLab descarga JSON image_url, image_urls o images[].image_url y envía los bytes como partes multipart image. Las URLs deben ser públicas http/https, sin credenciales incrustadas ni fragmentos, y no deben resolver a localhost ni a rangos IP privados o reservados; cada redirección se valida de nuevo. El contenido descargado debe ser una imagen PNG, JPEG o WebP real. Límites: 50 MiB por imagen, 200 MiB en total para imágenes descargadas por URL en una solicitud, timeout de 30s y hasta 3 redirecciones.

Una solicitud JSON debe incluir exactamente uno de image_url, image_urls o images. Cada objeto images[] debe contener solo uno de image_url o file_id. El límite total de 200 MiB incluye todas las imágenes de origen y la máscara.

imagefile

Imágenes fuente multipart. Repite image para enviar varias fuentes de GPT Image. Los archivos deben ser PNG, JPEG o WebP, hasta 16 imágenes fuente y 50 MiB cada una. Los modelos de edición xAI Grok Imagine usan los mismos campos de entrada, pero limitan las imágenes fuente a 3.

promptstringobligatorio

Una descripción de texto de la edición deseada.

maskfile | object

Una imagen adicional cuyas áreas completamente transparentes indican dónde se debe editar la imagen. Debe ser un archivo PNG válido, menor de 50 MiB y tener las mismas dimensiones que image.

En solicitudes JSON, mask también puede ser un objeto con exactamente uno de image_url o file_id; los valores file_id deben venir de /v1/files y permanecer vinculados a la misma configuración de edición de imagen.

modelstringobligatorio

Modelo que se usará para editar imágenes. Usa gpt-image-2 para ediciones GPT Image, u otro modelo actual de edición de imágenes devuelto por GET /v1/models?recommended_for=image.

nintegerpredeterminado: 1

Número de imágenes a generar (1-10, según el modelo).

sizestring

Tamaño de la imagen generada. Para gpt-image-2, usa auto o WIDTHxHEIGHT; las dimensiones deben ser múltiplos de 16, el lado más largo como máximo 3840px, la relación lado largo/corto como máximo 3:1, y el total de píxeles entre 655,360 y 8,294,400.

response_formatstringpredeterminado: url

Formato en el que se devuelven las imágenes generadas. Debe ser url o b64_json; el valor predeterminado es url.

url devuelve las URL en data[].url; b64_json devuelve los datos de imagen Base64 en data[].b64_json.

asyncbooleanpredeterminado: false

Establécelo en true con gpt-image-2 o modelos de edición oficiales FLUX/BFL para devolver una tarea antes de que la imagen final esté lista. Las ediciones asíncronas completadas devuelven URL sin importar el response_format solicitado; usa solicitudes síncronas si necesitas b64_json.

userstring

Un identificador único que representa a su usuario final para monitoreo de abuso.

Respuesta

createdinteger

Marca de tiempo Unix de cuando se crearon las imágenes.

dataarray

Array de imágenes generadas.

Cada objeto contiene:

  • url (string): URL de la imagen editada (si response_format es url)
  • b64_json (string): Imagen codificada en Base64 (si response_format es b64_json)

Respuesta de tarea asíncrona

Usa async: true con gpt-image-2 o modelos de edición oficiales FLUX/BFL para crear una tarea en lugar de esperar la imagen editada en la solicitud. La respuesta incluye status: "pending", task_id y poll_url. Consulta /v1/tasks/{task_id} hasta que la tarea llegue a completed o failed.

Las tareas asíncronas de edición solo devuelven las URL finales. Si necesitas datos de imagen b64_json sin procesar, usa una solicitud síncrona.

Al crear la tarea puede reservarse el importe estimado. Las tareas completadas se cobran por uso real; las fallidas o vencidas liberan o reembolsan la reserva.

Solicitud

curl -X POST "https://api.tokenlab.sh/v1/images/edits" \
  -H "Authorization: Bearer sk-your-api-key" \
  -F "model=gpt-image-2" \
  -F "image=@sunlit_lounge.png" \
  -F "mask=@mask.png" \
  -F "prompt=A sunlit indoor lounge area with a pool" \
  -F "n=1" \
  -F "size=1024x1024"

Respuesta

Respuesta
{
  "created": 1706000000,
  "data": [
    {
      "url": "https://..."
    }
  ]
}

Notas

Los fallos al descargar imágenes remotas se devuelven como errores de entrada antes de que comience la generación. URLs inaccesibles, timeouts, respuestas 403/404, hosts privados/internos, credenciales o fragmentos en la URL, contenido que no es imagen, formatos no compatibles y excesos de tamaño devuelven 400 o 413 e identifican image_url / image_urls[n]. Para recursos privados o protegidos por headers, sube archivos multipart image directamente o crea referencias /v1/files.

Hy Image 3.5 Preview crea imágenes cuadradas de 1024 píxeles a partir de texto y edita imágenes de referencia mediante instrucciones escritas. Es útil para elaborar bocetos visuales y ajustar una composición.

{
  "model": "hy-image-v3.5-preview",
  "prompt": "Change the table to pale blue",
  "image_url": "https://example.com/reference.png",
  "size": "1024x1024",
  "n": 1,
  "response_format": "url"
}

Autorización

BearerAuth
AuthorizationBearer <token>

Autenticación con API Key. Cree o gestione API keys en Dashboard > API > API Keys.

Ubicación: header

Encabezados

X-TokenLab-Delivery-Policy?string

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"

Cuerpo de la solicitud

Respuesta

application/json

application/json

application/json

application/json

application/json

application/json