> ## 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.

# OpenAI 이미지 생성 API 신청 및 사용

> OpenAI generation API guide - Ace Data Cloud

OpenAI 이미지 생성 API는 현재 다양한 이미지 생성 모델을 지원합니다. 여기에는 고전적인 `dall-e-3`, 텍스트 렌더링 능력이 더 강한 `gpt-image-1`, 최신 세대의 **`gpt-image-2`**, 그리고 동일한 인터페이스로 접속할 수 있는 **`nano-banana` / `nano-banana-2-lite` / `nano-banana-2` / `nano-banana-pro`** 시리즈 모델이 포함됩니다. 이들은 모두 텍스트 설명에 따라 고품질 이미지를 생성할 수 있습니다.

이 문서는 OpenAI 이미지 생성 API 작업의 사용 흐름을 주로 소개하며, 이를 통해 OpenAI 시리즈의 이미지 생성 기능을 쉽게 사용할 수 있습니다.

## 신청 흐름

OpenAI 이미지 생성 API를 사용하려면 먼저 [Ace Data Cloud 콘솔](https://platform.acedata.cloud/console/applications)에서 API 토큰을 받아야 하며, 이를 보관해 두어야 합니다.

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

로그인 또는 등록이 되어 있지 않은 경우, 자동으로 로그인 페이지로 리디렉션되어 등록 및 로그인을 초대합니다. 완료 후 현재 페이지로 자동으로 돌아옵니다.

**하나의 API 토큰으로 플랫폼의 모든 서비스를 호출할 수 있으며, 각 서비스에 대해 별도로 신청할 필요가 없습니다.** 처음 신청 시 무료 크레딧이 제공되어 무료로 체험할 수 있으며, 크레딧이 부족할 경우 [콘솔](https://platform.acedata.cloud/console/coin)에서 일반 잔액을 충전할 수 있습니다.

> 📘 전체 문서: [OpenAI 이미지 생성 API →](https://platform.acedata.cloud/documents/openai-images-generations)

## GPT-Image-2 모델

`gpt-image-2`는 OpenAI에서 출시한 새로운 세대의 이미지 생성 모델로, `dall-e-3` 및 `gpt-image-1`에 비해 다음과 같은 면에서 뚜렷한 향상이 있습니다:

* **지시 준수 능력이 더 강함**: 복잡한 구성, 수량, 위치 관계 등의 구조화된 지시를 정확하게 이해할 수 있습니다.
* **텍스트 렌더링이 더 선명함**: 포스터, 메뉴, 인포그래픽, 로고 등에서 영어와 숫자가 거의 혼란 없이 표현됩니다.
* **스타일 표현이 더 풍부함**: 영화 같은 인물 사진, 복고풍 포스터, 아동 일러스트, 제품 사진, 인포그래픽 등 다양한 스타일을 원활하게 지원합니다.
* **원주율 다중 비율 + 고해상도 지원**: 5가지 비율(1:1, 4:3, 3:4, 16:9, 9:16)과 3단계 해상도(1K / 2K / 4K)를 지원합니다.

호출 방식은 다른 모델과 완전히 동일하며, `model` 필드를 `gpt-image-2`로 설정하기만 하면 됩니다. 반환 결과의 `url`은 `platform.cdn.acedata.cloud`에 영구적으로 호스팅되는 이미지 링크로, 브라우저에서 직접 열거나 웹페이지에 삽입할 수 있습니다.

### 공식 중계 / 역방향 변형(`:official` / `:reverse`)

`gpt-image-2`는 기본적으로 역방향 경로를 사용합니다. 모델 이름 접미사를 통해 경로를 명시적으로 선택할 수 있습니다:

* **`gpt-image-2:official`**: 공식 중계 경로. `n > 1`(한 번에 여러 장 반환) 및 실제 2K / 4K 해상도를 지원하며, **각 이미지당 요금이 부과되며, 단가는 기본 `gpt-image-2`의 2배입니다**. 현재 openai-hk 채널에서만 제공되며, 경로가 사용 불가능할 경우 직접 오류를 반환하고 역방향 경로로 하향 조정되지 않습니다.
* **`gpt-image-2:reverse`**: 기본 `gpt-image-2`와 완전히 동등하며(역방향 경로), 역방향 경로를 명시적으로 선언하는 데 사용되며, 가격은 변하지 않습니다.

> 아래 "n 매개변수에 대한 제한"은 기본 / 역방향 경로에만 적용됩니다; `gpt-image-2:official`은 `n > 1`을 지원하며 장당 요금이 부과됩니다.

### 지원되는 `size` 값

`gpt-image-2`는 `size`의 형식만 확인하며, `auto` 또는 빈 문자열이 아닌 경우 `WIDTHxHEIGHT`(예: `1024x1024`, `2048x1152`, `800x600`)와 일치해야 합니다; 다른 형태는 400을 반환합니다. **모든 크기(1K / 2K / 4K / 사용자 정의)는 단일 이미지에 대해 통일된 요금이 부과되며, 크기에 따라 추가 요금이 부과되지 않습니다.**

상위에서 사용자 정의 크기에 대한 엄격한 제약: 너비와 높이는 모두 16의 배수여야 하며, 긴 변 ≤ 3840, 총 픽셀 수 ≤ 8,294,400. 범위를 초과하면 상위에서 거부되고 4xx로 반환됩니다.

| 비율   | 1K 추천       | 2K 추천       | 4K 추천       |
| ---- | ----------- | ----------- | ----------- |
| 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` |

> `size: "auto"`를 전달하거나 **`size` 필드를 생략**할 수도 있으며, 이 경우 모델이 기본 크기를 선택합니다.
> 1K 단계에서 상위 출력은 엄격한 픽셀 정렬을 보장하지 않습니다—당신이 `1024x1024`를 전달하면 `1254x1254`를 받을 수 있으며, 비율은 일관성을 유지합니다. 만약 이를 다시 `size`로 전달하면 요금은 변하지 않습니다.
> 4K 단일 호출은 일반적으로 4–8분이 소요되며, 후속 문서의 `callback_url` 비동기 콜백과 함께 사용하는 것이 좋습니다.

> **n 매개변수에 대한 설명**
> `gpt-image-2`는 현재 **`n > 1`을 지원하지 않습니다**: 이 매개변수는 조용히 무시되며, `n=1` 또는 `n=10`을 전달하더라도 단일 요청은 항상 1장의 이미지만 반환되며, 1장에 대해서만 요금이 부과됩니다. 여러 후보 이미지를 한 번에 얻으려면 **자체적으로 여러 요청을 병렬로 발송해야 합니다**(다른 `prompt` 또는 다른 `seed`를 동시에 전달하는 것이 좋으며, 그렇지 않으면 얻는 여러 장의 이미지가 매우 유사할 수 있습니다). 이 제한은 `gpt-image-1` / `gpt-image-1.5`, 그리고 `nano-banana` / `nano-banana-2-lite` / `nano-banana-2` / `nano-banana-pro` 시리즈에도 동일하게 적용됩니다. `dall-e-2`는 현재 유일하게 원주율 `n > 1`을 지원하는 모델이며, `dall-e-3`는 `n = 1`만 지원합니다.

아래는 `gpt-image-2`의 능력을 직관적으로 느낄 수 있는 몇 가지 다른 방향의 실제 예시입니다.

### 장면 1: 영화 같은 인물 사진

프롬프트에서 영화 용어(35mm 필름, 얕은 심도, 네온 조명 등)를 사용하여 분위기와 질감을 정밀하게 제어할 수 있습니다.

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": "편의점에서 밤에 서 있는 젊은 여성의 영화 같은 초상화, 창문을 통해 부드러운 분홍색과 청록색 네온 사인에 의해 조명이 비춰진 모습. 35mm 필름으로 촬영, 얕은 심도, 약간의 그레인, 우울한 분위기.",
    "size": "1024x1536"
}

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

반환 결과는 다음과 같습니다:

```json theme={null}
{
  "success": true,
  "task_id": "ab58a5df-6f46-4874-bff6-93169e2849a3",
  "created": 1777048800,
  "data": [
    {
      "revised_prompt": "편의점에서 밤에 서 있는 젊은 여성의 영화 같은 초상화, 창문을 통해 부드러운 분홍색과 청록색 네온 사인에 의해 조명이 비춰진 모습. 35mm 필름으로 촬영, 얕은 심도, 약간의 그레인, 우울한 분위기.",
      "url": "https://platform.cdn.acedata.cloud/gpt-image/ab58a5df-6f46-4874-bff6-93169e2849a3_0.png"
    }
  ]
}
```

생성된 이미지는 다음과 같습니다:

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

### 장면 2: 복고풍 여행 포스터 (텍스트 렌더링 포함)

`gpt-image-2`는 타이포그래피와 글꼴 렌더링에서 안정적인 성능을 보여주며, 포스터, 메뉴, 카드 등 텍스트가 포함된 디자인 작업에 매우 적합합니다.

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "이탈리아 아말피 해안의 복고풍 여행 포스터. 절벽에 있는 레몬 노란색 집들이 청록색 바다로 이어지는 아르데코 스타일의 일러스트레이션, 항구에 작은 흰색 세일보트가 있습니다. 상단에는 AMALFI라는 대담한 타이포그래피가, 하단에는 ITALIA 1958이 적혀 있습니다. 제한된 색상 팔레트: 크림색, 바다 파랑, 레몬 노랑, 테라코타. 약간의 종이 그레인 질감.",
    "size": "1024x1536"
}
```

반환 결과의 `url` 필드에 해당하는 이미지는 다음과 같습니다:

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

모델이 아르데코 포스터의 시각적 스타일을 정확하게 재현했으며, 제목 텍스트 `AMALFI`와 `ITALIA 1958`가 모두 선명하고 정확하게 렌더링되었습니다.

### 장면 3: 복잡한 구성 및 수량

다음의 프롬프트는 모델이 "수량"과 "위치"와 같은 구조화된 지침을 따르는 능력을 테스트하기 위해 사용됩니다.

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "세 개의 선반으로 구성된 나무 책장: 맨 위 선반에는 한 권의 책이 있어야 합니다. 두 번째 선반에는 세 권의 책이 있어야 합니다. 맨 아래 선반에는 일곱 권의 책이 있어야 합니다. 부드러운 따뜻한 조명, 포토리얼리스틱, 아늑한 도서관 분위기.",
    "size": "1024x1024"
}
```

생성된 이미지는 다음과 같습니다:

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

세 개의 선반에 있는 책의 수(1 / 3 / 7)가 프롬프트와 완전히 일치하는 것을 볼 수 있으며, 이는 `dall-e-3` 시대에는 안정적으로 이루어지기 어려운 일이었습니다.

### 장면 4: 일러스트 스타일 (가로형)

예술 매체와 감정 키워드를 지정함으로써 모델이 스타일화된 일러스트를 생성하도록 유도할 수 있습니다.

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "달빛이 비치는 숲 속에서 빛나는 버섯 아래에서 책을 읽고 있는 작은 여우의 부드럽고 시적인 어린이 책 일러스트. 수채화와 연필 질감, 부드러운 파스텔 색상, 꿈같은 분위기, 손으로 그린 느낌.",
    "size": "1536x1024"
}
```

생성된 가로형 일러스트는 다음과 같습니다:

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

### 비동기 및 콜백

`gpt-image-2`의 단일 호출은 일반적으로 60\~90초가 소요되며, 긴 연결을 유지하고 싶지 않은 경우, 본문 후속에서 소개하는 `callback_url` 비동기 콜백 메커니즘을 사용할 수 있으며, 호출 프로세스는 다른 모델과 완전히 동일합니다.

## 나노 바나나 시리즈 모델

`nano-banana` 시리즈는 Gemini 기반의 이미지 생성 모델로, 동일한 `/openai/images/generations` 인터페이스를 통해 접속할 수 있으며, 엔드포인트를 전환할 필요 없이 `model`을 아래 표의 임의의 값으로 변경하면 됩니다.

| 모델                   | 요금 (크레딧 / 회) | 적합한 장면                                          |
| -------------------- | ------------ | ----------------------------------------------- |
| `nano-banana`        | 0.14         | 일반 이미지 생성, 가장 빠르고 비용이 가장 낮음                     |
| `nano-banana-2-lite` | 0.14         | Gemini 3.1 경량 이미지 모델, 1K만 지원, 낮은 지연 시간으로 이미지 생성 |
| `nano-banana-2`      | 0.28         | 품질과 세부 사항이 현저히 향상됨                              |
| `nano-banana-pro`    | 0.35         | 시리즈의 플래그십, 구성, 세부 사항, 텍스트 모두 최상                 |

> **중요: 매개변수 지원 범위**
> 나노 바나나는 적응 계층을 통해 OpenAI 프로토콜에 접속하며, `gpt-image-*`와 비교하여 다음 매개변수만 지원합니다: `model`, `prompt`, `size`.
>
> * `size`는 아래 표에 따라 내부 `aspect_ratio`로 매핑되며, 나열되지 않은 크기는 `1:1`로 축소됩니다:
>   * `1024x1024` / `512x512` / `256x256` → `1:1`
>   * `1792x1024` → `16:9`
>   * `1024x1792` → `9:16`
> * `n`, `quality`, `style`, `response_format`, `background`, `output_format` 등의 매개변수는 지원되지 않으며, 입력해도 무시됩니다.
> * 반환 구조는 OpenAI 형식을 따르며 (`data[].url`), `created`는 고정적으로 `0`이며, `b64_json`은 반환되지 않으며, `revised_prompt`는 항상 원래 `prompt`와 동일합니다.

### 기본 호출

```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": "하얀 테이블 위에 작은 빨간 사과, 포토리얼",
    "size": "1024x1024"
}

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

반환 결과는 다음과 같습니다:

```json theme={null}
{
  "created": 0,
  "data": [
    {
      "url": "https://platform.cdn.acedata.cloud/nanobanana/6870b330-65c4-436c-bb80-819fdae7a7a4.png",
      "revised_prompt": "하얀 테이블 위에 작은 빨간 사과, 포토리얼"
    }
  ]
}
```

생성된 이미지는 반환된 `url` 필드를 통해 직접 접근할 수 있습니다:

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

### 플래그십 모델 `nano-banana-pro`로 업그레이드

`model`을 `nano-banana-pro`로 변경하면 나머지 매개변수는 완전히 동일합니다:

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

반환 예시:

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

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

### 비동기 콜백

`callback_url` 비동기 콜백 메커니즘은 nano-banana에도 동일하게 적용되며, 호출 프로세스는 다른 모델과 완전히 일치합니다. 자세한 내용은 아래 [비동기 콜백](#비동기-콜백) 섹션을 참조하십시오.

## 기본 사용

이제 인터페이스에 해당 내용을 입력할 수 있습니다. 아래 그림과 같이:

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

이 인터페이스를 처음 사용할 때, 우리는 최소한 세 가지 내용을 입력해야 합니다. 하나는 `authorization`으로, 드롭다운 목록에서 직접 선택할 수 있습니다. 또 다른 매개변수는 `model`이며, `model`은 우리가 OpenAI DALL-E 공식 모델 카테고리를 선택하는 것입니다. 여기서는 주로 1종의 모델이 있으며, 자세한 내용은 제공된 모델을 참조하십시오. 마지막 매개변수는 `prompt`로, `prompt`는 우리가 생성할 이미지의 힌트를 입력하는 것입니다.

또한 오른쪽에 해당 호출 코드 생성이 있음을 주목할 수 있으며, 코드를 복사하여 직접 실행하거나 "Try" 버튼을 클릭하여 테스트할 수 있습니다.

<p>
  <img src="https://cdn.acedata.cloud/pbss4f.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"
}

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

호출 후, 우리는 반환 결과가 다음과 같음을 발견했습니다:

```json theme={null}
{
  "created": 1721626477,
  "data": [
    {
      "revised_prompt": "A delightful image showcasing a young sea otter, who is born brown, with wide charming eyes. It is delightfully lying on its back, paddling in the calm sea waters. Its dense, velvety fur appears wet and shimmering, capturing the essence of its habitat. The small creature curiously plays with a sea shell with its small paws, looking absolutely innocent and charming in its natural environment.",
      "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"
    }
  ]
}
```

반환 결과는 여러 필드를 포함하며, 설명은 다음과 같습니다:

* `created`는 이번 이미지 생성의 ID로, 이번 작업을 고유하게 식별하는 데 사용됩니다.
* `data`는 이미지 생성의 결과 정보를 포함합니다.

그 중 `data`는 모델이 생성한 이미지의 구체적인 정보를 포함하고 있으며, 그 안의 `url`은 생성된 이미지의 세부 링크입니다. 아래 그림과 같이 확인할 수 있습니다.

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

## 이미지 품질 매개변수 `quality`

다음으로 이미지 생성 결과의 일부 세부 매개변수를 설정하는 방법을 소개합니다. 이미지 품질 매개변수 `quality`는 두 가지가 있습니다. 첫 번째 `standard`는 표준 이미지를 생성하는 것을 의미하고, 두 번째 `hd`는 생성된 이미지가 더 세밀한 세부 사항과 더 큰 일관성을 갖는 것을 의미합니다.

아래는 이미지 품질 매개변수를 `standard`로 설정하는 방법입니다. 구체적인 설정은 아래 그림과 같습니다:

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

또한 오른쪽에 해당 호출 코드 생성이 있음을 주목할 수 있으며, 코드를 복사하여 직접 실행하거나 "Try" 버튼을 클릭하여 테스트할 수 있습니다.

<p>
  <img src="https://cdn.acedata.cloud/c0ps6i.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",
    "quality": "standard"
}

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

호출 후, 우리는 반환 결과가 다음과 같음을 발견했습니다:

```json theme={null}
{
  "created": 1721636023,
  "data": [
    {
      "revised_prompt": "A cute baby sea otter is lying playfully on its back in the water, with its fur looking glossy and soft. One of its tiny paws is reaching out curiously, and it has an expression of pure joy and warmth on its face as it looks up to the sky. Its body is surrounded by bubbles from its playful twirling in the water. A gentle breeze is playing with its fur making it look more charming. The scene portrays the tranquility and charm of marine life.",
      "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>

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": "귀여운 아기 바다 수달",
    "response_format": "url"
}

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

호출 후, 우리는 반환 결과가 다음과 같음을 발견했습니다:

```json theme={null}
{
  "created": 1721637575,
  "data": [
    {
      "revised_prompt": "아기 바다 수달의 매력적인 묘사. 수달은 부드러운 파란 바다 물결 속에서 평화롭게 등을 대고 쉬고 있습니다. 아기 수달의 털은 부드러운 회색 갈색 음영의 사랑스러운 혼합으로, 부드러운 햇빛 속에서 미세하게 반짝입니다. 작은 발은 하늘을 향해 약간 들어올려져 있으며, 보이지 않는 물체와 놀고 있는 듯합니다. 둥글고 표현력이 풍부한 눈은 호기심으로 가득 차 있으며, 생명과 순수함이 넘칩니다. 수달의 자연 서식지와 사랑스럽게 푹신한 외관을 불러일으키기 위해 사실적인 스타일을 사용하세요.",
      "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"
    }
  ]
}
```

반환된 결과는 기본 사용 내용과 일치하며, 이미지 링크의 형식 매개변수인 `url`의 생성된 이미지 링크는 [이미지 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)로 직접 접근할 수 있으며, 이미지 내용은 아래 그림과 같습니다:

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

위와 동일한 작업을 수행하면, 이미지 링크의 형식 매개변수를 `b64_json`으로 설정하여 Base64 인코딩된 이미지 링크를 얻을 수 있으며, 구체적인 결과는 아래 그림과 같습니다:

```json theme={null}
{
  "created": 1721638071,
  "data": [
    {
      "b64_json": "iVBORw0..............v//AQEAAP4AAAD+AAADAQAAAwEEA/4D//8Q/Pbw64mKbVTFoQAAAABJRU5ErkJggg==",
      "revised_prompt": "젊은 아기 바다 수달의 매력적인 이미지. 수달은 잔잔한 푸른 바다 위에서 부드러운 햇빛이 쏟아지는 맑은 하늘 아래에서 따뜻한 금빛 햇살을 받으며 떠 있습니다. 수달의 털은 진한 초콜릿 갈색이며, 믿을 수 없을 만큼 부드럽고 푹신해 보입니다. 수달의 눈은 밝고 표현력이 풍부하며, 어린아이 같은 호기심과 기쁨으로 가득 차 있습니다. 작은 뾰족한 귀와 단추 같은 코는 전체적인 귀여움을 더해줍니다. 주변 바다에는 햇빛에 반짝이는 물방울들이 보이며, 그 모습은 확실히 즐거운 장면입니다."
    }
  ]
}
```

## 비동기 콜백

OpenAI Images Generations API가 이미지를 생성하는 데 시간이 다소 걸릴 수 있으므로, API가 오랜 시간 응답하지 않으면 HTTP 요청이 연결을 유지하여 추가 시스템 리소스 소모를 초래할 수 있습니다. 따라서 이 API는 비동기 콜백 지원도 제공합니다.

전체 프로세스는 다음과 같습니다: 클라이언트가 요청을 시작할 때 추가로 `callback_url` 필드를 지정합니다. 클라이언트가 API 요청을 시작하면, API는 즉시 결과를 반환하며, 현재 작업 ID를 나타내는 `task_id` 필드 정보를 포함합니다. 작업이 완료되면 생성된 이미지 결과가 POST JSON 형식으로 클라이언트가 지정한 `callback_url`로 전송되며, 여기에도 `task_id` 필드가 포함되어 있어 작업 결과를 ID로 연결할 수 있습니다.

아래 예제를 통해 구체적으로 어떻게 작업하는지 알아보겠습니다.

먼저, Webhook 콜백은 HTTP 요청을 수신할 수 있는 서비스로, 개발자는 자신이 구축한 HTTP 서버의 URL로 교체해야 합니다. 여기서는 편리한 시연을 위해 공개 Webhook 샘플 사이트인 [https://webhook.site/를](https://webhook.site/를) 사용합니다. 해당 사이트를 열면 Webhook URL을 얻을 수 있습니다, 아래 그림과 같이:

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

이 URL을 복사하여 Webhook으로 사용할 수 있으며, 여기서의 샘플은 `https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab`입니다.

다음으로, `callback_url` 필드를 위의 Webhook URL로 설정하고, 다음 코드와 같이 해당 매개변수를 입력할 수 있습니다:

```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": "귀여운 아기 바다 수달",
    "callback_url": "https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
}

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

실행 버튼을 클릭하면 즉시 다음과 같은 결과를 얻을 수 있습니다:

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

잠시 기다리면 Webhook URL에서 생성된 이미지 결과를 확인할 수 있으며, 내용은 다음과 같습니다:

```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": "젊은 바다 수달을 보여주는 즐거운 이미지...",
        "url": "https://dalleprodsec.blob.core.windows.net/private/images/..."
      }
    ]
  }
}
```

결과에서 `task_id` 필드가 있으며, `data` 필드는 동기 호출과 동일한 이미지 생성 결과를 포함하고 있습니다. `task_id` 필드를 통해 작업을 연결할 수 있습니다.

## 오류 처리

API를 호출할 때 오류가 발생하면, API는 해당 오류 코드와 정보를 반환합니다. 예를 들어:

* `400 token_mismatched`：잘못된 요청, 누락되었거나 잘못된 매개변수 때문일 수 있습니다.
* `400 api_not_implemented`：잘못된 요청, 누락되었거나 잘못된 매개변수 때문일 수 있습니다.
* `401 invalid_token`：권한 없음, 잘못되었거나 누락된 인증 토큰입니다.
* `429 too_many_requests`：요청이 너무 많습니다, 비율 제한을 초과했습니다.
* `500 api_error`：내부 서버 오류, 서버에서 문제가 발생했습니다.

### 오류 응답 예시

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## 결론

이 문서를 통해 OpenAI Images Generations API를 사용하여 공식 OpenAI DALL-E의 이미지 생성 기능을 쉽게 사용할 수 있는 방법을 이해하셨습니다. 이 문서가 API를 더 잘 연결하고 사용하는 데 도움이 되기를 바랍니다. 질문이 있으시면 언제든지 기술 지원 팀에 문의해 주십시오.
