> ## 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 Images Generations API 申請及使用

> OpenAI generation API guide - Ace Data Cloud

OpenAI Images Generations API は現在、クラシックな `dall-e-3`、テキストレンダリング能力が強化された `gpt-image-1`、最新世代の **`gpt-image-2`**、および同一インターフェースで接続される **`nano-banana` / `nano-banana-2-lite` / `nano-banana-2` / `nano-banana-pro`** シリーズモデルを含む多様な画像生成モデルをサポートしています。これらはすべて、テキストの説明に基づいて高品質な画像を生成することができます。

この文書は、OpenAI Images Generations API 操作の使用フローを主に紹介しており、これを利用することで OpenAI シリーズの画像生成機能を簡単に使用できます。

## 申請フロー

OpenAI Images Generations API を使用するには、まず [Ace Data Cloud コントロールセンター](https://platform.acedata.cloud/console/applications) で API トークンを取得し、バックアップとして保管してください。

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

まだログインまたは登録していない場合は、自動的にログインページにリダイレクトされ、登録とログインを促されます。完了後、現在のページに自動的に戻ります。

**1つの API トークンでプラットフォームのすべてのサービスを呼び出すことができ、各サービスごとに個別に申請する必要はありません。** 初回申請時には無料のクレジットが付与され、無料で体験できます。クレジットが不足した場合は、[コントロールセンター](https://platform.acedata.cloud/console/coin) で一般的な残高をチャージできます。

> 📘 完全な文書：[OpenAI Images Generations 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": "イタリアのアマルフィ海岸のヴィンテージ旅行ポスター。崖の上にあるレモンイエローの家々がターコイズの海に向かって cascading しているアールデコ風のイラスト。上部には太字のタイポグラフィで 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": "三段の木製本棚：上段には1冊の本、2段目には3冊の本、下段には7冊の本がある。柔らかい暖かい照明、フォトリアリスティック、居心地の良い図書館の雰囲気。",
    "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 シリーズモデル

`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        | シリーズのフラッグシップ、構図、詳細、テキストが最良        |

> **重要：パラメータのサポート範囲**
> Nano Banana は適応層を通じて 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>

このインターフェースを初めて使用する際には、少なくとも3つの内容を入力する必要があります。一つは `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` には2種類があります。最初の `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>

```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_format": "url"
}

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

呼び出し後、返された結果は以下の通りです：

```json theme={null}
{
  "created": 1721637650,
  "data": [
    {
      "revised_prompt": "A baby sea otter with fluffy fur and bright eyes, playfully floating on the surface of the ocean. The scene captures the essence of joy and innocence, with gentle waves lapping around the otter. The sunlight sparkles on the water, creating a magical atmosphere. The background features a serene seascape, enhancing the overall beauty of the image.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/7e48f701-7fd3-4356-839e-a2f6f0fe82d9/generated_00.png?se=2024-07-23T08%3A45%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"
    }
  ]
}
```

返された結果は基本的な使用内容と一致しており、画像リンクの形式パラメータが `url` の生成画像は以下の通りです：

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

このように、画像のリンク形式を変更することで、異なる形式の画像を取得することができます。

```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の接続と使用に役立つことを願っています。ご不明な点がございましたら、いつでも技術サポートチームにお問い合わせください。
