models

qwen-image-3.0-pro

Markdown · JSON

qwen-image-3.0-pro

Мәтін бойынша күрделі макеттерге, жазуларға және шынайы бөлшектерге мән беріп сурет жасайтын модель. Постерлерге, кадрлық жоспарларға, мәзірлерге және тығыз композициялы материалдарға жарайды.

Модель туралы

Бұл сипаттама модель мүмкіндіктерін қамтиды. Ailoot жүйесінде таңдалған әдіс үшін қолжетімді кіріс, шығыс және параметрлер төменде берілген.

Qwen-Image-3.0-Pro — композициясы, жазулары мен ұсақ бөлшектері маңызды суреттерді жасауға және өңдеуге арналған Alibaba моделі. Оның бағыттарына тығыз макеттер, суреттің ішіндегі сурет, газет беттеуі, кадрлық жоспарлар, мәзірлер және оқу парақтары кіреді. Ailoot-тың ағымдағы карточкасында мәтіндік тапсырма бойынша сурет генерациялау режимі берілген. Alibaba өңдеуді және үлгі суреттермен жұмысты да қарастырады; бұл операциялар кіріс суреттерді жеке қолдауды қажет етеді және карточканың ағымдағы әдісінде ұсынылмаған.

Суреттегі мәтін және бөлшектер

Өндіруші 4,5 мың токенге дейінгі ұзақ тапсырмаларды, 12 тілдегі жазуларды және бірнеше қаріппен жұмысты атап көрсетеді. Бұл — тапсырманы өңдеудің сипатталған мүмкіндігі, формалды контекст терезесінің жарияланған өлшемі емес. Мәлімделген қасиеттерге өлшемі 10 пиксель болатын ұсақ жазуларды, тері мен шаш текстурасын, бет әлпетінің шағын өзгерістерін беру кіреді. Мұндай бөлшектер суреті жақыннан қаралатын материалдарды дайындағанда пайдалы.

Qwen-Image-3.0-Pro веб-беттердің, ойындардың және тікелей эфир экрандарының визуалды тұжырымдамаларына да арналған. Мұндай нәтижеде иллюстрацияны, экран құрылымын және безендірілген жазуларды біріктіруге болады. Модель макеттің суретін жасайды; жұмыс істейтін қолданба бөлек іске асыруды қажет етеді.

Alibaba спецификациясындағы өңдеу

Өңдеу режимі үшін Alibaba бірден үшке дейін сурет көрсетеді. Бұл тәсілде өндіруші нысанды үлгінің нөмірімен байланыстырып, материалдардың үйлесуін сипаттауға мүмкіндік береді. Нысандарды қосу, жою және жылжыту, әрекетті, стильді, бөлшектер мен мәтінді өзгерту қарастырылған. Теріс сипаттама қажетсіз элементтерді белгілеуге көмектеседі.

Өндірушідегі өңдеу режимінің кіріс материалдары JPG, JPEG, PNG, BMP, TIFF, WEBP және GIF форматтарында қабылданады. Анимациялық GIF үшін бірінші кадр қолданылады. Әр файлдың өлшемі — 10 МБ-қа дейін; өндіруші қабырғалары 384-тен 3072 пиксельге дейінгі суреттерді ұсынады. Бұл — дайын нәтиженің өлшемдері емес, кіріске арналған ұсынымдар.

Өндіруші спецификациясында бір сұрауға PNG форматындағы бірден алтыға дейін шығыс сурет қарастырылған. Нәтиженің ауданы — 262 144-тен 4 194 304 пиксельге дейін, бұл 512 × 512-ден 2048 × 2048-ге дейінгі шаршы суреттерге сәйкес келеді. 1:8-ден 8:1-ге дейінгі арақатынастарға рұқсат етіледі, сондықтан созылыңқы композиция үшін қабырға ұзындығы таңдалған кадр пішініне де байланысты. Генерация алдында тапсырманы қосымша қайта өңдеу қарастырылған.

Ailoot · Суреттер POST /v1/images/generations qwen-image-3.0-pro

qwen-image-3.0-pro

Alibaba /qwen-image-3.0-pro
Модель ID
  • qwen-image-3.0-pro
  • qwen-image
  • qwen-image-latest

Бастау

