models

Recraft: Recraft V4.1 Flash

Markdown · JSON

Recraft: Recraft V4.1 Flash

Recraft V4.1 Flash генерирует растровые изображения 1K по тексту для быстрых визуальных итераций. Поддерживает фотографию, портреты, сложные сцены и концепции логотипов с выходом PNG или WebP без потерь и явными цветовыми предпочтениями.

О модели

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

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

Штатный результат — растровое изображение класса 1K Recraft. Выбирайте холст под размещение: горизонтальная иллюстрация для заголовка страницы, вертикальный портрет или квадратный визуал компактной карточки. Форматы — WebP без потерь и PNG.

Начните задание с главного объекта и визуальной цели, затем опишите кадрирование, обстановку, свет и технику. Полезная инструкция для товарной концепции: «Компактное радио кремового цвета на столе из ореха, передний ракурс три четверти, мягкий оконный свет, спокойная редакционная фотография, много свободного места слева». Для иллюстрации обозначьте язык форм, палитру и отношения элементов. Явно задавайте определяющие идею детали вместо несвязанных прилагательных. Документированный предел Flash — до 10 000 символов, позволяющий подробно описать сцену при необходимости.

Настройки разработчика включают предпочтительные цвета и желаемый цвет фона. Seed доступен для воспроизводимости, интерфейс документирует от одного до шести изображений в запросе. Это поддерживает полезное сравнение: сохраняйте объект и композицию, меняйте одно визуальное направление и оценивайте пригодность изображений для целевого макета. Цветовые предпочтения описывают запрос; сравнивайте важные брендовые цвета с готовым материалом до объединения с существующей дизайн-системой.

Flash создаёт растровую графику. Концепция логотипа помогает выбрать силуэт, настроение или расположение, тогда как редактируемые контуры принадлежат отдельным моделям Vector. У Flash также нет версии Pro. Полная линейка V4.1 предоставляет эти отдельные варианты, когда важны векторное редактирование или детали повышенного разрешения. Разработчик описывает последующее уточнение выбранного эскиза до более детального изображения; этот этап — отдельная операция, а не другой штатный размер результата Flash.

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

Практический результат Flash — выбранное визуальное направление с ясным заданием, подходящими пропорциями и пригодным растровым файлом. Сравнивайте объект, кадрирование, фон и важные детали в целевом размере. Сохраняйте удачный промпт и файл вместе, чтобы следующий шаг продолжал выбранное направление. Быстрая итерация помогает исследовать дизайн; штатный векторный вывод, соответствие стилевым референсам и разрешение другой версии V4.1 остаются отдельными выборами модели.

Ailoot Ultra · Картинки POST /v1/images/generations recraft/recraft-v4.1-flash

recraft/recraft-v4.1-flash

Recraft /recraft/recraft-v4.1-flash

Начало

Recraft V4.1 Flash генерирует растровые изображения 1K по тексту для быстрых визуальных итераций. Поддерживает фотографию, портреты, сложные сцены и концепции логотипов с выходом PNG или WebP без потерь и явными цветовыми предпочтениями.

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

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

Ailoot Ultra · Картинки POST /v1/images/generations
Входные данные
text
Результат
image
Выходной формат
Файл изображения
Число результатов
1 выход
ПолеТипТребованиеЗначения и ограниченияПо умолчанию
ПолеmodelТипstringТребованиеОбязательноЗначения и ограничения
recraft/recraft-v4.1-flash
По умолчанию—
ПолеpromptТипstringТребованиеОбязательноЗначения и ограничения
Минимальная длина: 1
Условия: Непустой текстовый запрос UTF8. Общий для производителя лимит символов не выдумывается.
По умолчанию—
ПолеnТипintegerТребованиеНеобязательноЗначения и ограничения
1
По умолчанию1
Полеresponse_formatТипstringТребованиеНеобязательноЗначения и ограничения
url, b64_json
По умолчанию—
ПолеstreamТипbooleanТребованиеНеобязательноЗначения и ограничения
false
По умолчаниюfalse
Сочетания входных материалов

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

Параметры и жизненный цикл метода
ПараметрКонтракт
Параметрcontent_typeКонтрактapplication/json
ПараметрrequiredКонтрактmodel, prompt
Параметрmaterial_typesКонтрактtext
ПараметрoptionalКонтрактn, response_format, stream
ПараметрnКонтракт1
ПараметрstreamКонтрактfalse
Параметрresponse_formatКонтрактurl, b64_json
Параметрreference_imagesКонтрактfalse
ПараметрeditКонтрактfalse
Параметрoutput_format_optionalКонтракт
Параметрresolution_controlКонтрактnull
Параметрaspect_ratio_controlКонтрактnull
Параметрother_fieldsКонтрактотклоняется, кроме точной закреплённой внутренней маршрутизации поставщика

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

Создайте одно изображение по текстовому запросу.

Сохраните каждый элемент data; url/b64_json обозначают способы представления результата.

Тарифы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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=json.loads('{"model": "recraft/recraft-v4.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"}')

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-v4.1-flash', 'prompt': 'A lighthouse on a cliff, watercolor', 'n': 1, 'response_format': 'b64_json'}
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-v4.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"};
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.

Сохраняйте каждый элемент данных. Декодируйте каждый 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 Ultra recraft/recraft-v4.1-flash

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

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

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

recraft/recraft-v4.1-flash

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

POST /v1/images/generations · recraft/recraft-v4.1-flash: text → image

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

POST /v1/images/generations · recraft/recraft-v4.1-flash: model, prompt, n, response_format, stream

Подробнее

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

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

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

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

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

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

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

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

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

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

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