> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Solicitud y uso de la API de Generación de Imágenes de OpenAI

> OpenAI generation API guide - Ace Data Cloud

La API de Generación de Imágenes de OpenAI actualmente soporta varios modelos de generación de imágenes, incluyendo el clásico `dall-e-3`, la capacidad de renderizado de texto más potente `gpt-image-1`, la última generación **`gpt-image-2`**, así como la serie de modelos **`nano-banana` / `nano-banana-2-lite` / `nano-banana-2` / `nano-banana-pro`** que se conectan a través de la misma interfaz. Todos ellos pueden generar imágenes de alta calidad a partir de descripciones de texto.

Este documento presenta principalmente el flujo de uso de la API de Generación de Imágenes de OpenAI, que nos permite utilizar fácilmente las funciones de generación de imágenes de la serie OpenAI.

## Proceso de Solicitud

Para utilizar la API de Generación de Imágenes de OpenAI, primero dirígete a la [consola de Ace Data Cloud](https://platform.acedata.cloud/console/applications) para obtener tu Token de API, que debes guardar como respaldo.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

Si aún no has iniciado sesión o registrado, serás redirigido automáticamente a la página de inicio de sesión que te invitará a registrarte e iniciar sesión; una vez completado, regresarás automáticamente a la página actual.

**Un Token de API es suficiente para acceder a todos los servicios de la plataforma, sin necesidad de solicitar uno por cada servicio.** La primera solicitud te otorgará un crédito gratuito para que lo pruebes; si el crédito es insuficiente, puedes recargar el saldo general en la [consola](https://platform.acedata.cloud/console/coin).

> 📘 Documentación completa: [API de Generación de Imágenes de OpenAI →](https://platform.acedata.cloud/documents/openai-images-generations)

## Modelo GPT-Image-2

`gpt-image-2` es el nuevo modelo de generación de imágenes lanzado por OpenAI, que presenta mejoras significativas en comparación con `dall-e-3` y `gpt-image-1` en los siguientes aspectos:

* **Mayor capacidad de seguimiento de instrucciones**: puede entender con precisión instrucciones estructuradas complejas sobre composición, conteo, relaciones de posición, etc.
* **Renderizado de texto más claro**: en escenarios como carteles, menús, infografías, logotipos, el inglés y los números casi no presentan confusiones.
* **Expresión de estilo más rica**: soporta de forma nativa múltiples estilos como retratos cinematográficos, carteles retro, ilustraciones infantiles, fotografía de productos, infografías, entre otros.
* **Soporte nativo para múltiples proporciones + alta resolución**: cubre 5 proporciones (1:1, 4:3, 3:4, 16:9, 9:16) con 3 niveles de resolución (1K / 2K / 4K).

La forma de invocación es completamente idéntica a otros modelos, solo necesitas establecer el campo `model` como `gpt-image-2`. La `url` en el resultado devuelto es un enlace a una imagen alojada permanentemente en `platform.cdn.acedata.cloud`, que se puede abrir directamente en el navegador o incrustar en una página web.

### Variantes de línea (`:official` / `:reverse`)

`gpt-image-2` utiliza por defecto la línea estándar. A través del sufijo del nombre del modelo, puedes seleccionar explícitamente la línea:

* **`gpt-image-2:official`**: canal oficial, estable y conforme. Soporta resoluciones reales de 2K / 4K, **cobrando por cada imagen, con un precio que es el doble del precio por defecto de `gpt-image-2`**. Si la línea no está disponible, devolverá un error directamente, sin degradación automática.
* **`gpt-image-2:reverse`**: completamente equivalente al `gpt-image-2` por defecto, con una mejor relación calidad-precio, sin cambios en el precio.

### Valores soportados para `size`

`gpt-image-2` solo verifica el formato de `size`, siempre que no sea `auto` o una cadena vacía, debe coincidir con `WIDTHxHEIGHT` (por ejemplo, `1024x1024`, `2048x1152`, `800x600`); cualquier otra forma devolverá 400. **Todos los tamaños (1K / 2K / 4K / personalizado) se cobran de manera uniforme por imagen, sin recargos por tamaño.**

Limitaciones de tamaño: los tamaños personalizados deben cumplir que ambos lados sean múltiplos de 16, el lado más largo ≤ 3840, y el número total de píxeles ≤ 8,294,400; cualquier exceso se devolverá con un 4xx.

| Proporción | 1K Recomendado | 2K Recomendado | 4K Recomendado |
| ---------- | -------------- | -------------- | -------------- |
| 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`    |

> Al pasar explícitamente `size: "auto"`, la plataforma planificará el lienzo en el espacio de proporciones continuas y determinará según la siguiente prioridad: píxeles o proporciones explícitas en el prompt, estándares de nomenclatura (papel / impresión / posiciones de plataforma / publicidad / dispositivos / fotografía / cine), prácticas de medio, y finalmente inferencia de composición. Por lo tanto, además de las proporciones comunes `1:1`, `4:5`, `9:16`, `21:9`, también se pueden conservar proporciones no predefinidas como `1.91:1`, `1.85:1`, `2.39:1`, y papel ISO `1:√2`; el tamaño final se ajustará automáticamente a múltiplos de 16 y al presupuesto de píxeles soportado por el servicio. Si la determinación automática no está disponible, se retrocederá al formato predeterminado del modelo, sin interrumpir la generación. Si se omite el campo `size`, se utilizará directamente el formato predeterminado del modelo; si se tienen requisitos estrictos de píxeles, se recomienda pasar directamente `WIDTHxHEIGHT`.
> La salida en el rango de 1K no garantiza un alineamiento estricto de píxeles: si pasas `1024x1024`, podrías recibir `1254x1254`, manteniendo la proporción. Si lo vuelves a pasar como `size`, el cobro no cambiará.
> Las llamadas de 4K generalmente requieren de 4 a 8 minutos, se recomienda usarlo junto con el `callback_url` mencionado más adelante para callbacks asíncronos.

> **Sobre el parámetro `n`**
> `gpt-image-2` soporta `n > 1` (valores de 1 a 10): una sola solicitud puede devolver y cobrar por la cantidad correspondiente de imágenes. Para que los resultados múltiples tengan diferencias, se recomienda pasar diferentes `prompt` o `seed` al mismo tiempo. Esto también se aplica a `gpt-image-1` / `gpt-image-1.5`, así como a la serie `nano-banana` / `nano-banana-2-lite` / `nano-banana-2` / `nano-banana-pro`; `dall-e-3` solo soporta `n = 1`. Ten en cuenta que `response_format=b64_json` solo soporta `n=1`, para `n>1` utiliza el retorno de URL por defecto. Si algunas imágenes fallan en generarse, solo se devolverán y cobrarán las que se generaron con éxito.

A continuación, se presentan algunos ejemplos reales desde diferentes ángulos para experimentar de manera intuitiva la capacidad de `gpt-image-2`.

### Escena uno: Retrato cinematográfico

En las palabras clave se pueden usar términos cinematográficos (película de 35 mm, profundidad de campo reducida, luz de neón, etc.) para controlar con precisión la atmósfera y la textura.

Código de ejemplo en Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "gpt-image-2",
    "prompt": "Un retrato cinematográfico de una joven de pie en una tienda de conveniencia por la noche, iluminada por suaves letreros de neón rosa y cian a través de la ventana. Tomado en película de 35 mm, profundidad de campo reducida, ligero grano, estado de ánimo melancólico.",
    "size": "1024x1536"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

El resultado devuelto es el siguiente:

```json theme={null}
{
  "success": true,
  "task_id": "ab58a5df-6f46-4874-bff6-93169e2849a3",
  "created": 1777048800,
  "data": [
    {
      "revised_prompt": "Un retrato cinematográfico de una joven de pie en una tienda de conveniencia por la noche, iluminada por suaves letreros de neón rosa y cian a través de la ventana. Tomado en película de 35 mm, profundidad de campo reducida, ligero grano, estado de ánimo melancólico.",
      "url": "https://platform.cdn.acedata.cloud/gpt-image/ab58a5df-6f46-4874-bff6-93169e2849a3_0.png"
    }
  ]
}
```

La imagen generada se muestra a continuación:

<p>
  <img src="https://platform.cdn.acedata.cloud/gpt-image/ab58a5df-6f46-4874-bff6-93169e2849a3_0.png" width="500" className="m-auto" />
</p>

### Escena dos: Póster de viaje retro (con renderizado de texto)

`gpt-image-2` muestra un rendimiento estable en la tipografía y el renderizado de fuentes, lo que lo hace muy adecuado para generar diseños con texto como pósters, menús, tarjetas de felicitación, etc.

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "Un póster de viaje vintage de la Costa de Amalfi, Italia. Ilustración estilizada art-deco de casas amarillas de limón en acantilados que descienden hacia un mar turquesa, con un pequeño velero blanco en el puerto. Tipografía en negrita en la parte superior que dice AMALFI y en la parte inferior ITALIA 1958. Paleta de colores limitada: crema, azul marino, amarillo limón, terracota. Ligera textura de grano de papel.",
    "size": "1024x1536"
}
```

La imagen correspondiente al campo `url` en el resultado devuelto es la siguiente:

<p>
  <img src="https://platform.cdn.acedata.cloud/gpt-image/c6061f92-3fae-498e-af8e-688e7f415ba3_0.png" width="500" className="m-auto" />
</p>

Se puede ver que el modelo no solo reproduce con precisión el estilo visual del póster Art Deco, sino que el texto del título `AMALFI` y `ITALIA 1958` se ha renderizado de manera clara y correcta.

### Escena tres: Composición compleja y conteo

La siguiente palabra clave se utiliza para probar la capacidad del modelo para seguir instrucciones estructuradas sobre "cantidad" y "posición".

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "Una estantería de madera que consta de tres estantes: En el estante superior, debe haber un libro. En el segundo estante, debe haber tres libros. En el estante inferior, debe haber siete libros. Iluminación suave y cálida, fotorealista, atmósfera acogedora de biblioteca.",
    "size": "1024x1024"
}
```

La imagen generada es la siguiente:

<p>
  <img src="https://platform.cdn.acedata.cloud/gpt-image/64a3b932-a082-4cad-9f85-9d30474b104d_0.png" width="500" className="m-auto" />
</p>

Se puede ver que la cantidad de libros en los tres estantes (1 / 3 / 7) coincide completamente con la palabra clave, algo que era difícil de lograr de manera estable en la era de `dall-e-3`.

### Escena cuatro: Estilo de ilustración (horizontal)

Al especificar el medio artístico y las palabras clave emocionales, se puede guiar al modelo para producir ilustraciones estilizadas.

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "Una suave y poética ilustración de un libro infantil de un pequeño zorro leyendo un libro bajo un hongo brillante en un bosque iluminado por la luna. Textura de acuarela y lápiz, colores pastel suaves, atmósfera soñadora, sensación de dibujo a mano.",
    "size": "1536x1024"
}
```

La ilustración horizontal generada es la siguiente:

![](https://platform.cdn.acedata.cloud/gpt-image/6cd57e69-d237-4cc1-a666-759a93964a08_0.png)

### Asincronía y devolución de llamada

`gpt-image-2` generalmente requiere de 60 a 90 segundos para una sola llamada. Si no desea mantener una conexión prolongada, puede utilizar el mecanismo de devolución de llamada asíncrona `callback_url` que se describe más adelante en este artículo; el flujo de llamada es completamente consistente con otros modelos.

## Serie de modelos Nano Banana

La serie `nano-banana` es un modelo de generación de imágenes basado en Gemini, que se ha integrado a través de la misma interfaz `/openai/images/generations`, sin necesidad de cambiar el endpoint, solo necesita cambiar `model` a cualquiera de los que se enumeran a continuación.

| Modelo               | Costo (Créditos / vez) | Escenario aplicable                                                         |
| -------------------- | ---------------------- | --------------------------------------------------------------------------- |
| `nano-banana`        | 0.14                   | Generación de imágenes comunes, la más rápida y de menor costo              |
| `nano-banana-2-lite` | 0.14                   | Modelo de imagen ligero Gemini 3.1, solo admite 1K, baja latencia de salida |
| `nano-banana-2`      | 0.28                   | Calidad y detalles notablemente mejorados                                   |
| `nano-banana-pro`    | 0.35                   | El buque insignia de la serie, mejor en composición, detalles y texto       |

> **Importante: Rango de soporte de parámetros**
> Nano Banana se conecta a través de una capa de adaptación al protocolo de OpenAI, y en comparación con `gpt-image-*` solo admite los siguientes parámetros: `model`, `prompt`, `size`, `n`.
>
> * `size` se mapeará a `aspect_ratio` interno según la siguiente tabla; las dimensiones no listadas se degradarán a `1:1`:
>   * `1024x1024` / `512x512` / `256x256` → `1:1`
>   * `1792x1024` → `16:9`
>   * `1024x1792` → `9:16`
> * No se admiten parámetros como `quality`, `style`, `response_format`, `background`, `output_format`, etc.; si se ingresan, serán ignorados. `n > 1` es admitido (1–10), devolverá y cobrará por la cantidad correspondiente de imágenes.
> * La estructura de retorno sigue el formato de OpenAI (`data[].url`), pero `created` es fijo en `0`, y no se devolverá `b64_json`, `revised_prompt` siempre será igual al `prompt` original.

### Llamada básica

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "nano-banana",
    "prompt": "una pequeña manzana roja sobre una mesa blanca, fotorealista",
    "size": "1024x1024"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

El resultado devuelto es el siguiente:

```json theme={null}
{
  "created": 0,
  "data": [
    {
      "url": "https://platform.cdn.acedata.cloud/nanobanana/6870b330-65c4-436c-bb80-819fdae7a7a4.png",
      "revised_prompt": "una pequeña manzana roja sobre una mesa blanca, fotorealista"
    }
  ]
}
```

La imagen generada se puede acceder directamente a través del campo `url` devuelto:

<p>
  <img src="https://platform.cdn.acedata.cloud/nanobanana/6870b330-65c4-436c-bb80-819fdae7a7a4.png" width="500" className="m-auto" />
</p>

### Actualizar al modelo insignia `nano-banana-pro`

Solo necesita cambiar `model` a `nano-banana-pro`, los demás parámetros son completamente iguales:

```python theme={null}
payload = {
    "model": "nano-banana-pro",
    "prompt": "pintura abstracta",
    "size": "1024x1024"
}
```

Ejemplo de respuesta:

```json theme={null}
{
  "created": 0,
  "data": [
    {
      "url": "https://platform.cdn.acedata.cloud/nanobanana/6227fcc9-3442-4aa3-a76c-4a4441a99649.png",
      "revised_prompt": "pintura abstracta"
    }
  ]
}
```

<p>
  <img src="https://platform.cdn.acedata.cloud/nanobanana/6227fcc9-3442-4aa3-a76c-4a4441a99649.png" width="500" className="m-auto" />
</p>

### Callback asíncrono

El mecanismo de callback asíncrono `callback_url` también es efectivo para nano-banana, el flujo de llamada es completamente igual que con otros modelos, consulte la sección [Callback asíncrono](#异步回调) a continuación.

## Uso básico

A continuación, puede completar el contenido correspondiente en la interfaz, como se muestra en la imagen:

<p>
  <img src="https://cdn.acedata.cloud/zv58ug.png" width="500" className="m-auto" />
</p>

Al usar esta interfaz por primera vez, necesitamos completar al menos tres contenidos, uno es `authorization`, que se puede seleccionar directamente en la lista desplegable. Otro parámetro es `model`, `model` es la categoría del modelo que elegimos usar del sitio web de OpenAI DALL-E, aquí tenemos principalmente 1 tipo de modelo, los detalles se pueden ver en los modelos que proporcionamos. El último parámetro es `prompt`, `prompt` es la palabra clave que ingresamos para generar la imagen.

Al mismo tiempo, puede notar que a la derecha hay un código de llamada correspondiente generado, puede copiar el código y ejecutarlo directamente, o puede hacer clic en el botón "Probar" para realizar pruebas.

<p>
  <img src="https://cdn.acedata.cloud/pbss4f.png" width="500" className="m-auto" />
</p>

Código de llamada de ejemplo en Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "Una linda cría de nutria marina"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Después de la llamada, encontramos que el resultado devuelto es el siguiente:

```json theme={null}
{
  "created": 1721626477,
  "data": [
    {
      "revised_prompt": "Una imagen encantadora que muestra a una joven nutria marina, que nace marrón, con ojos encantadores y grandes. Está deliciosamente acostada de espaldas, remando en las tranquilas aguas del mar. Su densa y aterciopelada piel parece húmeda y brillante, capturando la esencia de su hábitat. La pequeña criatura juega curiosamente con una concha marina con sus pequeñas patas, luciendo absolutamente inocente y encantadora en su entorno natural.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/5d98aa7c-80c6-4523-b571-fc606ad455b9/generated_00.png?se=2024-07-23T05%3A34%3A48Z&sig=GAz%2Bi3%2BkHOQwAMhxcv22tBM%2FaexrxPgT9V0DbNrL4ik%3D&ske=2024-07-23T08%3A41%3A10Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T08%3A41%3A10Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
```

El resultado devuelto tiene varios campos, que se describen a continuación:

* `created`, ID de la generación de esta imagen, utilizado para identificar de manera única esta tarea.
* `data`, contiene la información del resultado de la generación de la imagen.

Dentro de `data` se incluye la información específica de la imagen generada por el modelo, donde `url` es el enlace detallado de la imagen generada, como se puede ver en la imagen.

<p>
  <img src="https://cdn.acedata.cloud/dz7u0x.png" width="500" className="m-auto" />
</p>

## Parámetro de calidad de imagen `quality`

A continuación, se presentará cómo configurar algunos parámetros detallados del resultado de la generación de imágenes, donde el parámetro de calidad de imagen `quality` incluye dos tipos, el primero `standard` indica que se genera una imagen estándar, el otro `hd` indica que la imagen creada tiene detalles más finos y mayor consistencia.

A continuación, se establece el parámetro de calidad de la imagen en `standard`, la configuración específica se muestra en la siguiente imagen:

<p>
  <img src="https://cdn.acedata.cloud/1q303w.png" width="500" className="m-auto" />
</p>

Al mismo tiempo, puede notar que a la derecha hay un código de llamada correspondiente generado, puede copiar el código y ejecutarlo directamente, o puede hacer clic en el botón "Probar" para realizar pruebas.

<p>
  <img src="https://cdn.acedata.cloud/c0ps6i.png" width="500" className="m-auto" />
</p>

Código de llamada de ejemplo en Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "Una linda cría de nutria marina",
    "quality": "standard"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Después de la llamada, encontramos que el resultado devuelto es el siguiente:

```json theme={null}
{
  "created": 1721636023,
  "data": [
    {
      "revised_prompt": "Una linda cría de nutria marina está acostada juguetonamente de espaldas en el agua, con su pelaje luciendo brillante y suave. Una de sus pequeñas patas se extiende curiosamente, y tiene una expresión de pura alegría y calidez en su rostro mientras mira al cielo. Su cuerpo está rodeado de burbujas de su jugueteo en el agua. Una suave brisa juega con su pelaje haciéndolo lucir más encantador. La escena retrata la tranquilidad y el encanto de la vida marina.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/a93ee5e7-3abd-4923-8d79-dc9ef126da46/generated_00.png?se=2024-07-23T08%3A13%3A55Z&sig=wTXGYvUOwUIkaB2CxjK9ww%2FHjS8OwYUWcYInXYKwcAM%3D&ske=2024-07-23T11%3A32%3A05Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T11%3A32%3A05Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
```

返回的结果与基本使用的内容一致，可以看到图片质量参数为 `standard` 的生成图片如下图所示：

<p>
  <img src="https://cdn.acedata.cloud/j5v15b.png" width="500" className="m-auto" />
</p>

与上述相同操作，仅需将图片质量参数设置为 `hd` ，可以得到如下图所示的图片：

<p>
  <img src="https://cdn.acedata.cloud/vjpbqr.png" width="500" className="m-auto" />
</p>

可以看到 `hd` 比 `standard` 生成的图片具有更精细的细节和更大的一致性。

## 图片大小尺寸参数 `size`

我们还可以设置生成图片的尺寸大小，我们可以进行下面的设置。

下面设置图片的尺寸大小为 `1024 * 1024` ，具体设置如下图：

<p>
  <img src="https://cdn.acedata.cloud/dx5rwh.png" width="500" className="m-auto" />
</p>

同时您可以注意到右侧有对应的调用代码生成，您可以复制代码直接运行，也可以直接点击「Try」按钮进行测试。

<p>
  <img src="https://cdn.acedata.cloud/0sbybl.png" width="500" className="m-auto" />
</p>

Python 样例调用代码：

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter"
    "size": "1024x1024"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

调用之后，我们发现返回结果如下：

```json theme={null}
{
  "created": 1721636652,
  "data": [
    {
      "revised_prompt": "A delightful depiction of a baby sea otter. The small mammal is captured in its natural habitat in the ocean, floating on its back. It has thick brown fur that is sleek and wet from the sea water. Its eyes are closed as if it is enjoying a moment of deep relaxation. The water around it is calm, reflecting the peacefulness of the scene. The background should hint at a diverse marine ecosystem, with visible strands of kelp floating on the surface, suggesting the baby otter's preferred environment.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/9d625ac6-fd2b-42a9-84a6-8c99eb357ccf/generated_00.png?se=2024-07-23T08%3A24%3A24Z&sig=AXtYXowEakGxfRp8LhC2DwqL%2F07LhEDW40oCP%2BdTO8s%3D&ske=2024-07-23T18%3A00%3A45Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T18%3A00%3A45Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
```

返回的结果与基本使用的内容一致，可以看到图片的尺寸大小为 `1024 * 1024` 的生成图片如下图所示：

<p>
  <img src="https://cdn.acedata.cloud/o4pvvx.png" width="500" className="m-auto" />
</p>

与上述相同操作，仅需将图片的尺寸大小为 `1792 * 1024` ，可以得到如下图所示的图片：

![](https://cdn.acedata.cloud/4pilae.png)

可以看到图片的尺寸大小很明显不一样，另外还可以设置更多尺寸大小，详情信息参考我们官网文档。

## 图片风格参数 `style`

图片风格参数 `style` 包含俩个参数，第一种 `vivid` 表示生成的图片是更加生动的，另一种 `natural` 表示生成的图片更加的自然一点。

下面设置图片风格参数为 `vivid` ，具体设置如下图：

<p>
  <img src="https://cdn.acedata.cloud/609l9i.png" width="500" className="m-auto" />
</p>

同时您可以注意到右侧有对应的调用代码生成，您可以复制代码直接运行，也可以直接点击「Try」按钮进行测试。

<p>
  <img src="https://cdn.acedata.cloud/ee3u9o.png" width="500" className="m-auto" />
</p>

Python 样例调用代码：

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter",
    "style": "vivid"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

调用之后，我们发现返回结果如下：

```json theme={null}
{
  "created": 1721637086,
  "data": [
    {
      "revised_prompt": "A baby sea otter with soft, shiny fur and sparkling eyes floating playfully on calm ocean waters. This adorable creature is trippingly frolicking amidst small, gentle waves under a bright, clear, sunny sky. The tranquility of the sea contrasts subtly with the delightful energy of this young otter. The critter gamely clings to a tiny piece of driftwood, its small paws adorably enveloping the floating object.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/6e48f701-7fd3-4356-839e-a2f6f0fe82d9/generated_00.png?se=2024-07-23T08%3A31%3A37Z&sig=4percxqTbUR1j3BQmkhvj%2FAhHzInKI%2FqiTo1MP69coI%3D&ske=2024-07-27T10%3A39%3A55Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-20T10%3A39%3A55Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
```

返回的结果与基本使用的内容一致，可以看到图片风格参数为 `vivid` 的生成图片如下图所示：

<p>
  <img src="https://cdn.acedata.cloud/e0rpc3.png" width="500" className="m-auto" />
</p>

与上述相同操作，仅需将图片风格参数为 `natural` ，可以得到如下图所示的图片：

<p>
  <img src="https://cdn.acedata.cloud/q9tqwu.png" width="500" className="m-auto" />
</p>

可以看到 `vivid` 比 `natural` 生成的图片具有更加生动逼真。

## 图片链接的格式参数 `response_format`

最后一个图片链接的格式参数 `response_format` 也有俩种，第一种 `b64_json` 是对图片链接进行 Base64 编码，另一种 `url` 就是普通的图片链接，可以直接查看图片。

下面设置图片链接的格式参数为 `url` ，具体设置如下图：

<p>
  <img src="https://cdn.acedata.cloud/2zbgrg.png" width="500" className="m-auto" />
</p>

同时您可以注意到右侧有对应的调用代码生成，您可以复制代码直接运行，也可以直接点击「Try」按钮进行测试。

<p>
  <img src="https://cdn.acedata.cloud/a9exmp.png" width="500" className="m-auto" />
</p>

Código de ejemplo en Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "Una linda cría de nutria marina",
    "response_format": "url"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Después de la llamada, encontramos que el resultado devuelto es el siguiente:

```json theme={null}
{
  "created": 1721637575,
  "data": [
    {
      "revised_prompt": "Una encantadora representación de una cría de nutria marina. La nutria se ve descansando serenamente sobre su espalda en medio de las suaves olas azules del océano. El pelaje de la cría de nutria es una mezcla entrañable de tonos marrón grisáceo suave, brillando sutilmente bajo la luz del sol tenue. Sus pequeñas patas están tocando, levantadas ligeramente hacia el cielo como si estuvieran jugando con un objeto invisible. Sus ojos redondos y expresivos están abiertos de curiosidad, chispeando con vida e inocencia. Usa un estilo realista para evocar el hábitat natural de la nutria y su exterior adorablemente esponjoso.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/87792c5f-8b6d-412e-81dd-f1a1baa19bd2/generated_00.png?se=2024-07-23T08%3A39%3A47Z&sig=zzRAn30TqIKHdLVqZPUUuSJdjCYpoJdaGU6BeoA76Jo%3D&ske=2024-07-23T13%3A32%3A13Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T13%3A32%3A13Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
```

El resultado devuelto es consistente con el contenido de uso básico, se puede ver que el enlace de la imagen con el parámetro de formato `url` para la imagen generada es [URL de la imagen](https://dalleprodsec.blob.core.windows.net/private/images/87792c5f-8b6d-412e-81dd-f1a1baa19bd2/generated_00.png?se=2024-07-23T08%3A39%3A47Z\&sig=zzRAn30TqIKHdLVqZPUUuSJdjCYpoJdaGU6BeoA76Jo%3D\&ske=2024-07-23T13%3A32%3A13Z\&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96\&sks=b\&skt=2024-07-16T13%3A32%3A13Z\&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d\&skv=2020-10-02\&sp=r\&spr=https\&sr=b\&sv=2020-10-02) esto se puede acceder directamente, el contenido de la imagen se muestra a continuación:

<p>
  <img src="https://cdn.acedata.cloud/33hs4z.png" width="500" className="m-auto" />
</p>

Con la misma operación anterior, simplemente cambiando el parámetro de formato del enlace de la imagen a `b64_json`, se puede obtener el resultado del enlace de la imagen codificado en Base64, el resultado específico se muestra a continuación:

```json theme={null}
{
  "created": 1721638071,
  "data": [
    {
      "b64_json": "iVBORw0..............v//AQEAAP4AAAD+AAADAQAAAwEEA/4D//8Q/Pbw64mKbVTFoQAAAABJRU5ErkJggg==",
      "revised_prompt": "Una encantadora imagen de una joven cría de nutria marina. La nutria flota suavemente en un mar azul tranquilo, disfrutando de los cálidos rayos dorados del sol que caen desde un cielo despejado arriba. El pelaje de la nutria es de un rico marrón chocolate, y parece increíblemente suave y esponjoso. Los ojos de la nutria son brillantes y expresivos, llenos de curiosidad infantil y alegría. Tiene pequeñas orejas puntiagudas y una nariz parecida a un botón que añade a su ternura general. En el mar a su alrededor, se pueden ver gotas de agua brillantes, animadas por la luz del sol, la vista es sin duda encantadora."
    }
  ]
}
```

## Callback asíncrono

Dado que el tiempo de generación de imágenes de la API de OpenAI puede ser relativamente largo, si la API no responde durante un tiempo prolongado, la solicitud HTTP mantendrá la conexión, lo que provocará un consumo adicional de recursos del sistema, por lo que esta API también ofrece soporte para callbacks asíncronos.

El flujo general es: cuando el cliente inicia la solicitud, se especifica un campo adicional `callback_url`, después de que el cliente inicia la solicitud de API, la API devolverá inmediatamente un resultado que incluye un campo de información `task_id`, que representa el ID de la tarea actual. Cuando la tarea se completa, el resultado de la imagen generada se enviará a la `callback_url` especificada por el cliente en formato JSON POST, que también incluye el campo `task_id`, de esta manera el resultado de la tarea se puede asociar a través del ID.

A continuación, entenderemos cómo operar específicamente a través de un ejemplo.

Primero, el callback de Webhook es un servicio que puede recibir solicitudes HTTP, los desarrolladores deben reemplazarlo con la URL de su propio servidor HTTP. Aquí, para facilitar la demostración, se utiliza un sitio web de muestra de Webhook público [https://webhook.site/](https://webhook.site/), al abrir este sitio se obtiene una URL de Webhook, como se muestra en la imagen:

![](https://cdn.acedata.cloud/cjjfly.png)

Copie esta URL y podrá usarla como Webhook, el ejemplo aquí es `https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab`.

A continuación, podemos establecer el campo `callback_url` como la URL de Webhook anterior, al mismo tiempo que llenamos los parámetros correspondientes, como se muestra en el siguiente código:

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "Una linda cría de nutria marina",
    "callback_url": "https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Al hacer clic en ejecutar, se puede observar que se obtiene inmediatamente un resultado, como se muestra a continuación:

```json theme={null}
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
```

Después de un momento, podemos observar el resultado de la imagen generada en la URL de Webhook, el contenido es el siguiente:

```json theme={null}
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "revised_prompt": "Una imagen encantadora que muestra una joven nutria marina...",
        "url": "https://dalleprodsec.blob.core.windows.net/private/images/..."
      }
    ]
  }
}
```

Se puede ver que en el resultado hay un campo `task_id`, el campo `data` contiene el mismo resultado de generación de imágenes que la llamada sincrónica, a través del campo `task_id` se puede lograr la asociación de la tarea.

## Manejo de errores

Al llamar a la API, si se encuentra con un error, la API devolverá el código de error correspondiente y la información. Por ejemplo:

* `400 token_mismatched`：Solicitud incorrecta, posiblemente debido a parámetros faltantes o inválidos.
* `400 api_not_implemented`：Solicitud incorrecta, posiblemente debido a parámetros faltantes o inválidos.
* `401 invalid_token`：No autorizado, token de autorización inválido o faltante.
* `429 too_many_requests`：Demasiadas solicitudes, ha superado el límite de tasa.
* `500 api_error`：Error interno del servidor, algo salió mal en el servidor.

### Ejemplo de respuesta de error

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "la recuperación falló"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Conclusión

A través de este documento, ha aprendido cómo utilizar la API de Generación de Imágenes de OpenAI para usar fácilmente la función de generación de imágenes oficial de OpenAI DALL-E. Esperamos que este documento le ayude a integrar y utilizar mejor esta API. Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro equipo de soporte técnico.