Мәтін бойынша күрделі макеттерге, жазуларға және шынайы бөлшектерге мән беріп сурет жасайтын модель. Постерлерге, кадрлық жоспарларға, мәзірлерге және тығыз композициялы материалдарға жарайды.

Қабылданатын кіріс деректері
Мәтін
Нәтижелер
Суреттер

Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер

Ailoot · Суреттер POST /v1/images/generations
Кіріс
text
Шығыс
image
Шығыс пішімі
Сурет файлы
ӨрісТүріТалапМәндер мен шектеулерӘдепкі
ӨрісmodelТүріstringТалапМіндеттіМәндер мен шектеулер
qwen-image-3.0-pro
Әдепкі—
ӨрісpromptТүріstringТалапМіндеттіМәндер мен шектеулер
Ең аз ұзындық: 1
Әдепкі—
ӨрісnТүріintegerТалапМіндетті емесМәндер мен шектеулер
Ең азы: 1
Әдепкі1
Өрісresponse_formatТүріstringТалапМіндетті емесМәндер мен шектеулер
url, b64_json
Әдепкі—
ӨрісstreamТүріbooleanТалапМіндетті емесМәндер мен шектеулерӘдепкіfalse
ӨрісsizeТүріstringТалапМіндетті емесМәндер мен шектеулер
Модельге байланысты
Әдепкі—
Өрісpartial_imagesТүріintegerТалапМіндетті емесМәндер мен шектеулер
Модельге байланысты
Әдепкі—
Өрісimages[].image_urlТүріstringТалапҚолдау көрсетілмейдіМәндер мен шектеулер
Декодталған байттардың ең көп саны: 10 485 760
MIME түрлері: image/png, image/jpeg
Массивтегі суреттердің ең көп саны: 3
Шарттар: Әр images[] объектісіне бір нақты URL беріледі. Массив элементтерінің саны бұл жол түріндегі соңғы мәннен бөлек ұғым.
Мына жағдайда қолданылады: Тек JSON images/edits үшін; JSON images/generations сурет үлгілерін талдамайды.
Әдепкі—
ӨрісimageТүріfileТалапМіндетті емесМәндер мен шектеулер
Декодталған байттардың ең көп саны: 10 485 760
MIME түрлері: image/png, image/jpeg
Мына жағдайда қолданылады: multipart/form-data арқылы генерация
Әдепкі—
Өрісimage[]Түріfile[]ТалапМіндетті емесМәндер мен шектеулер
Элементтердің ең көп саны: 3
Декодталған байттардың ең көп саны: 10 485 760
MIME түрлері: image/png, image/jpeg
Мына жағдайда қолданылады: multipart/form-data арқылы генерация
Әдепкі—
Кіріс материалдарының үйлесімдері

Мәтіннен сурет жасау · Міндетті: prompt

reference_images_generation · Міндетті: prompt

Әдіс параметрлері мен өмірлік циклі
ПараметрПараметр талаптары
Параметрmaterial_typesПараметр талаптарыtext
ПараметрrequiredПараметр талаптарыmodel, prompt
Параметрoptional_controlsПараметр талаптарыnull
Параметрcontent_typeПараметр талаптарыapplication/json

Өмірлік цикл: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · Нақты қайтарылған task_id немесе медиатека жазбасы

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.

Тарифтер

Ailoot әдістерінің мөлшерлемелері

Ailoot СуреттерPOST /v1/images/generations
Кіріс
0,003 $ кіріс суреті үшін
Шығыс
0,04 $ 1K өлшеміндегі сурет үшін
Шығыс
0,075 $ 2K өлшеміндегі сурет үшін

Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →

Сұрау мысалдары

Ailoot · Суреттер

curlPython SDKNode.js SDK
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": "qwen-image-3.0-pro", "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': 'qwen-image-3.0-pro', '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": "qwen-image-3.0-pro", "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");

Нәтижелерді алу және сақтау

Ailoot · Суреттер

Қайтарылған әр суретті жүктеп алыңыз немесе оның Base64 мазмұнын сақтаңыз

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Барлық дайын нәтижені сақтау

Әр дайын суретті сақтаңыз; қайтарылған әр URL арқылы мазмұнды алыңыз немесе оның Base64 мазмұнын декодтаңыз.

Әрбір дерек элементін сақтаңыз. Әрбір b64_json мәнін декодтаңыз немесе қайтарылған әрбір қолтаңбаланған URL мекенжайынан жүктеп алыңыз. Файл атауының кеңейтімін нақты MIME түріне/байттарға қарап таңдаңыз.

