> ## 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 Ansökan och Användning

> OpenAI generation API guide - Ace Data Cloud

OpenAI Images Generations API stöder för närvarande flera bildgenereringsmodeller, inklusive den klassiska `dall-e-3`, textrenderingskapaciteten hos `gpt-image-1`, den senaste generationen **`gpt-image-2`**, samt modellerna i serien **`nano-banana` / `nano-banana-2-lite` / `nano-banana-2` / `nano-banana-pro`** som är anslutna via samma gränssnitt. De kan alla generera högkvalitativa bilder baserat på textbeskrivningar.

Detta dokument beskriver huvudsakligen användningsflödet för OpenAI Images Generations API, vilket gör att vi enkelt kan använda OpenAI:s bildgenereringsfunktioner.

## Ansökningsprocess

För att använda OpenAI Images Generations API, börja med att gå till [Ace Data Cloud-konsolen](https://platform.acedata.cloud/console/applications) för att hämta din API-token, som du ska spara för framtida bruk.

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

Om du inte har loggat in eller registrerat dig kommer du automatiskt att omdirigeras till inloggningssidan där du blir inbjuden att registrera dig och logga in. När detta är klart kommer du automatiskt att återvända till den aktuella sidan.

**En API-token kan användas för att anropa alla plattformens tjänster, utan att behöva ansöka separat för varje tjänst.** Första ansökan ger en gratis kvot för att prova; när kvoten är slut kan du ladda på allmän balans i [konsolen](https://platform.acedata.cloud/console/coin).

> 📘 Fullständig dokumentation: [OpenAI Images Generations API →](https://platform.acedata.cloud/documents/openai-images-generations)

## GPT-Image-2 Modell

`gpt-image-2` är OpenAI:s nya generation av bildgenereringsmodeller, som har tydliga förbättringar jämfört med `dall-e-3` och `gpt-image-1` i följande aspekter:

* **Bättre följsamhet till instruktioner**: Kan exakt förstå komplexa kompositioner, räkning, positionsrelationer och andra strukturerade instruktioner.
* **Tydligare textrendering**: Engelska och siffror i scenarier som affischer, menyer, informationsgrafik och logotyper kommer nästan aldrig att bli förvrängda.
* **Rikare stiluttryck**: Inbyggt stöd för olika stilar som filmiska porträtt, retroaffischer, barnillustrationer, produktfotografi, informationsgrafik och mer.
* **Inbyggt stöd för flera proportioner + högupplösning**: Täcker 5 proportioner (1:1, 4:3, 3:4, 16:9, 9:16) med totalt 3 upplösningar (1K / 2K / 4K).

Anropsmetoden är helt identisk med andra modeller, du behöver bara ställa in `model`-fältet till `gpt-image-2`. `url` i returresultatet är en permanent länk till en bild som är värd på `platform.cdn.acedata.cloud`, som kan öppnas direkt i webbläsaren eller bäddas in på en webbsida.

### Officiell omdirigering / Omvänd variant (`:official` / `:reverse`)

`gpt-image-2` använder som standard den omvända linjen. Genom att använda suffixet på modellnamnet kan du uttryckligen välja linje:

* **`gpt-image-2:official`**: Officiell omdirigeringslinje. Stöder `n > 1` (returnera flera bilder på en gång) och verklig 2K / 4K upplösning, **debiteras per bild, enhetspriset är 2 gånger det vanliga `gpt-image-2`**. För närvarande tillhandahålls den endast av openai-hk-kanalen, och om linjen inte är tillgänglig returneras ett fel direkt, utan att nedgraderas till den omvända linjen.
* **`gpt-image-2:reverse`**: Helt ekvivalent med standard `gpt-image-2` (omvänd linje), används för att uttryckligen deklarera att den omvända linjen används, priset förblir oförändrat.

> Nedan gäller begränsningarna "om `n`-parametern" endast för standard / omvänd linje; `gpt-image-2:official` stöder `n > 1` och debiterar per bild.

### Stödda `size` värden

`gpt-image-2` kontrollerar endast formatet på `size`, så länge det inte är `auto` eller en tom sträng, måste det matcha `WIDTHxHEIGHT` (till exempel `1024x1024`, `2048x1152`, `800x600`); alla andra former kommer att returnera 400. **Alla storlekar (1K / 2K / 4K / anpassade) debiteras enhetligt per bild, utan prishöjning baserat på storlek.**

Övre gränser för anpassade storlekar: både bredd och höjd måste vara multiplar av 16, långsidan ≤ 3840, totalt antal pixlar ≤ 8,294,400. Överskridande av dessa gränser kommer att avvisas av uppströms och returnera 4xx.

| Proportion | 1K Rekommenderad | 2K Rekommenderad | 4K Rekommenderad |
| ---------- | ---------------- | ---------------- | ---------------- |
| 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`      |

> Du kan också skicka `size: "auto"` eller **utelämna `size`-fältet**, så väljer modellen automatiskt standardstorlek.
> I 1K-kategorin garanterar inte uppströms utdata strikt pixeljustering - du kan skicka `1024x1024` men få `1254x1254`, proportionerna förblir desamma. Om du skickar det igen som `size`, förblir debiteringen densamma.
> 4K-anrop tar vanligtvis 4–8 minuter, det rekommenderas att använda det tillsammans med `callback_url` för asynkron återkoppling.

> **Om `n`-parametern**
> `gpt-image-2` stöder för närvarande **inte `n > 1`**: denna parameter kommer att tyst ignoreras, oavsett om du skickar `n=1` eller `n=10`, kommer en enda begäran alltid att returnera 1 bild och debiteras endast för 1 bild. Om du behöver få flera kandidatbilder på en gång, vänligen **initiera flera begärningar parallellt** (det rekommenderas att skicka olika `prompt` eller olika `seed`, annars kan de bilder du får vara mycket lika). Denna begränsning gäller också för `gpt-image-1` / `gpt-image-1.5`, samt serierna `nano-banana` / `nano-banana-2-lite` / `nano-banana-2` / `nano-banana-pro`. `dall-e-2` är för närvarande den enda modellen som ursprungligen stöder `n > 1`; `dall-e-3` stöder endast `n = 1`.

Nedan ges några olika verkliga exempel för att intuitivt uppleva `gpt-image-2` kapabiliteter.

### Scenario 1: Filmiskt Porträtt

I prompten kan filmtermer (35mm film, grunt skärpedjup, neonskott etc.) användas för att exakt kontrollera atmosfären och texturen.

Python exempel på anropskod:

```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": "Ett filmiskt porträtt av en ung kvinna som står i en närbutik på natten, belyst av mjuka rosa och cyan neonskyltar genom fönstret. Fotograferat på 35mm film, grunt skärpedjup, lätt korn, melankolisk stämning.",
    "size": "1024x1536"
}

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

Resultatet är som följer:

```json theme={null}
{
  "success": true,
  "task_id": "ab58a5df-6f46-4874-bff6-93169e2849a3",
  "created": 1777048800,
  "data": [
    {
      "revised_prompt": "Ett filmiskt porträtt av en ung kvinna som står i en närbutik på natten, belyst av mjuka rosa och cyan neonskyltar genom fönstret. Fotograferat på 35mm film, grunt skärpedjup, lätt korn, melankolisk stämning.",
      "url": "https://platform.cdn.acedata.cloud/gpt-image/ab58a5df-6f46-4874-bff6-93169e2849a3_0.png"
    }
  ]
}
```

Den genererade bilden är som följer:

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

### Scen två: Retro reseaffisch (med textrendering)

`gpt-image-2` presterar stabilt när det gäller typografi och textrendering, vilket gör det mycket lämpligt för att generera affischer, menyer, gratulationskort och andra designarbeten med text.

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "En vintage reseaffisch av Amalfikusten, Italien. Styliserad art-deco illustration av klippkantade citron-gula hus som kaskaderar ner till ett turkos hav, med en liten vit segelbåt i hamnen. Fet typografi högst upp som läser AMALFI och längst ner ITALIA 1958. Begränsad färgpalett: grädde, havsblå, citron gul, terrakotta. Lätt papperskorn textur.",
    "size": "1024x1536"
}
```

Resultatet i `url`-fältet är bilden nedan:

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

Man kan se att modellen inte bara exakt återgav den visuella stilen av Art Deco-affischen, utan även att titlarna `AMALFI` och `ITALIA 1958` blev tydligt och korrekt renderade.

### Scen tre: Komplex komposition och antal

Nedanstående prompt används för att testa modellens förmåga att följa strukturerade instruktioner om "antal" och "position".

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "En träbokhylla bestående av tre hyllor: På den översta hyllan ska det finnas en bok. På den andra hyllan ska det finnas tre böcker. På den nedersta hyllan ska det finnas sju böcker. Mjuk varm belysning, fotorealistisk, mysig biblioteksatmosfär.",
    "size": "1024x1024"
}
```

Den genererade bilden är som följer:

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

Man kan se att antalet böcker på de tre hyllorna (1 / 3 / 7) är helt i linje med prompten, vilket var svårt att uppnå stabilt under `dall-e-3`-eran.

### Scen fyra: Illustrationsstil (landskap)

Genom att specificera konstnärligt medium och känslomässiga nyckelord kan man styra modellen att producera stiliserade illustrationer.

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "En mjuk, poetisk barnboksillustration av en liten räv som läser en bok under en lysande svamp i en månbelyst skog. Akvarell- och blyertstextur, mjuka pastellfärger, drömlik atmosfär, handritad känsla.",
    "size": "1536x1024"
}
```

Den genererade landskapsillustrationen är som följer:

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

### Asynkron och callback

`gpt-image-2` kräver vanligtvis 60–90 sekunder för en enda anrop. Om man inte vill upprätthålla en lång anslutning kan man använda den asynkrona callback-mekanismen som beskrivs senare i denna artikel, anropsflödet är helt i linje med andra modeller.

## Nano Banana-serien av modeller

`nano-banana`-serien är baserad på Gemini och är en bildgenereringsmodell som har integrerats via samma `/openai/images/generations`-gränssnitt, utan att behöva byta endpoint, man behöver bara ändra `model` till någon av de modeller som anges i tabellen nedan.

| Modell               | Kostnad (Credits / gång) | Användningsområde                                             |
| -------------------- | ------------------------ | ------------------------------------------------------------- |
| `nano-banana`        | 0.14                     | Vanlig bildgenerering, snabbast, lägsta kostnad               |
| `nano-banana-2-lite` | 0.14                     | Gemini 3.1 lättviktsbildmodell, stödjer endast 1K, låg latens |
| `nano-banana-2`      | 0.28                     | Kvalitet och detaljer är tydligt förbättrade                  |
| `nano-banana-pro`    | 0.35                     | Flaggskeppet i serien, bästa komposition, detaljer och text   |

> **Viktigt: Parameterstöd**
> Nano Banana ansluter via en adapter till OpenAI-protokollet och stöder endast följande parametrar jämfört med `gpt-image-*`: `model`, `prompt`, `size`.
>
> * `size` kommer att mappas till intern `aspect_ratio` enligt tabellen nedan, icke-listade storlekar kommer att degraderas till `1:1`:
>   * `1024x1024` / `512x512` / `256x256` → `1:1`
>   * `1792x1024` → `16:9`
>   * `1024x1792` → `9:16`
> * Stöder inte parametrar som `n`, `quality`, `style`, `response_format`, `background`, `output_format` etc.; om de anges kommer de att ignoreras.
> * Återvändande struktur följer OpenAI-formatet (`data[].url`), men `created` är alltid `0`, och `b64_json` kommer inte att returneras, `revised_prompt` är alltid lika med den ursprungliga `prompt`.

### Grundläggande anrop

```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": "ett litet rött äpple på ett vitt bord, fotorealistiskt",
    "size": "1024x1024"
}

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

