Si una llamada a GPT Image 2 devuelve Unknown parameter: 'style', elimina la clave style del cuerpo que envías a la API. Cambiar "vivid" por "natural" no resuelve la incompatibilidad: OpenAI reserva ese parámetro para dall-e-3. Puedes seguir pidiendo un estilo fotográfico, una acuarela o una ilustración; esa indicación debe formar parte de prompt. Así lo distingue la referencia de generación de imágenes de OpenAI.
La corrección tiene dos partes: conseguir que la solicitud llegue sin el campo incompatible y leer correctamente la imagen que devuelve GPT Image. Los ejemplos siguientes usan OpenAI directamente, en https://api.openai.com/v1/images/generations. Si utilizas Azure o un proveedor intermediario, conserva sus requisitos de conexión y comprueba su documentación antes de trasladarlos.
El cambio que necesitas hacer en la solicitud
Este cuerpo conserva un parámetro de DALL·E 3 que no corresponde a GPT Image 2:
json{ "model": "gpt-image-2", "prompt": "Una taza de cerámica junto a una ventana", "style": "natural" }
Sustitúyelo por un cuerpo que describa la imagen en el propio texto:
json{ "model": "gpt-image-2", "prompt": "Fotografía de una taza de cerámica junto a una ventana. Luz natural suave, colores discretos y textura del esmalte visible." }
No estás renunciando a controlar la apariencia. Has trasladado esa intención a una instrucción que el modelo puede interpretar. Una descripción concreta —iluminación, técnica, materiales, ambiente— comunica mejor el resultado deseado que copiar el nombre de un ajuste antiguo. No hay que convertir cada valor de DALL·E en otro parámetro equivalente.
Eliminar la clave no es dejarla vacía. Tanto "style": "" como "style": null siguen incluyendo el nombre del campo en JSON. Para esta corrección, el cuerpo final debe carecer de la clave. Tampoco basta con borrarla de un objeto inicial si después se vuelve a incorporar al combinar opciones.
Si gestionas la solicitud en JavaScript, puedes eliminar el campo después de aplicar tus ajustes y comprobar los nombres de las propiedades sin imprimir el texto privado de la solicitud:
javascriptconst request = { ...savedOptions, model: "gpt-image-2", prompt }; delete request.style; const body = JSON.stringify(request); console.log(Object.keys(JSON.parse(body))); // Envía este mismo body; evita volver a combinar opciones después.
Ese fragmento muestra una operación local sobre el objeto. Si una biblioteca o un intermediario transforma la solicitud más adelante, aún tendrás que revisar lo que sale de esa última etapa.
Prueba una llamada mínima y guarda el resultado
Para separar un problema del cuerpo de otro introducido por tu integración, empieza con model y prompt, como en los ejemplos oficiales de GPT Image 2. Guarda el segundo JSON de la sección anterior en un archivo llamado solicitud.json.
Con tu clave de OpenAI ya disponible en la variable de entorno OPENAI_API_KEY, ejecuta desde la misma carpeta:
bashcurl --fail-with-body --silent --show-error \ https://api.openai.com/v1/images/generations \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ --data-binary @solicitud.json \ --output respuesta.json
La llamada utiliza tu cuenta y puede tener coste. Es un ejemplo basado en la documentación; no demuestra que tu proyecto tenga acceso ni reproduce por sí mismo el fallo de tu cliente. Si curl devuelve un error, revisa respuesta.json antes de intentar extraer una imagen. En versiones antiguas de curl que no reconozcan --fail-with-body, actualiza la herramienta para usar este comando tal cual.
Cuando la solicitud termine correctamente, la imagen estará codificada en Base64 en data[0].b64_json. El formato de imagen predeterminado es PNG. Guarda este programa como guardar_imagen.py junto a la respuesta:
pythonimport base64 import json from pathlib import Path response = json.loads(Path("respuesta.json").read_text(encoding="utf-8")) if response.get("error"): raise SystemExit(f"La API devolvió un error: {response['error']}") data = response.get("data") or [] encoded = data[0].get("b64_json") if data else None if not isinstance(encoded, str) or not encoded: raise SystemExit("La respuesta no contiene data[0].b64_json.") image_bytes = base64.b64decode(encoded, validate=True) if not image_bytes: raise SystemExit("La imagen decodificada está vacía.") output = Path("imagen.png") output.write_bytes(image_bytes) print(f"Imagen guardada: {output.resolve()} ({len(image_bytes)} bytes)")
Después ejecuta:
bashpython3 guardar_imagen.py
Abre imagen.png con un visor. Recibir JSON, encontrar Base64 y escribir un archivo son pasos distintos; abrir la imagen confirma que el resultado es utilizable. Si decides añadir output_format: "webp" o output_format: "jpeg" a la solicitud, cambia también el nombre de salida a imagen.webp o imagen.jpeg. El guardado en Base64 no requiere instalar una biblioteca de Python adicional.