Бастапқы жауапты тексеру қажет болса

Кескінді генерациялау немесе өңдеу нәтижесін тексеру қажет болса, бастапқы operation_id/X-Client-Request-ID мәнін және қайтарылған нәтиже туралы ақпаратты сақтаңыз. Нақты task_id немесе asset_id мәндерін қолданып, өзіңізге тиесілі бұрыннан бар нәтижелерді медиатека арқылы қалпына келтіріңіз. Генерациялау/өңдеу сұрауын қайта жібермеңіз және operation_id мәнінен күйді сұратуға арналған URL мекенжайын құрастырмаңыз.

Жауап өрістері
ӨрісТүрі
ӨрісcreatedТүріinteger
Өрісdata[].urlТүріstring
Өрісdata[].b64_jsonТүріbase64 string
ӨрісusageТүріobject
Қателер және келесі қадамдар
ЖауапШартКелесі қадам
Жауап400 · invalid_request_errorШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қатеКелесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз.
Жауапserver_errorШартҚайтарылған жауапта операцияны немесе нәтижені тексеру қажет екені көрсетілгенКелесі қадамБастапқыда қайтарылған операцияның/тапсырманың ID мәнін, сұрау тақырыптарын және жауабын сақтаңыз; сол бастапқы операцияны қолдау көрсетілетін тәсілдермен оқуды жалғастырыңыз. Жасау сұрауын қайта жібермеңіз.

Балама атаулар

Модельдердің балама атаулары

Ailoot qwen-image-3.0-pro, qwen-image, qwen-image-latest

Әдіс жолдарының балама атаулары

Жоғарыда көрсетілген әдіс жолдарын пайдаланыңыз.

Шақыруға арналған байланысты ID

qwen-image-3.0-pro, qwen-image, qwen-image-latest

Ailoot · Суреттер POST /v1/images/generations qwen-image

qwen-image

Alibaba /qwen-image
Модель ID
  • qwen-image-3.0-pro
  • qwen-image
  • qwen-image-latest

Бастау

Мәтін бойынша күрделі макеттерге, жазуларға және шынайы бөлшектерге мән беріп сурет жасайтын модель. Постерлерге, кадрлық жоспарларға, мәзірлерге және тығыз композициялы материалдарға жарайды.

Қабылданатын кіріс деректері
Мәтін
Нәтижелер
Суреттер

Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер

Ailoot · Суреттер POST /v1/images/generations
Кіріс
text
Шығыс
image
Шығыс пішімі
Сурет файлы
ӨрісТүріТалапМәндер мен шектеулерӘдепкі
ӨрісmodelТүріstringТалапМіндеттіМәндер мен шектеулер
qwen-image
Әдепкі—
ӨрісpromptТүріstringТалапМіндеттіМәндер мен шектеулер
Ең аз ұзындық: 1
Әдепкі—
ӨрісnТүріintegerТалапМіндетті емесМәндер мен шектеулер
Ең азы: 1
Әдепкі1
Өрісresponse_formatТүріstringТалапМіндетті емесМәндер мен шектеулер
url, b64_json
Әдепкі—
ӨрісstreamТүріbooleanТалапМіндетті емесМәндер мен шектеулерӘдепкіfalse
ӨрісsizeТүріstringТалапМіндетті емесМәндер мен шектеулер
Модельге байланысты
Әдепкі—
Өрісpartial_imagesТүріintegerТалапМіндетті емесМәндер мен шектеулер
Модельге байланысты
Әдепкі—
Өрісimages[].image_urlТүріstringТалапҚолдау көрсетілмейдіМәндер мен шектеулер
Декодталған байттардың ең көп саны: 10 485 760
MIME түрлері: image/png, image/jpeg
Массивтегі суреттердің ең көп саны: 3
Шарттар: Әр images[] объектісіне бір нақты URL беріледі. Массив элементтерінің саны бұл жол түріндегі соңғы мәннен бөлек ұғым.
Мына жағдайда қолданылады: Тек JSON images/edits үшін; JSON images/generations сурет үлгілерін талдамайды.
Әдепкі—
ӨрісimageТүріfileТалапМіндетті емесМәндер мен шектеулер
Декодталған байттардың ең көп саны: 10 485 760
MIME түрлері: image/png, image/jpeg
Мына жағдайда қолданылады: multipart/form-data арқылы генерация
Әдепкі—
Өрісimage[]Түріfile[]ТалапМіндетті емесМәндер мен шектеулер
Элементтердің ең көп саны: 3
Декодталған байттардың ең көп саны: 10 485 760
MIME түрлері: image/png, image/jpeg
Мына жағдайда қолданылады: multipart/form-data арқылы генерация
Әдепкі—
Кіріс материалдарының үйлесімдері