Resultatet är som följer:

```json theme={null}
{
  "created": 0,
  "data": [
    {
      "url": "https://platform.cdn.acedata.cloud/nanobanana/6870b330-65c4-436c-bb80-819fdae7a7a4.png",
      "revised_prompt": "ett litet rött äpple på ett vitt bord, fotorealistiskt"
    }
  ]
}
```

Genererade bilder kan direkt nås via det returnerade `url`-fältet:

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

### Uppgradera till flaggskeppsmodellen `nano-banana-pro`

Ändra bara `model` till `nano-banana-pro`, övriga parametrar förblir helt oförändrade:

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

Exempel på svar:

```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>

### Asynkron callback

`callback_url` asynkron callback-mekanism fungerar också för nano-banana, anropsflödet är helt identiskt med andra modeller, se avsnittet [Asynkron callback](#asynkron-callback) nedan.

## Grundläggande användning

Nu kan du fylla i motsvarande innehåll i gränssnittet, som visas i bilden:

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

Vid första användningen av detta API behöver vi fylla i minst tre fält, ett är `authorization`, som du direkt väljer i rullgardinsmenyn. En annan parameter är `model`, `model` är den vi väljer att använda från OpenAI DALL-E officiella modellkategori, här har vi huvudsakligen 1 typ av modell, detaljer kan ses i de modeller vi tillhandahåller. Den sista parametern är `prompt`, `prompt` är den text vi anger för att generera bilden.

Samtidigt kan du notera att det finns motsvarande anropskod som genereras till höger, du kan kopiera koden och köra den direkt, eller klicka på "Try" knappen för att testa.

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

Exempel på anropskod i 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)
```