Si has borrado style y el error continúa

El mensaje identifica el campo rechazado, pero no dice quién lo añadió. Puede proceder de tus opciones guardadas, del código que combina ajustes, de un módulo de automatización o de un proveedor que transforma la petición.
Compara la llamada mínima con la que falla, manteniendo el mismo proveedor, modelo, punto de conexión y contexto de cuenta. Cambiar de proveedor a la vez puede orientar la investigación, pero no aislar la causa.
| Resultado que observas | Qué puedes concluir y revisar |
|---|---|
La solicitud mínima funciona y la integración falla con style | Revisa las diferencias del cuerpo y los ajustes que añade la integración. La llamada mínima demuestra que esa combinación concreta puede generar una imagen. |
El cuerpo final todavía contiene style | Localiza el último paso que incorpora el campo y elimínalo allí. Una casilla vacía no confirma que el campo se omita. |
Tu registro local no contiene style, pero sigue apareciendo el error | Comprueba que el registro corresponde al mismo intento y que se tomó después de todas las transformaciones que puedes observar. Si hay un intermediario, pide revisar su solicitud saliente. |
| Ahora aparece un error sobre otro parámetro | Atiende el nuevo campo rechazado. El cambio de mensaje no prueba todavía que la generación pueda completarse. |
| Ya recibes Base64, pero el siguiente paso exige una URL | La solicitud ha avanzado; adapta el consumo del resultado como se explica más abajo. |
Para comunicar el problema, conserva la fecha del intento, el punto de conexión, el modelo, los nombres de los campos y el identificador de solicitud si está disponible. No compartas la cabecera de autorización ni un prompt con información privada. El cuerpo que construye tu aplicación y el cuerpo que recibe el servicio solo son equivalentes cuando no hay una transformación entre ambos.
Qué revisar en Make y otras automatizaciones
Un hilo de la comunidad de Make recoge precisamente un campo style que el usuario no tenía mapeado. La conversación también pasa a un segundo problema: el paso posterior esperaba una URL y la nueva salida tenía que tratarse como archivo o Base64. La solución comentada utilizaba GPT Image 1; no es una prueba de GPT Image 2 ni demuestra que todos los módulos actuales fallen.
En tu escenario, revisa el historial de ejecución y la configuración del módulo que envía la solicitud. Si no permite omitir el campo, prueba un módulo que documente compatibilidad con GPT Image o una solicitud HTTP explícita con el cuerpo mínimo. Después vuelve a conectar la salida al paso que guarda o utiliza la imagen.
Actualizar un SDK o sustituir un módulo puede ayudar si cambia lo que envía. Que una biblioteca muestre style entre sus opciones no significa que todos los modelos lo acepten. Sin conocer tu versión y el cuerpo enviado, no se puede señalar una versión concreta como solución.
Evita arrastrar los demás ajustes de DALL·E 3
Al cambiar solo el nombre del modelo, pueden quedar otros campos incompatibles. La referencia de OpenAI distingue estas opciones:
| Ajuste anterior | Qué hacer con GPT Image 2 |
|---|---|
style: "vivid" o style: "natural" | Elimina style y describe la apariencia en prompt. |
quality: "hd" o quality: "standard" | Omite el ajuste para la prueba mínima; cuando lo necesites, usa low, medium, high o auto. |
response_format: "url" o response_format: "b64_json" | Elimina response_format; GPT Image devuelve la imagen en Base64. |
| Necesidad de elegir PNG, JPEG o WebP | Usa output_format con png, jpeg o webp. |
output_format elige la codificación del archivo, no el modo de entrega como enlace o Base64. Por eso sustituir response_format: "url" por output_format: "url" tampoco corresponde al formato documentado.
Si tu automatización necesita una URL, decodifica la imagen, guárdala en el almacenamiento que utilices y pasa el enlace resultante al siguiente paso. Si ese paso acepta un archivo, puedes proporcionarle los bytes con un nombre y tipo de contenido adecuados, sin crear una URL intermedia. Algunos proveedores realizan esa conversión por su cuenta; su enlace no implica que OpenAI devuelva el mismo tipo de respuesta.
Para ampliar la integración una vez resuelto este error, consulta la guía de la API de GPT Image 2. La comprobación útil aquí termina con una solicitud sin style, una imagen guardada que puedas abrir y el siguiente paso de tu aplicación consumiendo ese archivo correctamente.



