Source: https://ailoot.ai/models/ms/grok-imagine-image/
Canonical: https://ailoot.ai/models/ms/grok-imagine-image/
Language: ms

# grok-imagine-image

[Markdown](https://ailoot.ai/models/ms/grok-imagine-image/index.md) · [JSON](https://ailoot.ai/models/ms/grok-imagine-image/facts.json)

## [grok-imagine-image](https://ailoot.ai/models/ms/grok-imagine-image/)

Grok Imagine Image menghasilkan imej daripada penerangan teks dengan pilihan bentuk bingkai dan resolusi 1K atau 2K. Sesuai untuk visual segi empat sama, menegak dan format lebar.

- [**Ailoot · Imej** `POST /v1/images/generations` `grok-imagine-image`](https://ailoot.ai/models/ms/grok-imagine-image/#method-0)

Tentang model

Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.

Grok Imagine Image ialah model xAI untuk penjanaan visual. Ia menukar penerangan teks tentang adegan menjadi imej. Model itu sendiri turut mempunyai input visual untuk mengendalikan imej asal; dalam kaedah penjanaan Ailoot yang diterbitkan, inputnya ialah permintaan teks.

#### Variasi satu idea

Satu permintaan boleh menetapkan antara **1 hingga 10 imej** melalui parameter `n`. Jika bilangan tidak ditetapkan, satu imej dihasilkan. Ini berguna apabila beberapa variasi penerangan yang sama diperlukan; adegan bebas yang berbeza diberikan melalui penerangan berasingan.

#### Bentuk bingkai dan resolusi

Anda boleh memilih bingkai segi empat sama `1:1`, mendatar `16:9`, menegak `9:16`, format `4:3` dan `3:4`, serta format fotografi `3:2` dan `2:3`. Mod `auto` membolehkan model memilih nisbah berdasarkan penerangan dan digunakan secara lalai.

Pilihan **1K dan 2K** disediakan untuk penjanaan; tanpa pilihan jelas, 1K digunakan. Resolusi dan nisbah bidang ditetapkan secara berasingan: yang pertama menentukan saiz imej, yang kedua bentuk bingkai.

#### Pengendalian bahan visual

Dalam mod visual xAI, imej asal disertai arahan teks: arahan itu menentukan perubahan pada kandungan atau rupa adegan. Hasil satu suntingan boleh digunakan untuk suntingan seterusnya bagi memperhalus butiran secara beransur-ansur. Mod model itu sendiri ini berbeza daripada penjanaan berdasarkan teks yang diterbitkan.

Model mengembalikan imej; hasil boleh dihantar sebagai fail melalui pautan atau data imej dalam base64. Pilihan `quality` dengan nilai `low`, `medium` dan `auto` merujuk kepada Image 2.0 dan tidak terpakai pada Grok Imagine Image.

**Ailoot · Imej** `POST /v1/images/generations` `grok-imagine-image`

[`grok-imagine-image`](https://ailoot.ai/models/ms/#m=grok-imagine-image&route=Core&caller=grok-imagine-image&fmt=images)

xAI /`grok-imagine-image`

### Pengenalan

Grok Imagine Image menghasilkan imej daripada penerangan teks dengan pilihan bentuk bingkai dan resolusi 1K atau 2K. Sesuai untuk visual segi empat sama, menegak dan format lebar.

Input yang diterima

Teks

Hasil

Imej

### Tersedia di Ailoot · input & kaedah

**Ailoot · Imej** `POST /v1/images/generations`

Input

`text`

Output

`image`

Format output

Fail imej

| Medan | Jenis | Keperluan | Nilai & had | Lalai |
| --- | --- | --- | --- | --- |
| Medan`model` | Jenis`string` | KeperluanDiperlukan | Nilai & had grok-imagine-image | Lalai— |
| Medan`prompt` | Jenis`string` | KeperluanDiperlukan | Nilai & had | Lalai— |
| Medan`n` | Jenis`integer` | KeperluanPilihan | Nilai & had Minimum: 1 Maksimum: 10 | Lalai1 |
| Medan`response_format` | Jenis`string` | KeperluanPilihan | Nilai & had url, b64\_json | Lalaiurl |
| Medan`resolution` | Jenis`string` | KeperluanPilihan | Nilai & had 1k, 2k | Lalai1k |
| Medan`aspect_ratio` | Jenis`string` | KeperluanPilihan | Nilai & had auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, 19.5:9, 9:19.5, 20:9, 9:20, 21:9, 5:2 | Lalaiauto |
| Medan`quality` | Jenis`string` | KeperluanTidak disokong | Nilai & had | Lalai— |

Gabungan bahan input

**Teks kepada imej** · Diperlukan: prompt

Parameter kaedah dan kitar hayat

| Parameter | Kontrak |
| --- | --- |
| Parameter`material_types` | Kontraktext |
| Parameter`required` | Kontrakmodel, prompt |
| Parameter`optional_controls` | Kontraknull |
| Parameter`content_type` | Kontrakapplication/json |

Kitar hayat: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · task\_id sebenar yang dikembalikan atau rekod pustaka media

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

Struktur kaedah dan ID adalah tepat; keupayaan pembekal berasingan daripada penerimaan permintaan.

### Pelan harga

#### Kadar kaedah Ailoot

Input

USD 0.002 *bagi setiap imej masukan*

Output

USD 0.02 *bagi setiap imej 1K*

Output

USD 0.02 *bagi setiap imej 2K*

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. [Cara rizab dan penyelesaian caj berfungsi →](https://ailoot.ai/docs/ms/billing/reserve/)

### Contoh permintaan

#### Ailoot · Imej

curlPython SDKNode.js SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "grok-imagine-image", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
```

```python
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'grok-imagine-image', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
```

```js
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "grok-imagine-image", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");
```

### Terima dan simpan hasil

#### Ailoot · Imej

Muat turun setiap imej yang dikembalikan atau simpan kandungan Base64-nya

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

##### Simpan semua hasil yang selesai

Simpan setiap imej yang selesai; dapatkan setiap URL yang dikembalikan atau nyahkod kandungan Base64-nya.

Simpan setiap item data. Nyahkod setiap b64\_json atau dapatkan setiap URL bertandatangan yang dikembalikan. Pilih sambungan nama fail berdasarkan MIME/bait sebenar.

##### Jika respons asal perlu disemak

Jika hasil penjanaan atau penyuntingan imej memerlukan semakan, simpan operation\_id/X-Client-Request-ID asal serta maklumat hasil yang dikembalikan. Pulihkan hasil sedia ada milik anda melalui pustaka media menggunakan nilai task\_id atau asset\_id sebenar. Jangan hantar semula permintaan penjanaan/penyuntingan atau bina URL tinjauan status daripada operation\_id.

Medan respons

| Medan | Jenis |
| --- | --- |
| Medan`created` | Jenisinteger |
| Medan`data[].url` | Jenisstring |
| Medan`data[].b64_json` | Jenisbase64 string |
| Medan`usage` | Jenisobject |

Ralat dan langkah seterusnya

| Respons | Syarat | Langkah seterusnya |
| --- | --- | --- |
| Respons400 · `invalid_request_error` | SyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sah | Langkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu. |
| Respons`server_error` | SyaratRespons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan | Langkah seterusnyaSimpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan. |

### Alias

#### Alias model

**Ailoot** [`grok-imagine-image`](https://ailoot.ai/models/ms/#m=grok-imagine-image&route=Core&caller=grok-imagine-image&fmt=images)

#### Alias laluan kaedah

Gunakan laluan kaedah yang dipaparkan di atas.

#### ID pemanggil berkaitan

[`grok-imagine-image`](https://ailoot.ai/models/ms/#m=grok-imagine-image&route=Core&caller=grok-imagine-image&fmt=images)

FAQ · grok-imagine-image

Apakah input dan hasil yang tersedia?

`POST /v1/images/generations` · `grok-imagine-image`: `text` → `image`

Apakah medan yang digunakan oleh permintaan?

`POST /v1/images/generations` · `grok-imagine-image`: `model`, `prompt`, `n`, `response_format`, `resolution`, `aspect_ratio`

Apakah had yang terpakai?

`POST /v1/images/generations` · `grok-imagine-image`: `n.minimum`: `1`; `n.maximum`: `10`

Sambungkan Ailoot kepada Claude Code, OpenCode, Hermes atau aplikasi anda.

## Syarikat dan portfolio projeknya

Syarikat dan portfolio projeknya: jutaan pelanggan; jualan bernilai berbilion setiap bulan.

## Beli token dengan diskaun.

Diskaun langganan untuk penggunaan berkala. Kod promosi — sehingga 50% bagi pembelian token.

Langganan

Pilih pelan berdiskaun untuk permintaan berkala anda.

Kod promosi sehingga 50%

Masukkan kod semasa pembelian. Harga dikira semula mengikut promosi semasa.

Perbelanjaan dalam sejarah

Model, token dan jumlah disimpan bagi setiap permintaan.

[Pilih langganan](https://ailoot.ai/docs/ms/billing/subscriptions/) · [Lihat harga model](https://ailoot.ai/models/ms/)

## Sambungkan API kepada produk yang anda jual.

SaaS, aplikasi dan bot — di bawah tawaran rasmi serta perjanjian lesen Ailoot. Untuk jualan semula, mohon lesen penjual semula.

Aplikasi komersial

Tambahkan penjanaan teks, imej, video dan audio pada ciri berbayar perkhidmatan anda.

Lesen penjual semula

Hantar keterangan projek dan susunan akses. Minta terma penggunaan serta jualan semula secara bertulis.

Dokumen pada laman

Tawaran, perjanjian lesen dan dasar pemprosesan data tersedia sebelum sambungan.

[Mohon lesen penjual semula](mailto:support@ailoot.ai) · [Tawaran dan perjanjian lesen](https://ailoot.ai/legal/offer?lang=ms)

## Ailoot · Syarikat dan portfolio projeknya





Ailoot berteraskan pengalaman operasi yang mantap, pangkalan pelanggan yang besar, perkhidmatan yang stabil dan pemantauan KPI berterusan.





Syarikat dan portfolio projeknya: jutaan pelanggan; jualan bernilai berbilion setiap bulan.





Ailoot menggunakan pengalaman operasi ini untuk akses API kepada ciri AI dalam produk pelanggan, ejen, aplikasi dan automasi.
