models

grok-imagine-image-2.0

Markdown · JSON

grok-imagine-image-2.0

Grok Imagine Image 2.0 создаёт изображения по описанию, позволяя выбирать пропорции, разрешение и качество. Сама модель также поддерживает редактирование изображений и перенос визуального стиля.

О модели

Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.

Генерация и уточнение изображения

Grok Imagine Image 2.0 получает описание сцены и создаёт изображение. Модель xAI также умеет работать с исходным визуальным материалом: применять изменения по текстовой инструкции и продолжать редактирование, используя предыдущий результат как новый вход. В Ailoot опубликован метод генерации по тексту.

Визуальные стили

Для Image 2.0 xAI описывает реалистичную фотографию, аниме, масляную живопись и карандашный рисунок. Стиль задаётся словами; при работе с исходным изображением инструкция определяет желаемую эстетику. Последовательные изменения позволяют добавлять детали и уточнять результат шаг за шагом.

Пропорции, размер и количество

  • n задаёт от 1 до 10 изображений по одному описанию; по умолчанию — одно.
  • aspect_ratio выбирает форму кадра; auto оставляет выбор модели.
  • resolution задаёт 1K или 2K; стандартное значение — 1K.

Предусмотрены квадратные, горизонтальные и вертикальные форматы: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2. Есть форматы вытянутых экранов 19.5:9, 9:19.5, 20:9, 9:20, а также широкие 21:9 и 5:2.

Выбор качества

Image 2.0 поддерживает low, medium и auto. Параметр относится именно к этой версии; auto используется, если качество не указано. На дату проверки автоматический режим выбирает low при генерации и medium при редактировании.

Режим medium, по данным xAI, выделяет больше вычислений для детальной проработки изображения. Явный выбор low или medium фиксирует нужный режим, тогда как поведение auto определяется текущей настройкой производителя.

Вход и результат

У модели есть текстовый и визуальный вход, а результатом служат изображения. В собственном режиме редактирования xAI Image 2.0 принимает до пяти исходных изображений; для текущего метода генерации Ailoot используется текстовый вход. Результат можно передавать как файл по ссылке либо в base64.

Ailoot · Картинки POST /v1/images/generations grok-imagine-image-2.0

grok-imagine-image-2.0

xAI /grok-imagine-image-2.0

Начало

Grok Imagine Image 2.0 создаёт изображения по описанию, позволяя выбирать пропорции, разрешение и качество. Сама модель также поддерживает редактирование изображений и перенос визуального стиля.

Допустимые входные данные
Текст
Результаты
Картинки

Доступно в Ailoot · входные данные и методы

Ailoot · Картинки POST /v1/images/generations
Входные данные
text
Результат
image
Выходной формат
Файл изображения
ПолеТипТребованиеЗначения и ограниченияПо умолчанию
ПолеmodelТипstringТребованиеОбязательноЗначения и ограничения
grok-imagine-image-2.0
По умолчанию—
ПолеpromptТипstringТребованиеОбязательноЗначения и ограниченияПо умолчанию—
ПолеnТипintegerТребованиеНеобязательноЗначения и ограничения
Минимум: 1
Максимум: 10
По умолчанию1
Полеresponse_formatТипstringТребованиеНеобязательноЗначения и ограничения
url, b64_json
По умолчаниюurl
ПолеresolutionТипstringТребованиеНеобязательноЗначения и ограничения
1k, 2k
По умолчанию1k
Полеaspect_ratioТипstringТребованиеНеобязательноЗначения и ограничения
auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, 19.5:9, 9:19.5, 20:9, 9:20, 21:9, 5:2
По умолчаниюauto
ПолеqualityТипstringТребованиеНеобязательноЗначения и ограничения
low, medium, auto
По умолчанию—
Сочетания входных материалов

Из текста в изображение · Обязательно: 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,01 $ за входное изображение
Выход
0,05 $ за изображение 1.5K, низкое качество
Выход
0,07 $ за изображение 1.5K, среднее качество
Выход
0,04 $ за изображение 1K, низкое качество
Выход
0,06 $ за изображение 1K, среднее качество
Выход
0,06 $ за изображение 2K, низкое качество
Выход
0,08 $ за изображение 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": "grok-imagine-image-2.0", "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': 'grok-imagine-image-2.0', '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": "grok-imagine-image-2.0", "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. Не отправляйте запрос генерации или редактирования повторно и не составляйте URL опроса из operation_id.

Поля ответа
ПолеТип
ПолеcreatedТипinteger
Полеdata[].urlТипstring
Полеdata[].b64_jsonТипbase64 string
ПолеusageТипobject
Ошибки и дальнейшие шаги
ОтветУсловиеСледующий шаг
Ответ400 · invalid_request_errorУсловиеНеверные обязательные поля, представление материалов или значение параметраСледующий шагИсправьте указанные поля перед новым запросом на создание.
Ответserver_errorУсловиеВозвращённый ответ указывает, что операция или результат требуют проверкиСледующий шагСохраните исходный возвращённый ID операции или задачи, заголовки запроса и ответ; продолжайте поддерживаемые операции чтения исходной операции. Не отправляйте запрос создания повторно.

Псевдонимы

Псевдонимы моделей

Ailoot grok-imagine-image-2.0

Псевдонимы путей метода

Используйте пути методов, указанные выше.

Связанные ID для вызова

grok-imagine-image-2.0

FAQ · grok-imagine-image-2.0
Какие входные данные и результаты доступны?

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

Какие поля использует запрос?

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

Какие ограничения действуют?

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

Подробнее

Подключите Ailoot к Claude Code, OpenCode, Hermes или своему приложению.

Компания и портфель её проектов

Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.

Покупайте токены со скидкой.

Скидка по подписке для регулярной работы. Промокоды — до 50% на покупку токенов.

Подписка
Выберите тариф со скидкой для своих регулярных запросов.
Промокод до 50%
Введите код при покупке. Цена пересчитается с учётом действующей акции.
Расходы в истории
Модель, токены и сумма сохраняются для каждого запроса.

Выбрать подписку · Посмотреть цены моделей

Подключайте API к продукту, который вы продаёте.

SaaS, приложения и боты — по оферте и лицензионному договору Ailoot. Для перепродажи запросите реселлерскую лицензию.

Коммерческое приложение
Встраивайте генерацию текста, картинок, видео и звука в платные функции своего сервиса.
Лицензия для реселлера
Пришлите описание проекта и схему доступа. Запросите письменные условия использования и перепродажи.
Документы на сайте
Оферта, лицензионный договор и политика обработки данных доступны до подключения.

Запросить реселлерскую лицензию · Оферта и лицензионный договор