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

# Nano banana 2.1 Pembuatan Gambar

> Pembuatan teks ke gambar dan pengeditan gambar referensi dengan keluaran 1K / 2K / 4K serta 14 rasio aspek, tersedia dalam versi resmi dan Ext.

## Pemilihan model

| ID model | Penagihan | Gambar per permintaan | Ukuran gambar referensi |
| - | - | - | - |
| `gemini-nano-banana-2.1` | Penggunaan token aktual | 1–4 | Maksimal 20MB per gambar |
| `gemini-nano-banana-2.1-ext` | Per gambar berdasarkan tingkat resolusi | Hanya 1 | Maksimal 20MB per gambar, total 50MB |

Kedua model menawarkan dimensi keluaran dan kualitas gambar yang sama. Pilih versi resmi untuk menghasilkan beberapa gambar dalam satu permintaan, atau Ext untuk memperkirakan biaya per gambar. Lihat [harga model](https://apimart.ai/pricing) untuk tarif yang berlaku.

<Info>
  Endpoint ini bersifat asinkron. Pengiriman yang berhasil mengembalikan `task_id`. Gunakan [kueri tugas](/id/api-reference/tasks/status) untuk mengambil status dan gambar. Lakukan polling setiap 3–5 detik dan atur batas waktu tunggu keseluruhan minimal 3 menit.
</Info>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.apimart.ai/v1/images/generations \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "gemini-nano-banana-2.1",
      "prompt": "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
      "size": "16:9",
      "resolution": "2K",
      "n": 1
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.apimart.ai/v1/images/generations",
      headers={"Authorization": "Bearer <token>"},
      json={
          "model": "gemini-nano-banana-2.1",
          "prompt": "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
          "size": "16:9",
          "resolution": "2K",
          "n": 1
      }
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.apimart.ai/v1/images/generations", {
    method: "POST",
    headers: {
      Authorization: "Bearer <token>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "gemini-nano-banana-2.1",
      prompt: "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
      size: "16:9",
      resolution: "2K",
      n: 1
    })
  });
  console.log(await response.json());
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01K..."
      }
    ]
  }
  ```
</ResponseExample>

## Header permintaan

<ParamField header="Authorization" type="string" required>
  Autentikasi Bearer dengan format `Bearer <token>`, dengan `<token>` sebagai APIMart API Key Anda.
</ParamField>

## Parameter permintaan

<ParamField body="model" type="string" required>
  ID model: `gemini-nano-banana-2.1` atau `gemini-nano-banana-2.1-ext`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Deskripsi teks untuk pembuatan atau pengeditan gambar. Mendukung bahasa Mandarin dan Inggris.
</ParamField>

<ParamField body="size" type="string" default="auto">
  Rasio aspek keluaran. Mendukung `1:4`, `4:1`, `1:8`, `8:1`, `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, dan `21:9`. Format seperti `16x9` juga diterima.

  Jika dihilangkan atau diatur ke `auto`, model yang menentukan. Untuk gambar ke gambar, keluaran mengikuti rasio aspek gambar referensi.

  Versi resmi mendukung ke-14 rasio pada `1K`, `2K`, dan `4K`. **Ext mendukung `1:4`, `4:1`, `1:8`, dan `8:1` hanya pada `1K`. Pada `2K` dan `4K`, Ext hanya mendukung 10 rasio lainnya.**
</ParamField>

<ParamField body="resolution" type="string" default="1K">
  Tingkat resolusi keluaran: `1K`, `2K`, atau `4K`. Huruf kecil juga diterima. Nilai ini turut memengaruhi penagihan.

  `0.5K` dan `512` tidak didukung dan mengembalikan HTTP 400 saat pengiriman. Nilai lain yang tidak dikenali, seperti `3K`, menggunakan `1K` untuk pembuatan dan penagihan. Gunakan hanya nilai yang didukung di atas.
</ParamField>

<ParamField body="n" type="integer" default="1">
  Jumlah gambar yang dihasilkan: 1–4 untuk versi resmi; hanya 1 untuk Ext.

  Nilai di atas 4 langsung mengembalikan HTTP 400. Permintaan Ext dengan 2–4 gagal saat eksekusi dan menerima pengembalian dana penuh. Untuk beberapa gambar, kirim tugas Ext terpisah atau gunakan versi resmi.
</ParamField>

<ParamField body="image_urls" type="string[]">
  Daftar gambar referensi. Hilangkan untuk teks ke gambar; sertakan untuk gambar ke gambar atau pengeditan. Setiap item mendukung:

  * URL gambar HTTP(S) yang dapat diakses publik.
  * Data URL Base64, seperti `data:image/png;base64,...`.

  PNG, JPEG, atau WEBP disarankan. Versi resmi mengizinkan maksimal 20MB per gambar. Ext mengizinkan maksimal 20MB per gambar dan total 50MB.

  Platform tidak menetapkan batas jumlah gambar referensi yang tetap, tetapi ini bukan berarti unggahan tak terbatas: melampaui batas model dapat menyebabkan tugas gagal dan pengembalian dana. Lebih banyak gambar referensi biasanya memerlukan waktu lebih lama.
</ParamField>

<ParamField body="official_fallback" type="boolean" default="false">
  Hanya berlaku untuk `gemini-nano-banana-2.1-ext`. Jika diaktifkan, sistem mencoba menyelesaikan tugas menggunakan versi resmi saat Ext gagal.

  **Jika versi resmi benar-benar digunakan, penagihan beralih ke penggunaan token aktual versi resmi, bukan harga per gambar Ext.**
</ParamField>

<ParamField body="webhook" type="string">
  URL callback untuk pemberitahuan saat tugas berakhir. Lihat [webhook tugas](/id/api-reference/tasks/webhook).