Мәтіннен сурет жасау · Міндетті: prompt

reference_images_generation · Міндетті: prompt

Әдіс параметрлері мен өмірлік циклі
ПараметрПараметр талаптары
Параметрmaterial_typesПараметр талаптарыtext
ПараметрrequiredПараметр талаптарыmodel, prompt
Параметрoptional_controlsПараметр талаптарыnull
Параметрcontent_typeПараметр талаптарыapplication/json

Өмірлік цикл: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · Нақты қайтарылған task_id немесе медиатека жазбасы

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.

Тарифтер

Ailoot әдістерінің мөлшерлемелері

Ailoot СуреттерPOST /v1/images/generations
Кіріс
0,003 $ кіріс суреті үшін
Шығыс
0,04 $ 1K өлшеміндегі сурет үшін
Шығыс
0,075 $ 2K өлшеміндегі сурет үшін

Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →

Сұрау мысалдары

Ailoot · Суреттер

curlPython SDKNode.js SDK
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": "qwen-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': 'qwen-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": "qwen-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");

Нәтижелерді алу және сақтау

Ailoot · Суреттер

Қайтарылған әр суретті жүктеп алыңыз немесе оның Base64 мазмұнын сақтаңыз

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Барлық дайын нәтижені сақтау

Әр дайын суретті сақтаңыз; қайтарылған әр URL арқылы мазмұнды алыңыз немесе оның Base64 мазмұнын декодтаңыз.

Әрбір дерек элементін сақтаңыз. Әрбір b64_json мәнін декодтаңыз немесе қайтарылған әрбір қолтаңбаланған URL мекенжайынан жүктеп алыңыз. Файл атауының кеңейтімін нақты MIME түріне/байттарға қарап таңдаңыз.

Бастапқы жауапты тексеру қажет болса

Кескінді генерациялау немесе өңдеу нәтижесін тексеру қажет болса, бастапқы operation_id/X-Client-Request-ID мәнін және қайтарылған нәтиже туралы ақпаратты сақтаңыз. Нақты task_id немесе asset_id мәндерін қолданып, өзіңізге тиесілі бұрыннан бар нәтижелерді медиатека арқылы қалпына келтіріңіз. Генерациялау/өңдеу сұрауын қайта жібермеңіз және operation_id мәнінен күйді сұратуға арналған URL мекенжайын құрастырмаңыз.

Жауап өрістері
ӨрісТүрі
ӨрісcreatedТүріinteger
Өрісdata[].urlТүріstring
Өрісdata[].b64_jsonТүріbase64 string
ӨрісusageТүріobject
Қателер және келесі қадамдар
ЖауапШартКелесі қадам
Жауап400 · invalid_request_errorШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қатеКелесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз.
Жауапserver_errorШартҚайтарылған жауапта операцияны немесе нәтижені тексеру қажет екені көрсетілгенКелесі қадамБастапқыда қайтарылған операцияның/тапсырманың ID мәнін, сұрау тақырыптарын және жауабын сақтаңыз; сол бастапқы операцияны қолдау көрсетілетін тәсілдермен оқуды жалғастырыңыз. Жасау сұрауын қайта жібермеңіз.

Балама атаулар

Модельдердің балама атаулары

Ailoot qwen-image-3.0-pro, qwen-image, qwen-image-latest

Әдіс жолдарының балама атаулары

Жоғарыда көрсетілген әдіс жолдарын пайдаланыңыз.

Шақыруға арналған байланысты ID

qwen-image-3.0-pro, qwen-image, qwen-image-latest

Ailoot · Суреттер POST /v1/images/generations qwen-image-latest

qwen-image-latest

Alibaba /qwen-image-latest
Модель ID
  • qwen-image-3.0-pro
  • qwen-image
  • qwen-image-latest

Бастау