Efter anropet ser vi att det returnerade resultatet ser ut som följer:

```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"
    }
  ]
}
```

Det returnerade resultatet har flera fält, som beskrivs nedan:

* `created `, ID för den här bildgenereringen, används för att unikt identifiera denna uppgift.
* `data`, innehåller information om bildgenereringen.

Där `data` innehåller den specifika informationen om den bild som modellen har genererat, där `url` är länken till den genererade bilden, som kan ses i bilden nedan.

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

## Bildkvalitetsparameter `quality`

Nu kommer vi att beskriva hur man ställer in några detaljerade parametrar för bildgenereringsresultatet, där bildkvalitetsparametern `quality` innehåller två typer, den första `standard` innebär att en standardbild genereras, den andra `hd` innebär att den skapade bilden har mer detaljer och större konsekvens.

Nedan ställer vi in bildkvalitetsparametern till `standard`, specifik inställning visas i bilden:

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

Samtidigt kan du notera att det finns motsvarande anropskod som genereras till höger, du kan kopiera koden och köra den direkt, eller klicka på "Try" knappen för att testa.

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

Exempel på anropskod i 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)
```

Efter anropet ser vi att det returnerade resultatet ser ut som följer:

```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"
    }
  ]
}
```

Det returnerade resultatet är i linje med innehållet i grundläggande användning, och vi kan se att bilden med bildkvalitetsparametern `standard` ser ut som bilden nedan:

<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 cute baby sea otter floating on its back in the ocean, surrounded by gentle waves. The otter has soft, fluffy fur and bright, curious eyes. The sunlight sparkles on the water, creating a serene and joyful atmosphere. In the background, hints of kelp and other marine life can be seen, adding to the vibrant underwater ecosystem.",
      "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>

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

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

可以看到 `url` 和 `b64_json` 生成的图片链接格式明显不同，具体使用方式请参考我们的官方文档。

```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": "En söt baby sjöutter",
    "response_format": "url"
}

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

