models

Recraft: Recraft V3

Markdown · JSON

Recraft: Recraft V3

Recraft V3 создаёт фотографии, иллюстрации и графические макеты с композицией, учитывающей текст, и стилевыми настройками. Отдельные растровый и SVG-варианты подходят для постеров, брендовых наборов, иконок и дизайнов, где слова и визуальная структура должны работать вместе.

О модели

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

Recraft V3 — модель генерации изображений для графического дизайна, фотографических и иллюстрированных сцен. Текстовое задание описывает объект, обстановку и композицию; результат — изображение. V3 развивает отображение текста и фотореализм Recraft, сохраняя стилевую согласованность по примерам без переобучения.

Текст как часть композиции

V3 работает с текстом внутри изображения, включая длинные надписи и буквы среднего размера. Recraft описывает этап макета, задающий слова и позиции до генерации. Макет создаётся автоматически из задания или вручную в дизайнерской среде Recraft. Это связывает заголовок, иллюстрацию и вспомогательный текст в одной композиции. Разработчик также документирует явные координаты текстового макета относительно изображения, а не фиксированной пиксельной сетки. Каждый элемент содержит одно слово и четыре угловые точки в нормированных координатах: (0, 0) — левый верхний угол, (1, 1) — правый нижний. Координаты могут выходить за диапазон, тогда форма обрезается. Слова, явно заданные в текстовом макете, должны соответствовать документированным ограничениям на символы.

Для постера или обложки дайте точные слова и иерархию: ведущая строка, её место и поддержка картинкой. При выборе результата проверьте написание и интервалы.

Стиль, палитра и художественное направление

V3 включает готовые фотографические, иллюстративные и эмблемные стили, а также отдельную библиотеку векторных. Recraft V3 Raw — стиль по умолчанию растровой модели, Vector art — векторной. Photorealism стремится к фотографическому виду, Illustration допускает стилизованные текстуры, затенение и сложные цветовые переходы. Векторные стили предпочитают формы, ограниченные палитры, плоские заливки или простые градиенты.

Пользовательские стили создаются из референсов, существующих совместимых стилей или сочетания. Они дают повторно используемое направление серии. Документированные настройки смешивания назначают референсам и исходным стилям отдельные веса; число весов соответствует числу источников. Две перечисленные политики смешивания — PaletteMatch и MaxWeight. Разработчик допускает до 10 стилевых референсов и использует обычный режим соответствия стилю V3. Сохранённый пользовательский стиль и прямые референсы — альтернативные входы; пользовательский стиль должен соответствовать модели генерации.

Предпочтительные цвета и фон направляют палитру. Документированы до 10 RGB-цветов с компонентами от 0 до 255. Необязательные относительные веса — от 0 до 1; их задают всем цветам или ни одному, сумма не превышает 1. Художественный уровень — от 0 для статичной чистой обработки до 5 для динамичных эксцентричных композиций. Негативный промпт описывает нежелательные элементы; отдельное отключение текста убирает встроенные текстовые макеты. Для воспроизводимости доступен случайный seed. Эти настройки дают разные рычаги для сцены, стиля и макета.

Растровые изображения и отдельный SVG-вариант

Recraft документирует два варианта V3. Растровая модель выдаёт WebP без потерь или PNG для фотографических деталей, затенения и текстурной иллюстрации. Recraft V3 Vector выдаёт SVG: контуры и формы, масштабируемые без фиксированного разрешения. Этот вариант подходит для пиктограмм, концепций логотипов, значков и детальной векторной графики. Преобразование растра в вектор — отдельная операция, отличная от прямой генерации вектора.

Оба варианта имеют свою идентичность. Картинка с векторным видом и настоящий SVG — разные варианты результата. При подготовке дизайн-процесса задавайте результат, не считая общее имя V3 доказательством одинакового типа файла каждой операции.

Редактирование и завершение существующей графики

Документация V3 перечисляет image-to-image, перерисовку области, расширение за границы и замену либо генерацию фона. Image-to-image объединяет существующую картинку и новое задание. Перерисовка обновляет выбранную область по изображению и совпадающей маске; расширение добавляет содержание за исходным кадром. Операции фона работают с окружением объекта.

Сопутствующие инструменты включают стирание, удаление фона, векторизацию и два подхода повышения разрешения. Creative upscaling может вносить новые детали; crisp upscaling создаёт более резкую увеличенную версию существующего содержания. Это отдельные операции с собственными входами и результатами, а не дополнительные значения имени растровой или векторной модели.

Ограничения промпта, размера и исходного изображения

Спецификация генерации V3 принимает промпт до 1000 символов и 1–6 изображений на запрос. Поддерживает 14 пропорций: 1:1, 2:1, 1:2, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 6:10, 14:10, 10:14, 16:9 и 9:16. Растровые примеры включают 1024x1024, 1820x1024 и 1024x1820. Точные растровые размеры выбираются из списка; SVG использует пропорции без фиксированного пиксельного размера. Без размера система разработчика выбирает его по промпту.

Для операций с изображениями перечислены PNG, JPG и WebP, а SVG — где его допускает конкретная операция. Файлы меньше 20 МБ, не более 16 МП, длинная сторона не более 4096 пикселей. Короткая — не менее 256 пикселей, с исключением 32 пикселя для crisp upscaling. Маски совпадают с размером изображения и используют чистые чёрный и белый; общий предел стилевых референсов — 64 МБ.

Для проекта с Ailoot API превратите задачу в целевое задание изображения: точный текст, расположение предметов, стиль и композиция. Постер, товарная сцена и серия иконок требуют разных заданий; сохраняйте различия варианта V3 и операции при решении, как использовать каждый результат.