</ParamField>

## Referensi dimensi keluaran

| Rasio aspek | 1K | 2K | 4K |
| - | - | - | - |
| 1:1 | 1024×1024 | 2048×2048 | 4096×4096 |
| 2:3 | 848×1264 | 1696×2528 | 3392×5056 |
| 3:2 | 1264×848 | 2528×1696 | 5056×3392 |
| 3:4 | 896×1200 | 1792×2400 | 3584×4800 |
| 4:3 | 1200×896 | 2400×1792 | 4800×3584 |
| 4:5 | 928×1152 | 1856×2304 | 3712×4608 |
| 5:4 | 1152×928 | 2304×1856 | 4608×3712 |
| 9:16 | 768×1376 | 1536×2752 | 3072×5504 |
| 16:9 | 1376×768 | 2752×1536 | 5504×3072 |
| 21:9 | 1584×672 | 3168×1344 | 6336×2688 |

Dimensi di atas mencakup hasil pengukuran dan nilai referensi keluarga model. Tidak semua kombinasi telah diuji. Dimensi piksel sebenarnya mengikuti gambar yang dikembalikan.

## Mengedit gambar referensi

```json theme={null}
{
  "model": "gemini-nano-banana-2.1-ext",
  "prompt": "Tambahkan topi rajut merah pada kucing di gambar dan biarkan bagian lainnya tetap sama",
  "image_urls": ["https://example.com/cat.jpg"],
  "resolution": "1K"
}
```

Ganti URL contoh dengan URL gambar yang dapat diakses. Jika `size` dihilangkan, keluaran mengikuti rasio aspek gambar referensi.

## Pembuatan batch (hanya versi resmi)

```json theme={null}
{
  "model": "gemini-nano-banana-2.1",
  "prompt": "Kota bergaya cyberpunk pada malam hari, lampu neon, jalanan setelah hujan",
  "size": "16:9",
  "resolution": "2K",
  "n": 4
}
```

## Respons pengiriman

<ResponseField name="code" type="integer">
  Kode status respons. `200` menunjukkan keberhasilan.
</ResponseField>

<ResponseField name="data" type="array">
  Hasil pengiriman tugas. `status` adalah `submitted`. `task_id` digunakan untuk memeriksa status dan hasil tugas, bukan URL gambar akhir.
</ResponseField>

## Memeriksa hasil tugas

```bash theme={null}
curl --request GET \
  --url https://api.apimart.ai/v1/tasks/task_01K... \
  --header 'Authorization: Bearer <token>'
```

Contoh respons berhasil (URL gambar hanya sebagai placeholder):

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01K...",
    "status": "completed",
    "progress": 100,
    "result": {
      "images": [
        {
          "url": ["https://example.com/generated-image.png"],
          "expires_at": 1791417625
        }
      ]
    }
  }
}
```

| Status tugas | Arti |
| - | - |
| `pending` | Dalam antrean |
| `processing` | Sedang dibuat |
| `completed` | Berhasil; baca array URL gambar dari `data.result.images[0].url` |
| `failed` | Gagal; alasan di `data.error.message`. Dana dikembalikan penuh; `data.cost` adalah 0 |

Semua tautan gambar akhir berada dalam array `data.result.images[0].url`. Jika 4 gambar dihasilkan, array berisi 4 tautan. Hanya gambar akhir yang dikembalikan; `n=1` berarti 1 gambar akhir.

Tautan kedaluwarsa 24 jam setelah tugas selesai, sesuai `expires_at`. Segera unduh dan simpan gambar. Keluaran berupa PNG atau JPEG; ikuti isi file sebenarnya. `data.cost` dalam hasil kueri adalah biaya akhir dalam USD.

## Penagihan

* **Versi resmi**: ditagih berdasarkan penggunaan token masukan dan keluaran aktual. Prompt dan gambar referensi dihitung sebagai masukan. Biaya dipotong di awal berdasarkan tingkat resolusi dan `n`, kemudian disesuaikan dengan penggunaan aktual melalui pengembalian dana atau biaya tambahan.
* **Versi Ext**: harga satuan tingkat resolusi × jumlah gambar aktual. Rasio aspek tidak memengaruhi tingkat resolusi. Jika `official_fallback` diaktifkan dan versi resmi benar-benar digunakan, penagihan token versi resmi berlaku.
* Lihat [harga model](https://apimart.ai/pricing) untuk harga satuan. Permintaan yang ditolak saat pengiriman tidak membuat tugas dan tidak dikenai biaya. Tugas gagal menerima pengembalian dana penuh.

## Kesalahan umum

| Kondisi | Tindakan |
| - | - |
| HTTP 400 | Periksa `0.5K` / `512`, `n` di atas 4, atau gambar referensi yang melebihi batas ukuran per gambar |
| HTTP 401 | Periksa API Key |
| HTTP 402 | Pastikan saldo mencukupi pemotongan awal |
| HTTP 429 | Batas permintaan tercapai; coba lagi dengan jeda yang bertambah |
| Tugas gagal: rasio aspek tidak didukung | Pastikan model dan resolusi mendukung `size`, atau gunakan `auto` |
| Tugas gagal: beberapa gambar diminta dengan Ext | Atur `n` ke 1 atau gunakan versi resmi |
| Tugas gagal: diblokir pemeriksaan keamanan konten | Ubah prompt atau gambar referensi lalu coba lagi |
| Tugas gagal: unduhan gambar referensi gagal | Pastikan URL gambar dapat diakses publik |

<Warning>
  Nano banana 2.1 dan Gemini 3.1 Flash Image adalah model berbeda; nama model tidak dapat dipakai sebagai alias satu sama lain. Saat bermigrasi dari model terakhir, ubah resolusi `0.5K` yang tidak didukung.
</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.