Мәтін бойынша күрделі макеттерге, жазуларға және шынайы бөлшектерге мән беріп сурет жасайтын модель. Постерлерге, кадрлық жоспарларға, мәзірлерге және тығыз композициялы материалдарға жарайды.

Қабылданатын кіріс деректері
Мәтін
Нәтижелер
Суреттер

Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер

Ailoot · Суреттер POST /v1/images/generations
Кіріс
text
Шығыс
image
Шығыс пішімі
Сурет файлы
ӨрісТүріТалапМәндер мен шектеулерӘдепкі
ӨрісmodelТүріstringТалапМіндеттіМәндер мен шектеулер
qwen-image-latest
Әдепкі—
ӨрісpromptТүріstringТалапМіндеттіМәндер мен шектеулер
Ең аз ұзындық: 1
Әдепкі—
ӨрісnТүріintegerТалапМіндетті емесМәндер мен шектеулер
Ең азы: 1
Әдепкі1
Өрісresponse_formatТүріstringТалапМіндетті емесМәндер мен шектеулер
url, b64_json
Әдепкі—
ӨрісstreamТүріbooleanТалапМіндетті емесМәндер мен шектеулерӘдепкіfalse
ӨрісsizeТүріstringТалапМіндетті емесМәндер мен шектеулер
Модельге байланысты
Әдепкі—
Өрісpartial_imagesТүріintegerТалапМіндетті емесМәндер мен шектеулер
Модельге байланысты
Әдепкі—
Өрісimages[].image_urlТүріstringТалапҚолдау көрсетілмейдіМәндер мен шектеулер
Декодталған байттардың ең көп саны: 10 485 760
MIME түрлері: image/png, image/jpeg
Массивтегі суреттердің ең көп саны: 3
Шарттар: Әр images[] объектісіне бір нақты URL беріледі. Массив элементтерінің саны бұл жол түріндегі соңғы мәннен бөлек ұғым.
Мына жағдайда қолданылады: Тек JSON images/edits үшін; JSON images/generations сурет үлгілерін талдамайды.
Әдепкі—
ӨрісimageТүріfileТалапМіндетті емесМәндер мен шектеулер
Декодталған байттардың ең көп саны: 10 485 760
MIME түрлері: image/png, image/jpeg
Мына жағдайда қолданылады: multipart/form-data арқылы генерация
Әдепкі—
Өрісimage[]Түріfile[]ТалапМіндетті емесМәндер мен шектеулер
Элементтердің ең көп саны: 3
Декодталған байттардың ең көп саны: 10 485 760
MIME түрлері: image/png, image/jpeg
Мына жағдайда қолданылады: multipart/form-data арқылы генерация
Әдепкі—
Кіріс материалдарының үйлесімдері

Мәтіннен сурет жасау · Міндетті: prompt

reference_images_generation · Міндетті: prompt

Әдіс параметрлері мен өмірлік циклі
ПараметрПараметр талаптары
Параметрmaterial_typesПараметр талаптарыtext
ПараметрrequiredПараметр талаптарыmodel, prompt
Параметрoptional_controlsПараметр талаптарыnull
Параметрcontent_typeПараметр талаптарыapplication/json

Өмірлік цикл: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · Нақты қайтарылған task_id немесе медиатека жазбасы

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.

Тарифтер

Ailoot әдістерінің мөлшерлемелері

Ailoot СуреттерPOST /v1/images/generations
Кіріс
0,003 $ кіріс суреті үшін
Шығыс
0,04 $ 1K өлшеміндегі сурет үшін
Шығыс
0,075 $ 2K өлшеміндегі сурет үшін

Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →

Сұрау мысалдары

Ailoot · Суреттер

curlPython SDKNode.js SDK
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": "qwen-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': 'qwen-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": "qwen-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");

Нәтижелерді алу және сақтау

Ailoot · Суреттер

Қайтарылған әр суретті жүктеп алыңыз немесе оның Base64 мазмұнын сақтаңыз

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Барлық дайын нәтижені сақтау

Әр дайын суретті сақтаңыз; қайтарылған әр URL арқылы мазмұнды алыңыз немесе оның Base64 мазмұнын декодтаңыз.

Әрбір дерек элементін сақтаңыз. Әрбір b64_json мәнін декодтаңыз немесе қайтарылған әрбір қолтаңбаланған URL мекенжайынан жүктеп алыңыз. Файл атауының кеңейтімін нақты MIME түріне/байттарға қарап таңдаңыз.

