El servicio de edición de imágenes de OpenAI permite enviar cualquier cantidad de imágenes e instrucciones, y obtener imágenes modificadas como resultado. Actualmente, la API soporta simultáneamente los modelosDocumentation Index
Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
Use this file to discover all available pages before exploring further.
dall-e-2, gpt-image-1, el más reciente gpt-image-2, así como la serie de modelos nano-banana / nano-banana-2 / nano-banana-pro integrados a través de la misma interfaz.
Este documento describe principalmente el flujo de uso de la API OpenAI Images Edits, con la cual podemos utilizar fácilmente las funciones oficiales de edición de imágenes de OpenAI.
Proceso de Solicitud
Para usar la API OpenAI Images Edits, primero puede ir a la página OpenAI Images Edits API y hacer clic en el botón “Acquire” para obtener las credenciales necesarias para las solicitudes:
Si aún no ha iniciado sesión o registrado, será redirigido automáticamente a la página de inicio de sesión para registrarse y entrar; después de iniciar sesión, volverá automáticamente a esta página.
Al solicitar por primera vez, se otorgará un crédito gratuito para usar la API sin costo.
Modelo GPT-Image-2
gpt-image-2 presenta mejoras muy notables en escenarios de edición de imágenes en comparación con gpt-image-1:
- Mayor estabilidad estructural: Al cambiar piel, colores o fondo, casi no se altera la composición ni el diseño original.
- Mejor preservación del texto: En imágenes con texto como infografías, carteles o menús, el texto permanece claro y legible tras la edición.
- Soporte para URL directo: Además de la tradicional carga de archivos con
multipart/form-data,gpt-image-2soporta pasar URLs de imágenes en formato JSON, sin necesidad de descargar la imagen localmente, ideal para integración en pipelines del servidor. - Soporte para redibujo en alta resolución: Puede enviar una imagen original de 1K y solicitar salida en 2K o 4K mediante el parámetro
size, el modelo ampliará la imagen durante el proceso de edición.
Valores soportados para size y niveles de facturación
Las restricciones para size en la API de edición son idénticas a las de la API de generación: gpt-image-2 acepta size como auto, vacío, o en formato WIDTHxHEIGHT. Cualquier otro formato devolverá error 400. La facturación se divide en dos niveles, independiente de la resolución original, solo según el valor solicitado en size:
- Precio estándar 1K: Cualquier tamaño recomendado 1K de la tabla a continuación, o alias comunes de salida 1K (
1254x1254,1672x941,941x1672). - Nivel superior (1.5×): Incluye los presets recomendados 2K / 4K de la tabla, así como cualquier tamaño personalizado
WIDTHxHEIGHT.
| Relación | 1K (precio estándar) | 2K recomendado (×1.5) | 4K recomendado (×1.5) |
|---|---|---|---|
| 1:1 | 1024x1024 | 2048x2048 | 2880x2880 |
| 4:3 | 1536x1024 | 2048x1536 | 3264x2448 |
| 3:4 | 1024x1536 | 1536x2048 | 2448x3264 |
| 16:9 | 1792x1024 | 2048x1152 | 3840x2160 |
| 9:16 | 1024x1792 | 1152x2048 | 2160x3840 |
Por ejemplo: Si la imagen original es1024x1024y se pasasizecomo2048x2048, el modelo redibujará y devolverá una imagen 2K, cobrando en el nivel “otro”; si se pasa3840x2160, se obtiene una imagen 4K horizontal, también con cobro “otro”; si se pasaautoo se omite, se cobra al precio estándar 1K.
Sobre el parámetroA continuación, se presentan dos ejemplos reales desde diferentes perspectivas para apreciar la capacidad de edición denActualmente, la API de edicióngpt-image-2no soportan > 1: este parámetro será ignorado silenciosamente, y sin importar si se envían=1on=10, la respuesta solo devolverá una imagen y se cobrará solo una. Si necesita múltiples resultados candidatos, debe realizar múltiples solicitudes concurrentes. Esta restricción también aplica paragpt-image-1/gpt-image-1.5y la serienano-banana.dall-e-2es actualmente el único modelo de edición que soporta nativon > 1.
gpt-image-2.
Método 1: JSON + URL de imagen (recomendado)
Envía la solicitud conContent-Type: application/json, colocando en el campo image la URL de una imagen; el modelo descargará la imagen y la editará según el prompt.
Por ejemplo, esta imagen original es una infografía generada con gpt-image-2:


Consejo: El campoimagetambién acepta un arreglo, por ejemplo"image": ["url1", "url2", "url3"], hasta 16 imágenes de referencia simultáneamente para que el modelo las considere en conjunto.
Método 2: JSON + múltiples imágenes de referencia
gpt-image-2 soporta usar múltiples imágenes de referencia para generar el resultado final, por ejemplo, combinar varias fotos de productos en una sola cesta de regalo:
Ejemplo de escenario: cambio de estilo manteniendo estructura
Otro ejemplo: reemplazar una estantería de madera por una moderna flotante, manteniendo estrictamente la cantidad y disposición de libros en cada nivel. Imagen original (estantería de madera generada congpt-image-2):

task_id: e9544dba-727e-44a2-81e1-223d49869380):

Método 3: multipart/form-data (compatible con OpenAI SDK)
Si ya usa el SDK oficial de OpenAI para Python, el método tradicional de carga conmultipart/form-data sigue funcionando, solo cambie model a gpt-image-2:
OPENAI_BASE_URL configurado como https://api.xhuoapi.ai/v1/openai y OPENAI_API_KEY con el token obtenido:
Serie de modelos Nano Banana
La serienano-banana también está integrada en /openai/images/edits; solo cambie el valor de model por cualquiera de los siguientes:
| Modelo | Costo (Créditos / solicitud) | Escenario de uso |
|---|---|---|
nano-banana | 0.14 | Edición de imágenes común, más rápido y económico |
nano-banana-2 | 0.28 | Mejor calidad y detalles |
nano-banana-pro | 0.35 | Tope de gama, mejor preservación de estructura, texto y estilo |
Importante: rango de parámetros soportados Nano Banana se conecta a través de una capa adaptadora al protocolo OpenAI, soportando solo los parámetros:model,prompt,image.
imagepuede enviarse como archivo conmultipart/form-data(internamente convertido adata:<mime>;base64,...para upstream), o como URL de imagen en un campo de formulario.- No soporta
mask,n,size,response_formatni otros; serán ignorados si se envían.- La estructura de respuesta sigue el formato OpenAI (
data[].url), perocreatedsiempre es0, no devuelveb64_jsonyrevised_promptsiempre es igual alpromptoriginal.
Llamada con formulario + URL de imagen

Llamada con formulario + archivo local
Callback asíncrono
El mecanismo de callback asíncrono concallback_url también funciona para nano-banana, con el mismo flujo que otros modelos, como se explica en la sección Callback asíncrono.
Uso básico
A continuación, puede realizar llamadas con código. Aquí un ejemplo con CURL:authorization (selección directa en el menú desplegable), model (modelo oficial de OpenAI, aquí principalmente uno, ver modelos disponibles), prompt (texto que describe la imagen a generar) y image (ruta de la imagen a editar). La imagen a editar es la siguiente:

OPENAI_BASE_URL configurado como https://api.xhuoapi.ai/v1/openai y OPENAI_API_KEY con el token obtenido en authorization. En Mac OS, puede establecerlas con:
gift-basket.png en el directorio actual, con el siguiente resultado:

dall-e-2, gpt-image-1 y gpt-image-2, siendo gpt-image-2 el modelo recomendado, como se explicó en la sección Modelo GPT-Image-2.
Callback asíncrono
Dado que la edición de imágenes con la API OpenAI Images Edits puede tardar, si la API no responde rápidamente, la conexión HTTP se mantiene abierta, consumiendo recursos. Por ello, esta API también soporta callbacks asíncronos. El flujo es: el cliente envía la solicitud incluyendo un campocallback_url. La API responde inmediatamente con un resultado que incluye un task_id que identifica la tarea. Cuando la tarea termina, el resultado de la edición se envía mediante POST en formato JSON al callback_url especificado, incluyendo el mismo task_id para relacionar la tarea.
Veamos un ejemplo.
Primero, el webhook es un servicio HTTP que puede recibir solicitudes; el desarrollador debe reemplazarlo por la URL de su propio servidor HTTP. Para la demostración, usamos el sitio público https://webhook.site/, que genera una URL de webhook, como esta:
Copie esta URL, por ejemplo https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab, para usarla como webhook.
Luego, incluya el campo callback_url con esta URL en la solicitud, junto con los demás parámetros:
task_id y el campo data con el resultado de la edición, igual que en la llamada síncrona, permitiendo relacionar la tarea por ID.
Manejo de errores
Al llamar a la API, si ocurre un error, la API devolverá un código y mensaje correspondiente. Por ejemplo:400 token_mismatched: Solicitud incorrecta, posiblemente por parámetros faltantes o inválidos.400 api_not_implemented: Solicitud incorrecta, posiblemente por parámetros faltantes o inválidos.401 invalid_token: No autorizado, token inválido o ausente.429 too_many_requests: Demasiadas solicitudes, se ha excedido el límite de tasa.500 api_error: Error interno del servidor.