Efter anropet upptäckte vi att resultatet var som följer:

```json theme={null}
{
  "created": 1721637575,
  "data": [
    {
      "revised_prompt": "En charmig avbildning av en baby sjöutter. Uttern ses vila lugnt på sin rygg bland de mjuka, blå havsvågorna. Den lilla utterns päls är en älskvärd blandning av mjuka gråbruna nyanser, som glittrar subtilt i det dämpade solljuset. Dess små tassar rör vid, lyfta något mot himlen som om den leker med ett osynligt föremål. Dess runda, uttrycksfulla ögon är vidöppna av nyfikenhet, gnistrande av liv och oskuld. Använd en realistisk stil för att framkalla utterns naturliga livsmiljö och dess bedårande fluffiga yttre.",
      "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"
    }
  ]
}
```

Det returnerade resultatet överensstämmer med det grundläggande användningsinnehållet, och vi kan se att bildlänkens formatparameter för `url` är den genererade bildens länk [Bild 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) som kan nås direkt, bildinnehållet visas nedan:

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

Genom att utföra samma operation som ovan, behöver vi bara ställa in bildlänkens formatparameter till `b64_json`, så kan vi få resultatet av den Base64-kodade bildlänken, det specifika resultatet visas nedan:

```json theme={null}
{
  "created": 1721638071,
  "data": [
    {
      "b64_json": "iVBORw0..............v//AQEAAP4AAAD+AAADAQAAAwEEA/4D//8Q/Pbw64mKbVTFoQAAAABJRU5ErkJggg==",
      "revised_prompt": "En charmig bild av en ung baby sjöutter. Uttern flyter försiktigt på ett lugnt blått hav, och njuter av de varma, gyllene solstrålarna som strömmar ner från en klar himmel ovanför. Utterns päls är en rik chokladbrun, och den ser otroligt mjuk och fluffig ut. Utterns ögon är ljusa och uttrycksfulla, fyllda med barnslig nyfikenhet och glädje. Den har små, spetsiga öron och en knappliknande näsa som bidrar till dess övergripande sötma. I havet runt den kan man se glittrande vattendroppar, upplysta av solljuset, vilket ger en verkligen härlig syn."
    }
  ]
}
```