Ailoot Ultra · Картинки POST /v1/images/generations recraft/recraft-v3

recraft/recraft-v3

Recraft /recraft/recraft-v3

Начало

Recraft V3 создаёт фотографии, иллюстрации и графические макеты с композицией, учитывающей текст, и стилевыми настройками. Отдельные растровый и SVG-варианты подходят для постеров, брендовых наборов, иконок и дизайнов, где слова и визуальная структура должны работать вместе.

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

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

Ailoot Ultra · Картинки POST /v1/images/generations
Входные данные
text, image
Результат
image
Выходной формат
Файл изображения
ПолеТипТребованиеЗначения и ограниченияПо умолчанию
ПолеmodelТипstringТребованиеОбязательноЗначения и ограничения
recraft/recraft-v3
По умолчанию—
ПолеpromptТипstringТребованиеОбязательноЗначения и ограничения
Минимальная длина: 1
По умолчанию—
ПолеnТипintegerТребованиеНеобязательноЗначения и ограничения
Минимум: 1
Максимум: 6
По умолчанию—
Полеaspect_ratioТипstringТребованиеНеобязательноЗначения и ограничения
1:1, 4:3, 3:4, 16:9, 9:16, auto
По умолчанию—
Полеinput_referencesТипarrayТребованиеНеобязательноЗначения и ограничения
Минимум элементов: 0
Максимум элементов: 1
По умолчанию—
Сочетания входных материалов

Из текста в изображение · Обязательно: prompt

Параметры и жизненный цикл метода
ПараметрКонтракт
Параметрcontent_typeКонтрактapplication/json
ПараметрrequiredКонтрактmodel, prompt
Параметрmaterial_typesКонтрактtext, image
Параметрoptional_controlsКонтрактaspect_ratio, n, input_references
Параметрexact_supported_parametersКонтракт{"aspect_ratio":{"type":"enum","values":["1:1","4:3","3:4","16:9","9:16","auto"]},"n":{"type":"range","min":1,"max":6},"input_references":{"type":"range","min":0,"max":1}}
Параметрreference_material_ruleКонтрактТолько фактические референсные изображения клиента; к ним применяются условия конечной точки поставщика.

Псевдонимы метода: /v1/images

Жизненный цикл: 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.

Тарифы

Как рассчитывается итоговая плата

Отображаемые тарифы позволяют оценить стоимость до генерации. Итоговое списание рассчитывается по стоимости, записанной для исходной генерации. Измеренная длительность результата и прогнозные объёмы не являются итоговым оплачиваемым объёмом.

Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.

Быстрый режим
Не указано При выборе быстрого режима
Режим flex
Не указано При выборе режима flex
Максимальная интенсивность рассуждений
Не указано При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)

Оценочные ставки для сравнения

Цены по конфигурациям

Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.

КонфигурацияШкала ставокПрогноз количестваРасчётная единицаПлата
КонфигурацияБазовые тарифы на токеныШкала ставокБазовая ставкаПрогноз количества—Расчётная единица—Плата
Вход · Входные токены · Оценка только для сравнения — / 1K токенов
Выход · Выходные токены · Оценка только для сравнения — / 1K токенов
Вход · Чтение кэша · Оценка только для сравнения — / 1K токенов
Вход · Запись в кэш · Оценка только для сравнения — / 1K токенов
Вход · Запись в кэш, 1 час · Оценка только для сравнения — / 1K токенов
КонфигурацияUltraШкала ставок—Прогноз количества—Расчётная единицаза выходное изображениеПлата
Выход · вывод изображения · Оценка только для сравнения $0.08 за выходное изображение
КонфигурацияОриентировочная стоимость генерацииШкала ставок—Прогноз количестваОценка для одной генерацииРасчётная единица—Плата
Выход · Оценочная стоимость генерации · Оценка только для сравнения $0.08 оценка до генерации

Эта оценка не является дополнительным списанием или фиксированным тарифом для завершённой генерации.

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →

Сведения о справочном тарифе

Справочные шкалы модели не меняют выбор метода, расчёт стоимости или списания. Действующая плата определяется ставками выбранного метода Ailoot.

Тарифные конфигурации изображений

Цены по конфигурациям

КонфигурацияУсловия расчётаПлата
КонфигурацияВыходное изображениеУсловия расчётаВариант тарификации не заявлен.Плата
Выход · Выходное изображение $0.08 за изображение

Эквивалентные записи описывают одно начисление; они не добавляют вторую плату.

Примеры запросов

Ailoot Ultra · Картинки

curlPython SDKNode.js SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'recraft/recraft-v3', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

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")

request={'model': 'recraft/recraft-v3', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
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": "recraft/recraft-v3", "prompt": "a red panda astronaut floating in space, studio lighting"};
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 Ultra · Картинки

Загрузите каждое полученное изображение или сохраните его содержимое 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.

Сохраните каждый элемент data и полные данные об использовании; обеспечьте принадлежность Ailoot и сохранение всех фактически возвращённых изображений. Не выдумывайте URL или ID.

Если нужно проверить исходный ответ

Если результат генерации или редактирования изображения требует проверки, сохраните исходный 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

Псевдонимы

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

Ailoot Ultra recraft/recraft-v3

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

/v1/images

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

recraft/recraft-v3

FAQ · Recraft: Recraft V3
Какие входные данные и результаты доступны?

POST /v1/images/generations · recraft/recraft-v3: text, image → image

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

POST /v1/images/generations · recraft/recraft-v3: model, prompt, n, aspect_ratio, input_references

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

POST /v1/images/generations · recraft/recraft-v3: n.minimum: 1; n.maximum: 6

Подробнее

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

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

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

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

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

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

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

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

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

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

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