image-01
MiniMax image-01 batafsil matnli tavsif asosida tasvirlar yaratadi; kvadrat, vertikal va keng kompozitsiyalarni qo‘llab-quvvatlaydi.
- Ailoot · Rasmlar
POST /v1/images/generationsimage-01 - Ailoot · Rasmlar
POST /v1/images/generationsminimax-image - Ailoot · Rasmlar
POST /v1/images/generationsminimax-image-latest - Ailoot · Rasmlar
POST /v1/images/generationsminimax/image-01
Model haqida
Bu tavsif model imkoniyatlarini yoritadi. Ailoot da tanlangan usul uchun mavjud kirish, chiqish va parametrlar quyida keltirilgan.
Tavsif asosidagi tasvir
MiniMax image-01 matnli tavsif asosida yangi rasm yaratadi. Unda personaj yoki buyum, muhit va tasvir uslubini belgilash mumkin. Bu Ailoot kartasi matnni qabul qiladi va tasvir qaytaradi; tavsif kelajakdagi sahnaning mazmuni va kompozitsiyasini belgilaydi.
Personaj qiyofasi bilan ishlash
Ishlab chiqaruvchida model imkoniyatlari personajning vizual namunasi bilan yaratishni ham o‘z ichiga oladi. Asosiy obyekt aniq ko‘rinadigan bitta boshlang‘ich tasvir uning o‘ziga xos belgilarini matnli tavsif bilan birga yangi sahnaga o‘tkazishga yordam beradi. Ishlab chiqaruvchi old tomondan olingan yakka portretni tavsiya etadi; bir so‘rovda bitta namuna qo‘llab-quvvatlanadi.
Bunday boshlang‘ich tasvir uchun hajmi 10 MBdan kichik JPG, JPEG va PNG e’lon qilingan. Bu kartada mavjud yaratish usuli — matnli; namuna imkoniyati image-01 modeliga tegishli va so‘rov kirishini avtomatik kengaytirmaydi.
Nisbatlar va o‘lchamlar
image-01 uchun sakkizta nisbat ko‘zda tutilgan: 1:1, 16:9, 4:3, 3:2, 2:3, 3:4, 9:16 va 21:9. Ular kvadrat, gorizontal, vertikal va keng kompozitsiyani qamrab oladi. Ular uchun standart o‘lchamlar mos ravishda 1024×1024, 1280×720, 1152×864, 1248×832, 832×1248, 864×1152, 720×1280 va 1344×576 piksel.
Ishlab chiqaruvchi kenglik va balandlikni birga belgilashga ham imkon beradi: har biri 512 dan 2048 pikselgacha, 8 ga karrali qadam bilan. Nisbatlar va alohida o‘lchamlar bir vaqtda ko‘rsatilsa, tomonlar nisbati ustuvor bo‘ladi.
Variantlar soni va yaratish parametrlari
Model imkoniyatlari bir so‘rovda 1 dan 9 tagacha tasvirni o‘z ichiga oladi; standart holatda bitta yaratiladi. Matnli tavsif 1500 belgi bilan cheklangan. Tavsifni avtomatik optimallashtirish dastlab o‘chirilgan; tasodifiylik urug‘i ham ko‘zda tutilgan: bir xil parametrlar bilan bir xil urug‘ natijani takrorlash uchun ishlatiladi.
Yaratish natijasi tasvir yoki tasvirlar to‘plami bo‘ladi. Ishlab chiqaruvchi ma’lumotlarning o‘zini uzatish va fayl olishni ko‘zda tutadi; variantlarning bir qismi yaratilmasa, muvaffaqiyatli natijalar soni alohida hisobga olinadi. Sanab o‘tilgan o‘lchamlar va sozlamalar model imkoniyatlarini tavsiflaydi; aniq so‘rovning mavjud parametrlarini Ailoot kartasi belgilaydi.
Ailoot · Rasmlar POST /v1/images/generations image-01
image-01image-01minimax-imageminimax-image-latestminimax/image-01
Boshlash
MiniMax image-01 batafsil matnli tavsif asosida tasvirlar yaratadi; kvadrat, vertikal va keng kompozitsiyalarni qo‘llab-quvvatlaydi.
- Qabul qilinadigan kirish ma’lumotlari
- Matn
- Natijalar
- Rasmlar
Ailoot da mavjud · kirish ma’lumotlari va usullar
Ailoot · Rasmlar POST /v1/images/generations
- Kirish
text- Chiqish
image- Chiqish formati
- Rasm fayli
| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
|---|---|---|---|---|
Maydonmodel | Turstring | TalabMajburiy | Qiymatlar va cheklovlar image-01 | Standart— |
Maydonprompt | Turstring | TalabMajburiy | Qiymatlar va cheklovlar Eng kam uzunlik: 1 | Standart— |
Maydonn | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 | Standart1 |
Maydonresponse_format | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar url, b64_json | Standart— |
Maydonstream | Turboolean | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |
Maydonsize | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonquality | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonbackground | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonoutput_format | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonoutput_compression | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonmoderation | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydoninput_fidelity | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonstyle | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonpartial_images | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Kirish materiallari birikmalari
Matndan rasm · Majburiy: prompt
Usul parametrlari va hayot sikli
| Parametr | Parametr talablari |
|---|---|
Parametrmaterial_types | Parametr talablaritext |
Parametrrequired | Parametr talablarimodel, prompt |
Parametroptional_controls | Parametr talablarinull |
Parametrcontent_type | Parametr talablariapplication/json |
Hayot sikli: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Amalda qaytarilgan task_id yoki media kutubxonasidagi yozuv
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Metod tuzilishlari va IDlari aniq; yetkazib beruvchining imkoniyati so‘rovni qabul qilishga ruxsatdan alohida.
Tariflar
Ailoot usullari tariflari
POST /v1/images/generations- Chiqish
- 0,0035 US$ 1K o‘lchamdagi rasm uchun
- Chiqish
- 0,0035 US$ 2K o‘lchamdagi rasm uchun
Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →
So‘rov namunalari
Ailoot · Rasmlar
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": "image-01", "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
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': 'image-01', '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])
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": "image-01", "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");
Natijalarni olish va saqlash
Ailoot · Rasmlar
Har bir qaytarilgan rasmni yuklab oling yoki uning Base64 kontentini saqlang
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Barcha tayyor natijalarni saqlash
Har bir tayyor rasmni saqlang; har bir qaytarilgan URL dan kontentni oling yoki uning Base64 kontentini dekodlang.
Har bir ma’lumot elementini saqlang. Har bir b64_json ni dekodlang yoki qaytarilgan har bir imzolangan URL dan faylni yuklab oling. Fayl nomi kengaytmasini haqiqiy MIME turi/baytlar asosida tanlang.
Asl javobni tekshirish kerak bo‘lsa
Rasm yaratish yoki tahrirlash natijasini tekshirish kerak bo‘lsa, dastlabki operation_id/X-Client-Request-ID va qaytarilgan natija haqidagi ma’lumotlarni saqlang. Amalda qaytarilgan task_id yoki asset_id qiymatlari yordamida media kutubxonasidan o‘zingizga tegishli mavjud natijalarni tiklang. Rasm yaratish/tahrirlash so‘rovini qayta yubormang va operation_id dan holatni davriy tekshirish uchun URL tuzmang.
Javob maydonlari
| Maydon | Tur |
|---|---|
Maydoncreated | Turinteger |
Maydondata[].url | Turstring |
Maydondata[].b64_json | Turbase64 string |
Maydonusage | Turobject |
Xatolar va keyingi qadamlar
| Javob | Shart | Keyingi qadam |
|---|---|---|
Javob400 · invalid_request_error | ShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘ri | Keyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating. |
Javobserver_error | ShartQaytarilgan javob operatsiya yoki natijani tekshirish kerakligini bildiradi | Keyingi qadamDastlab qaytarilgan operatsiya/vazifa ID sini, so‘rov sarlavhalarini va javobni saqlang; aynan shu operatsiya uchun qo‘llab-quvvatlanadigan o‘qish so‘rovlarini davom ettiring. Yaratish so‘rovini qayta yubormang. |
Taxalluslar
Model taxalluslari
Ailoot image-01, minimax-image, minimax-image-latest, minimax/image-01
Usul yo‘llari taxalluslari
Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.
Chaqirish uchun tegishli ID lar
image-01, minimax-image, minimax-image-latest, minimax/image-01
Ailoot · Rasmlar POST /v1/images/generations minimax-image
minimax-imageimage-01minimax-imageminimax-image-latestminimax/image-01
Boshlash
MiniMax image-01 batafsil matnli tavsif asosida tasvirlar yaratadi; kvadrat, vertikal va keng kompozitsiyalarni qo‘llab-quvvatlaydi.
- Qabul qilinadigan kirish ma’lumotlari
- Matn
- Natijalar
- Rasmlar
Ailoot da mavjud · kirish ma’lumotlari va usullar
Ailoot · Rasmlar POST /v1/images/generations
- Kirish
text- Chiqish
image- Chiqish formati
- Rasm fayli
| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
|---|---|---|---|---|
Maydonmodel | Turstring | TalabMajburiy | Qiymatlar va cheklovlar minimax-image | Standart— |
Maydonprompt | Turstring | TalabMajburiy | Qiymatlar va cheklovlar Eng kam uzunlik: 1 | Standart— |
Maydonn | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 | Standart1 |
Maydonresponse_format | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar url, b64_json | Standart— |
Maydonstream | Turboolean | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |
Maydonsize | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonquality | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonbackground | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonoutput_format | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonoutput_compression | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonmoderation | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydoninput_fidelity | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonstyle | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonpartial_images | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Kirish materiallari birikmalari
Matndan rasm · Majburiy: prompt
Usul parametrlari va hayot sikli
| Parametr | Parametr talablari |
|---|---|
Parametrmaterial_types | Parametr talablaritext |
Parametrrequired | Parametr talablarimodel, prompt |
Parametroptional_controls | Parametr talablarinull |
Parametrcontent_type | Parametr talablariapplication/json |
Hayot sikli: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Amalda qaytarilgan task_id yoki media kutubxonasidagi yozuv
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Metod tuzilishlari va IDlari aniq; yetkazib beruvchining imkoniyati so‘rovni qabul qilishga ruxsatdan alohida.
Tariflar
Ailoot usullari tariflari
POST /v1/images/generations- Chiqish
- 0,0035 US$ 1K o‘lchamdagi rasm uchun
- Chiqish
- 0,0035 US$ 2K o‘lchamdagi rasm uchun
Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →
So‘rov namunalari
Ailoot · Rasmlar
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": "minimax-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
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': 'minimax-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])
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": "minimax-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");
Natijalarni olish va saqlash
Ailoot · Rasmlar
Har bir qaytarilgan rasmni yuklab oling yoki uning Base64 kontentini saqlang
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Barcha tayyor natijalarni saqlash
Har bir tayyor rasmni saqlang; har bir qaytarilgan URL dan kontentni oling yoki uning Base64 kontentini dekodlang.
Har bir ma’lumot elementini saqlang. Har bir b64_json ni dekodlang yoki qaytarilgan har bir imzolangan URL dan faylni yuklab oling. Fayl nomi kengaytmasini haqiqiy MIME turi/baytlar asosida tanlang.
Asl javobni tekshirish kerak bo‘lsa
Rasm yaratish yoki tahrirlash natijasini tekshirish kerak bo‘lsa, dastlabki operation_id/X-Client-Request-ID va qaytarilgan natija haqidagi ma’lumotlarni saqlang. Amalda qaytarilgan task_id yoki asset_id qiymatlari yordamida media kutubxonasidan o‘zingizga tegishli mavjud natijalarni tiklang. Rasm yaratish/tahrirlash so‘rovini qayta yubormang va operation_id dan holatni davriy tekshirish uchun URL tuzmang.
Javob maydonlari
| Maydon | Tur |
|---|---|
Maydoncreated | Turinteger |
Maydondata[].url | Turstring |
Maydondata[].b64_json | Turbase64 string |
Maydonusage | Turobject |
Xatolar va keyingi qadamlar
| Javob | Shart | Keyingi qadam |
|---|---|---|
Javob400 · invalid_request_error | ShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘ri | Keyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating. |
Javobserver_error | ShartQaytarilgan javob operatsiya yoki natijani tekshirish kerakligini bildiradi | Keyingi qadamDastlab qaytarilgan operatsiya/vazifa ID sini, so‘rov sarlavhalarini va javobni saqlang; aynan shu operatsiya uchun qo‘llab-quvvatlanadigan o‘qish so‘rovlarini davom ettiring. Yaratish so‘rovini qayta yubormang. |
Taxalluslar
Model taxalluslari
Ailoot image-01, minimax-image, minimax-image-latest, minimax/image-01
Usul yo‘llari taxalluslari
Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.
Chaqirish uchun tegishli ID lar
image-01, minimax-image, minimax-image-latest, minimax/image-01
Ailoot · Rasmlar POST /v1/images/generations minimax-image-latest
minimax-image-latestimage-01minimax-imageminimax-image-latestminimax/image-01
Boshlash
MiniMax image-01 batafsil matnli tavsif asosida tasvirlar yaratadi; kvadrat, vertikal va keng kompozitsiyalarni qo‘llab-quvvatlaydi.
- Qabul qilinadigan kirish ma’lumotlari
- Matn
- Natijalar
- Rasmlar
Ailoot da mavjud · kirish ma’lumotlari va usullar
Ailoot · Rasmlar POST /v1/images/generations
- Kirish
text- Chiqish
image- Chiqish formati
- Rasm fayli
| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
|---|---|---|---|---|
Maydonmodel | Turstring | TalabMajburiy | Qiymatlar va cheklovlar minimax-image-latest | Standart— |
Maydonprompt | Turstring | TalabMajburiy | Qiymatlar va cheklovlar Eng kam uzunlik: 1 | Standart— |
Maydonn | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 | Standart1 |
Maydonresponse_format | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar url, b64_json | Standart— |
Maydonstream | Turboolean | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |
Maydonsize | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonquality | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonbackground | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonoutput_format | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonoutput_compression | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonmoderation | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydoninput_fidelity | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonstyle | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonpartial_images | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Kirish materiallari birikmalari
Matndan rasm · Majburiy: prompt
Usul parametrlari va hayot sikli
| Parametr | Parametr talablari |
|---|---|
Parametrmaterial_types | Parametr talablaritext |
Parametrrequired | Parametr talablarimodel, prompt |
Parametroptional_controls | Parametr talablarinull |
Parametrcontent_type | Parametr talablariapplication/json |
Hayot sikli: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Amalda qaytarilgan task_id yoki media kutubxonasidagi yozuv
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Metod tuzilishlari va IDlari aniq; yetkazib beruvchining imkoniyati so‘rovni qabul qilishga ruxsatdan alohida.
Tariflar
Ailoot usullari tariflari
POST /v1/images/generations- Chiqish
- 0,0035 US$ 1K o‘lchamdagi rasm uchun
- Chiqish
- 0,0035 US$ 2K o‘lchamdagi rasm uchun
Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →
So‘rov namunalari
Ailoot · Rasmlar
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": "minimax-image-latest", "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
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': 'minimax-image-latest', '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])
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": "minimax-image-latest", "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");
Natijalarni olish va saqlash
Ailoot · Rasmlar
Har bir qaytarilgan rasmni yuklab oling yoki uning Base64 kontentini saqlang
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Barcha tayyor natijalarni saqlash
Har bir tayyor rasmni saqlang; har bir qaytarilgan URL dan kontentni oling yoki uning Base64 kontentini dekodlang.
Har bir ma’lumot elementini saqlang. Har bir b64_json ni dekodlang yoki qaytarilgan har bir imzolangan URL dan faylni yuklab oling. Fayl nomi kengaytmasini haqiqiy MIME turi/baytlar asosida tanlang.
Asl javobni tekshirish kerak bo‘lsa
Rasm yaratish yoki tahrirlash natijasini tekshirish kerak bo‘lsa, dastlabki operation_id/X-Client-Request-ID va qaytarilgan natija haqidagi ma’lumotlarni saqlang. Amalda qaytarilgan task_id yoki asset_id qiymatlari yordamida media kutubxonasidan o‘zingizga tegishli mavjud natijalarni tiklang. Rasm yaratish/tahrirlash so‘rovini qayta yubormang va operation_id dan holatni davriy tekshirish uchun URL tuzmang.
Javob maydonlari
| Maydon | Tur |
|---|---|
Maydoncreated | Turinteger |
Maydondata[].url | Turstring |
Maydondata[].b64_json | Turbase64 string |
Maydonusage | Turobject |
Xatolar va keyingi qadamlar
| Javob | Shart | Keyingi qadam |
|---|---|---|
Javob400 · invalid_request_error | ShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘ri | Keyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating. |
Javobserver_error | ShartQaytarilgan javob operatsiya yoki natijani tekshirish kerakligini bildiradi | Keyingi qadamDastlab qaytarilgan operatsiya/vazifa ID sini, so‘rov sarlavhalarini va javobni saqlang; aynan shu operatsiya uchun qo‘llab-quvvatlanadigan o‘qish so‘rovlarini davom ettiring. Yaratish so‘rovini qayta yubormang. |
Taxalluslar
Model taxalluslari
Ailoot image-01, minimax-image, minimax-image-latest, minimax/image-01
Usul yo‘llari taxalluslari
Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.
Chaqirish uchun tegishli ID lar
image-01, minimax-image, minimax-image-latest, minimax/image-01
Ailoot · Rasmlar POST /v1/images/generations minimax/image-01
minimax/image-01image-01minimax-imageminimax-image-latestminimax/image-01
Boshlash
MiniMax image-01 batafsil matnli tavsif asosida tasvirlar yaratadi; kvadrat, vertikal va keng kompozitsiyalarni qo‘llab-quvvatlaydi.
- Qabul qilinadigan kirish ma’lumotlari
- Matn
- Natijalar
- Rasmlar
Ailoot da mavjud · kirish ma’lumotlari va usullar
Ailoot · Rasmlar POST /v1/images/generations
- Kirish
text- Chiqish
image- Chiqish formati
- Rasm fayli
| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
|---|---|---|---|---|
Maydonmodel | Turstring | TalabMajburiy | Qiymatlar va cheklovlar minimax/image-01 | Standart— |
Maydonprompt | Turstring | TalabMajburiy | Qiymatlar va cheklovlar Eng kam uzunlik: 1 | Standart— |
Maydonn | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 | Standart1 |
Maydonresponse_format | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar url, b64_json | Standart— |
Maydonstream | Turboolean | TalabIxtiyoriy | Qiymatlar va cheklovlar | Standartfalse |
Maydonsize | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonquality | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonbackground | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonoutput_format | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonoutput_compression | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonmoderation | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydoninput_fidelity | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonstyle | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Maydonpartial_images | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Modelga bogʻliq | Standart— |
Kirish materiallari birikmalari
Matndan rasm · Majburiy: prompt
Usul parametrlari va hayot sikli
| Parametr | Parametr talablari |
|---|---|
Parametrmaterial_types | Parametr talablaritext |
Parametrrequired | Parametr talablarimodel, prompt |
Parametroptional_controls | Parametr talablarinull |
Parametrcontent_type | Parametr talablariapplication/json |
Hayot sikli: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Amalda qaytarilgan task_id yoki media kutubxonasidagi yozuv
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Metod tuzilishlari va IDlari aniq; yetkazib beruvchining imkoniyati so‘rovni qabul qilishga ruxsatdan alohida.
Tariflar
Ailoot usullari tariflari
POST /v1/images/generations- Chiqish
- 0,0035 US$ 1K o‘lchamdagi rasm uchun
- Chiqish
- 0,0035 US$ 2K o‘lchamdagi rasm uchun
Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →
So‘rov namunalari
Ailoot · Rasmlar
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": "minimax/image-01", "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
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': 'minimax/image-01', '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])
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": "minimax/image-01", "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");
Natijalarni olish va saqlash
Ailoot · Rasmlar
Har bir qaytarilgan rasmni yuklab oling yoki uning Base64 kontentini saqlang
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Barcha tayyor natijalarni saqlash
Har bir tayyor rasmni saqlang; har bir qaytarilgan URL dan kontentni oling yoki uning Base64 kontentini dekodlang.
Har bir ma’lumot elementini saqlang. Har bir b64_json ni dekodlang yoki qaytarilgan har bir imzolangan URL dan faylni yuklab oling. Fayl nomi kengaytmasini haqiqiy MIME turi/baytlar asosida tanlang.
Asl javobni tekshirish kerak bo‘lsa
Rasm yaratish yoki tahrirlash natijasini tekshirish kerak bo‘lsa, dastlabki operation_id/X-Client-Request-ID va qaytarilgan natija haqidagi ma’lumotlarni saqlang. Amalda qaytarilgan task_id yoki asset_id qiymatlari yordamida media kutubxonasidan o‘zingizga tegishli mavjud natijalarni tiklang. Rasm yaratish/tahrirlash so‘rovini qayta yubormang va operation_id dan holatni davriy tekshirish uchun URL tuzmang.
Javob maydonlari
| Maydon | Tur |
|---|---|
Maydoncreated | Turinteger |
Maydondata[].url | Turstring |
Maydondata[].b64_json | Turbase64 string |
Maydonusage | Turobject |
Xatolar va keyingi qadamlar
| Javob | Shart | Keyingi qadam |
|---|---|---|
Javob400 · invalid_request_error | ShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘ri | Keyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating. |
Javobserver_error | ShartQaytarilgan javob operatsiya yoki natijani tekshirish kerakligini bildiradi | Keyingi qadamDastlab qaytarilgan operatsiya/vazifa ID sini, so‘rov sarlavhalarini va javobni saqlang; aynan shu operatsiya uchun qo‘llab-quvvatlanadigan o‘qish so‘rovlarini davom ettiring. Yaratish so‘rovini qayta yubormang. |
Taxalluslar
Model taxalluslari
Ailoot image-01, minimax-image, minimax-image-latest, minimax/image-01
Usul yo‘llari taxalluslari
Yuqorida ko‘rsatilgan usul yo‘llaridan foydalaning.
Chaqirish uchun tegishli ID lar
image-01, minimax-image, minimax-image-latest, minimax/image-01
FAQ · image-01
- Qanday kirish ma’lumotlari va natijalar mavjud?
POST /v1/images/generations·image-01:text→imagePOST /v1/images/generations·minimax-image:text→imagePOST /v1/images/generations·minimax-image-latest:text→imagePOST /v1/images/generations·minimax/image-01:text→image- So‘rov qaysi maydonlardan foydalanadi?
POST /v1/images/generations·image-01:model,prompt,n,response_format,streamPOST /v1/images/generations·minimax-image:model,prompt,n,response_format,streamPOST /v1/images/generations·minimax-image-latest:model,prompt,n,response_format,streamPOST /v1/images/generations·minimax/image-01:model,prompt,n,response_format,stream- Qanday cheklovlar amal qiladi?
POST /v1/images/generations·image-01:n.minimum:1POST /v1/images/generations·minimax-image:n.minimum:1POST /v1/images/generations·minimax-image-latest:n.minimum:1POST /v1/images/generations·minimax/image-01:n.minimum:1