## Asynkron callback

Eftersom OpenAI Images Generations API:s bildgenerering kan ta relativt lång tid, om API:t inte svarar under en längre tid, kommer HTTP-förfrågan att hålla anslutningen öppen, vilket leder till extra systemresursförbrukning, så detta API erbjuder också stöd för asynkron callback.

Den övergripande processen är: när klienten initierar en begäran, specificerar den dessutom ett `callback_url`-fält, efter att klienten har initierat API-förfrågan kommer API:t omedelbart att returnera ett resultat som innehåller ett `task_id`-fält, vilket representerar det aktuella uppdragets ID. När uppdraget är slutfört kommer resultatet av den genererade bilden att skickas till klientens angivna `callback_url` i POST JSON-format, vilket också inkluderar `task_id`-fältet, så att uppdragets resultat kan kopplas ihop med ID.

Låt oss förstå hur man gör detta genom ett exempel.

Först är Webhook-callback en tjänst som kan ta emot HTTP-förfrågningar, utvecklaren bör ersätta med URL:en till sin egen byggda HTTP-server. Här för att underlätta demonstration använder vi en offentlig Webhook-exempelsida [https://webhook.site/](https://webhook.site/), öppna denna webbplats för att få en Webhook-URL, som visas nedan:

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

Kopiera denna URL så kan den användas som Webhook, exemplet här är `https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab`.

Därefter kan vi ställa in fältet `callback_url` till ovanstående Webhook-URL, samtidigt som vi fyller i motsvarande parametrar, som i följande kod:

```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": "En söt baby sjöutter",
    "callback_url": "https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
}

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

När vi klickar på kör kan vi omedelbart få ett resultat som följer:

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

Vänta en stund, så kan vi observera resultatet av den genererade bilden på Webhook-URL:en, innehållet är som följer:

```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": "En härlig bild som visar en ung sjöutter...",
        "url": "https://dalleprodsec.blob.core.windows.net/private/images/..."
      }
    ]
  }
}
```

Vi kan se att resultatet innehåller ett `task_id`-fält, `data`-fältet innehåller samma bildgenereringsresultat som vid synkron anrop, och genom `task_id`-fältet kan uppdraget kopplas ihop.

## Felhantering

Vid anrop av API:t, om ett fel uppstår, kommer API:t att returnera motsvarande felkod och information. Till exempel:

* `400 token_mismatched`：Dålig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
* `400 api_not_implemented`：Dålig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
* `401 invalid_token`：Obehörig, ogiltig eller saknad auktoriseringstoken.
* `429 too_many_requests`：För många begärningar, du har överskridit hastighetsgränsen.
* `500 api_error`：Intern serverfel, något gick fel på servern.

### Felrespons exempel

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

## Slutsats

Genom detta dokument har du fått en förståelse för hur du enkelt kan använda OpenAI Images Generations API för att använda den officiella OpenAI DALL-E:s bildgenereringsfunktion. Vi hoppas att detta dokument kan hjälpa dig att bättre integrera och använda API:t. Om du har några frågor, tveka inte att kontakta vårt tekniska supportteam.
