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

# MAI-Image-2.6 Pembuatan Gambar

> Teks ke gambar, pengeditan satu gambar, komposisi hingga 5 gambar referensi, dan pencarian web. Tersedia versi berkualitas tinggi dan Flash.

## Pemilihan model

| ID model | Karakteristik |
| - | - |
| `mai-image-2.6` | Versi berkualitas tinggi untuk kebutuhan yang mengutamakan kualitas visual |
| `mai-image-2.6-flash` | Versi lebih cepat dan murah dengan kualitas sedikit lebih rendah |

Kedua model memiliki kemampuan dan parameter yang sama serta hanya menghasilkan 1 gambar per permintaan. Lihat [harga model](https://apimart.ai/pricing) untuk tarif aktual.

<Info>
  Endpoint ini asinkron. Setelah pengiriman, ambil ID dari `data[0].task_id`, lalu gunakan [kueri tugas](/id/api-reference/tasks/status). Lakukan polling setiap 3–5 detik dengan batas waktu tunggu keseluruhan 3 menit. Hentikan saat status menjadi `completed` atau `failed`.
</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": "mai-image-2.6",
      "prompt": "Poster fotorealistis kampus universitas saat matahari terbenam, pencahayaan sinematik",
      "size": "16:9",
      "resolution": "2K"
    }'
  ```

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

  response = requests.post(
      "https://api.apimart.ai/v1/images/generations",
      headers={"Authorization": "Bearer <token>"},
      json={
          "model": "mai-image-2.6",
          "prompt": "Poster fotorealistis kampus universitas saat matahari terbenam, pencahayaan sinematik",
          "size": "16:9",
          "resolution": "2K"
      }
  )
  response.raise_for_status()
  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: "mai-image-2.6",
      prompt: "Poster fotorealistis kampus universitas saat matahari terbenam, pencahayaan sinematik",
      size: "16:9",
      resolution: "2K"
    })
  });
  if (!response.ok) throw new Error(await response.text());
  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: `mai-image-2.6` atau `mai-image-2.6-flash`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Deskripsi gambar atau instruksi pengeditan. Mendukung bahasa Mandarin dan Inggris, hingga sekitar 32.000 token (bukan karakter).
</ParamField>

<ParamField body="size" type="string" default="1:1">
  Menerima rasio aspek (seperti `16:9`), dimensi piksel (seperti `1536x1024`), atau `auto`.

  * Rasio aspek: rasio bilangan bulat apa pun dari `1:4` hingga `4:1`, bersama `resolution`.
  * Piksel: menerima `lebarxtinggi`, `lebar*tinggi`, atau `lebar×tinggi`. Dalam mode ini, `resolution` tidak menentukan dimensi.
  * `auto`: model memilih rasio aspek berdasarkan prompt.

  Hanya untuk teks ke gambar. Dengan gambar referensi, model menentukan dimensi keluaran.
</ParamField>

<ParamField body="resolution" type="string" default="1K">
  Mendukung `1K` dan `2K`, termasuk huruf kecil. Tingkat lain seperti `4K` tidak didukung dan mengembalikan HTTP 400.

  Menentukan tingkat ukuran pada teks ke gambar dengan rasio aspek. Tidak menghitung dimensi jika piksel persis digunakan. Tidak dapat mengatur dimensi keluaran gambar ke gambar.
</ParamField>

<ParamField body="width" type="integer">
  Lebar piksel persis. Wajib diberikan bersama `height`. Pasangan ini mengungguli `size` dan `resolution` untuk dimensi teks ke gambar.

  Lebar dan tinggi masing-masing minimal 768, dengan total maksimal 2.359.296 piksel. Gunakan kelipatan 32; jika tidak, tiap dimensi dibulatkan ke bawah ke kelipatan 32.

  Parameter ini tidak menentukan dimensi keluaran gambar ke gambar.
</ParamField>

<ParamField body="height" type="integer">
  Tinggi piksel persis, wajib bersama `width` dan mengikuti batas di atas. Tidak menentukan dimensi keluaran gambar ke gambar.
</ParamField>

<ParamField body="image_urls" type="string[]">
  Daftar hingga 5 gambar referensi. Hilangkan untuk teks ke gambar; satu gambar untuk pengeditan tunggal, beberapa untuk komposisi.

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

  JPEG dan PNG didukung; WEBP dan GIF otomatis dikonversi ke PNG. URL harus dapat diakses publik atau tugas akan gagal.

  **Dimensi keluaran gambar ke gambar ditentukan model berdasarkan referensi**, sekitar 1 juta piksel dengan rasio serupa. `size`, `resolution`, `width`, dan `height` tidak dapat mengatur dimensi ini.
</ParamField>

<ParamField body="auto_aspect_ratio" type="boolean" default="false">
  Atur ke `true` agar model memilih rasio berdasarkan prompt, setara dengan `size: "auto"`.
</ParamField>

<ParamField body="web_grounding" type="boolean" default="false">
  Atur ke `true` untuk mencari informasi real-time sebelum pembuatan, berguna untuk orang, tempat, atau peristiwa nyata.
</ParamField>

<ParamField body="n" type="integer" default="1">
  Hanya mendukung `1`. Kirim tugas terpisah untuk beberapa gambar. Nilai di atas 1 mengembalikan HTTP 400.
</ParamField>

## Dimensi teks ke gambar

| Kebutuhan | Parameter |
| - | - |
| Persegi default | Hilangkan parameter ukuran: `1:1` + `1K`, keluaran 1024×1024 |
| Resolusi + rasio aspek | `size: "16:9"`, `resolution: "2K"` |
| Piksel persis | `size: "1536x1024"`, atau `width: 1536`, `height: 1024` |
| Rasio otomatis | `size: "auto"` atau `auto_aspect_ratio: true` |

Prioritas dimensi teks ke gambar: pasangan `width` / `height` → `size` dalam piksel → `size` sebagai rasio bersama `resolution`.

### Tingkat resolusi dan rasio aspek

| Rasio aspek | 1K | 2K |
| - | - | - |
| 1:1 | 1024×1024 | 1536×1536 |
| 4:3 / 3:4 | 1152×864 / 864×1152 | 1760×1312 / 1312×1760 |
| 3:2 / 2:3 | 1248×832 / 832×1248 | 1856×1248 / 1248×1856 |
| 16:9 / 9:16 | 1344×768 / 768×1344 | 2048×1152 / 1152×2048 |
| 2:1 / 1:2 | 1536×768 / 768×1536 | 2144×1056 / 1056×2144 |
| 21:9 / 9:21 | 1792×768 / 768×1792 | 2336×992 / 992×2336 |
| 4:1 / 1:4 | 3072×768 / 768×3072 | 3072×768 / 768×3072 |

Dimensi dikonversi ke kelipatan 32. Karena sisi pendek minimal 768, rasio ekstrem dapat melebihi sekitar 1 juta piksel bahkan pada `1K`. Penagihan memakai jumlah token yang sesuai dengan piksel keluaran aktual.

### Batas piksel persis

* Lebar dan tinggi masing-masing minimal 768.
* Lebar × tinggi tidak melebihi 2.359.296 (1536 × 1536).
* Tiap dimensi dibulatkan ke bawah ke kelipatan 32. Misalnya, `1000x1000` menghasilkan `992x992`. Gunakan kelipatan 32 untuk dimensi persis.

`1536x1024`, `2048x1152`, dan `3072x768` didukung. `512x512` ditolak karena sisi terlalu kecil; `2048x2048` melebihi batas total piksel.

<Warning>
  Batas berlaku untuk **total piksel**, bukan maksimal 1536 per sisi. Jadi `2048x1152` dan `3072x768` valid, tetapi tingkat 4K tidak didukung. Pengaturan ini hanya berlaku untuk teks ke gambar.
</Warning>

## Contoh permintaan

### Piksel persis dan pencarian web

```json theme={null}
{
  "model": "mai-image-2.6-flash",
  "prompt": "Menara Eiffel pada malam hari dengan kembang api, gaya poster perjalanan",
  "width": 2048,
  "height": 1152,
  "web_grounding": true
}
```

### Pengeditan satu gambar

```json theme={null}
{
  "model": "mai-image-2.6",
  "prompt": "Ubah sepeda menjadi biru dan tambahkan seekor anjing kecil di sampingnya",
  "image_urls": ["https://example.com/bicycle.png"]
}
```

### Komposisi beberapa gambar

```json theme={null}
{
  "model": "mai-image-2.6-flash",
  "prompt": "Gabungkan kedua gambar referensi menjadi foto produk yang bersih dan futuristis",
  "image_urls": [
    "https://example.com/first.png",
    "https://example.com/second.jpg"
  ]
}
```

Ganti URL gambar contoh dengan alamat yang dapat diakses.

## Parameter yang tidak didukung

`quality`, `style`, `background`, `output_format`, `response_format`, dan `mask_url` tidak didukung dan diabaikan jika dikirim. Keluaran selalu PNG. Pengeditan dengan mask tidak didukung.

## Respons pengiriman

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

<ResponseField name="data" type="array">
  Hasil pengiriman tugas.

  <Expandable title="Tampilkan bidang tugas">
    <ResponseField name="status" type="string">
      `submitted` menunjukkan pengiriman berhasil, bukan pembuatan selesai.
    </ResponseField>

    <ResponseField name="task_id" type="string">
      ID tugas untuk memeriksa status dan hasil.
    </ResponseField>
  </Expandable>
</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"]
        }
      ]
    }
  }
}
```