Бастапқы жауапты тексеру қажет болса

Кескінді генерациялау немесе өңдеу нәтижесін тексеру қажет болса, бастапқы operation_id/X-Client-Request-ID мәнін және қайтарылған нәтиже туралы ақпаратты сақтаңыз. Нақты task_id немесе asset_id мәндерін қолданып, өзіңізге тиесілі бұрыннан бар нәтижелерді медиатека арқылы қалпына келтіріңіз. Генерациялау/өңдеу сұрауын қайта жібермеңіз және operation_id мәнінен күйді сұратуға арналған URL мекенжайын құрастырмаңыз.

Жауап өрістері
ӨрісТүрі
ӨрісcreatedТүріinteger
Өрісdata[].urlТүріstring
Өрісdata[].b64_jsonТүріbase64 string
ӨрісusageТүріobject
Қателер және келесі қадамдар
ЖауапШартКелесі қадам
Жауап400 · invalid_request_errorШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қатеКелесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз.
Жауапserver_errorШартҚайтарылған жауапта операцияны немесе нәтижені тексеру қажет екені көрсетілгенКелесі қадамБастапқыда қайтарылған операцияның/тапсырманың ID мәнін, сұрау тақырыптарын және жауабын сақтаңыз; сол бастапқы операцияны қолдау көрсетілетін тәсілдермен оқуды жалғастырыңыз. Жасау сұрауын қайта жібермеңіз.

Балама атаулар

Модельдердің балама атаулары

Ailoot qwen-image-3.0-pro, qwen-image, qwen-image-latest

Әдіс жолдарының балама атаулары

Жоғарыда көрсетілген әдіс жолдарын пайдаланыңыз.

Шақыруға арналған байланысты ID

qwen-image-3.0-pro, qwen-image, qwen-image-latest

FAQ · qwen-image-3.0-pro
Қандай кіріс деректері мен нәтижелер қолжетімді?

POST /v1/images/generations · qwen-image-3.0-pro: text → image

POST /v1/images/generations · qwen-image: text → image

POST /v1/images/generations · qwen-image-latest: text → image

Сұрау қандай өрістерді пайдаланады?

POST /v1/images/generations · qwen-image-3.0-pro: model, prompt, n, response_format, stream, image, image[]

POST /v1/images/generations · qwen-image: model, prompt, n, response_format, stream, image, image[]

POST /v1/images/generations · qwen-image-latest: model, prompt, n, response_format, stream, image, image[]

Қандай шектеулер қолданылады?

POST /v1/images/generations · qwen-image-3.0-pro: n.minimum: 1

POST /v1/images/generations · qwen-image: n.minimum: 1

POST /v1/images/generations · qwen-image-latest: n.minimum: 1

Толығырақ

Ailoot-ты Claude Code, OpenCode, Hermes не қолданбаңызға қосыңыз.

Компания және оның жобалар портфелі

Компания және оның жобалар портфелі: миллиондаған клиент; ай сайынғы сату көлемі миллиардтармен есептеледі.

Токенді жеңілдікпен сатып алыңыз.

Тұрақты жұмысқа жазылым жеңілдігі. Токен сатып алуға промокодтар — 50% дейін.

Жазылым
Тұрақты сұрауыңызға жеңілдікті тариф таңдаңыз.
50% дейінгі промокод
Сатып алғанда код енгізіңіз. Баға қазіргі науқанмен қайта есептеледі.
Тарихтағы шығындар
Әр сұрауға модель, токен және сома сақталады.

Жазылым таңдау · Модель бағасын көру

API-ді сататын өніміңізге қосыңыз.

SaaS, қолданба мен бот Ailoot офертасы және лицензиялық шартына сай. Қайта сатуға реселлер лицензиясын сұраңыз.

Коммерциялық қолданба
Қызметіңіздің ақылы функциясына мәтін, сурет, бейне және дыбыс жасауды қосыңыз.
Реселлер лицензиясы
Жоба сипаттамасы мен кіру схемасын жіберіңіз. Пайдалану мен қайта сатуға жазбаша шарт сұраңыз.
Сайттағы құжаттар
Оферта, лицензиялық шарт және дерек саясаты қоспай тұрып қолжетімді.

Реселлер лицензиясын сұрау · Оферта мен лицензиялық шарт