| Status | Tindakan |
| - | - |
| `pending` | Dalam antrean; lanjutkan polling |
| `processing` | Sedang diproses; lanjutkan polling |
| `completed` | Berhasil; ambil tautan dari array `data.result.images[0].url` |
| `failed` | Gagal; baca `data.error.message` dan hentikan polling. Dana dikembalikan penuh |

## Penagihan

Ditagih berdasarkan token masukan dan keluaran aktual. Lihat [harga model](https://apimart.ai/pricing) untuk harga satuan.

* Token keluaran gambar = lebar keluaran aktual × tinggi ÷ 1024. 1024×1024 setara dengan 1024 token, 1536×1536 dengan 2304 token.
* Token masukan per referensi kira-kira lebar × tinggi ÷ 1024. Prompt teks juga dihitung sebagai masukan.
* Biaya dipotong di awal berdasarkan tingkat resolusi, lalu disesuaikan setelah berhasil dengan penggunaan aktual melalui pengembalian dana atau biaya tambahan.
* Tugas gagal otomatis menerima pengembalian dana penuh. Kesalahan parameter yang ditolak saat pengiriman tidak membuat tugas dan tidak dikenai biaya.

## Kesalahan umum

| HTTP | Penyebab dan tindakan |
| - | - |
| 400 | `resolution` tidak didukung, misalnya `4K`; gunakan `1K` atau `2K` |
| 400 | Lebar atau tinggi di bawah 768, atau total melebihi 2.359.296 piksel |
| 400 | Hanya `width` atau `height` diberikan; keduanya wajib bersama |
| 400 | Rasio di luar `1:4` hingga `4:1`, atau format `size` tidak dikenali |
| 400 | `n` di atas 1, atau lebih dari 5 referensi |

Jika tugas gagal, periksa kesalahan unduhan atau keamanan konten dan ubah prompt atau referensi sebelum mencoba lagi. Pengeditan foto realistis yang melibatkan anak di bawah umur dapat diblokir kebijakan keamanan.


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