Генерирует изображения и векторную графику по текстовому описанию, включая иллюстрации, логотипы, иконки и сцены с текстом внутри картинки. Цена: изображение Standard - 6 ₽, вектор Standard - 12 ₽, Pro - 35 ₽ за генерацию.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Recraft V4.1 создаёт по текстовому заданию обычные картинки и векторную графику. Её сильная сторона - дизайн-задачи: логотипы, иконки, наклейки, плакаты, упаковка и макеты с надписями прямо в кадре. Входных изображений модель не принимает - только текст.
Что можно получить:
text_to_image).utility_text_to_image).text_to_vector).Каждый режим доступен в версиях Standard и Pro. Pro даёт более детальный результат и стоит дороже.
Каждый вызов создаёт асинхронную операцию. После запуска сохраните её id и проверяйте статус отдельным запросом.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Режим выбирается параметром generation_type, версия модели - параметром model_tier:
text_to_image - растровое изображение;utility_text_to_image - растровое изображение в спокойной, «деловой» подаче;text_to_vector - векторная графика в SVG.{
"tool": "recraft-v4-1",
"input": {
"generation_type": "text_to_image",
"model_tier": "standard",
"prompt": "...",
"image_size": "1:1"
}
}
tool - slug нейросети, всегда "recraft-v4-1".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
generation_type | enum | Да | Что создать. text_to_image - растровое изображение, utility_text_to_image - растровое изображение в ровной, предсказуемой подаче, text_to_vector - векторная графика (SVG). Если не передать, будет text_to_image. |
model_tier | enum | Да | Версия модели. standard - быстрее и дешевле, pro - детальнее и крупнее. Если не передать, будет standard. |
prompt | string | Да | Описание того, что нужно нарисовать: объект, стиль, фон, цвета, надписи. От 3 до 10 000 символов. Точный текст надписи лучше взять в кавычки. |
image_size | enum | Да | Соотношение сторон. Варианты: 1:1 - квадрат, 16:9 - горизонталь для обложек и баннеров, 9:16 - вертикаль для сторис, 4:3 - горизонталь, 3:4 - вертикаль для плакатов. Если не передать, будет 1:1. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "recraft-v4-1",
"input": {
"generation_type": "text_to_image",
"model_tier": "standard",
"prompt": "Плакат для книжного магазина: стопка книг и чашка чая на подоконнике, за окном дождь. Сверху крупная надпись «Читай осенью». Плоская иллюстрация, тёплые цвета.",
"image_size": "3:4"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'recraft-v4-1',
input: {
generation_type: 'text_to_image',
model_tier: 'standard',
prompt:
'Плакат для книжного магазина: стопка книг и чашка чая на подоконнике, за окном дождь. Сверху крупная надпись «Читай осенью». Плоская иллюстрация, тёплые цвета.',
image_size: '3:4',
},
}),
})
const data = await response.json()
console.log(data.id, data.status)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'recraft-v4-1',
'input': {
'generation_type': 'text_to_image',
'model_tier': 'standard',
'prompt': 'Плакат для книжного магазина: стопка книг и чашка чая на подоконнике, за окном дождь. Сверху крупная надпись «Читай осенью». Плоская иллюстрация, тёплые цвета.',
'image_size': '3:4',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Подходит для карточек товаров и нейтральных предметных сцен.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "recraft-v4-1",
"input": {
"generation_type": "utility_text_to_image",
"model_tier": "standard",
"prompt": "Керамическая кружка молочного цвета на светло-сером фоне, мягкая тень, студийный свет, вид сбоку",
"image_size": "1:1"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'recraft-v4-1',
input: {
generation_type: 'utility_text_to_image',
model_tier: 'standard',
prompt:
'Керамическая кружка молочного цвета на светло-сером фоне, мягкая тень, студийный свет, вид сбоку',
image_size: '1:1',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'recraft-v4-1',
'input': {
'generation_type': 'utility_text_to_image',
'model_tier': 'standard',
'prompt': 'Керамическая кружка молочного цвета на светло-сером фоне, мягкая тень, студийный свет, вид сбоку',
'image_size': '1:1',
},
},
timeout=30,
)
print(response.json())
Результат придёт файлом .svg - его можно масштабировать для визитки или большого баннера без потери качества.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "recraft-v4-1",
"input": {
"generation_type": "text_to_vector",
"model_tier": "standard",
"prompt": "Наклейка для ноутбука: рыжая лиса в больших наушниках спит, свернувшись клубком, над ней надпись «Не беспокоить». Плоский стиль, толстая белая обводка, четыре цвета.",
"image_size": "1:1"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'recraft-v4-1',
input: {
generation_type: 'text_to_vector',
model_tier: 'standard',
prompt:
'Наклейка для ноутбука: рыжая лиса в больших наушниках спит, свернувшись клубком, над ней надпись «Не беспокоить». Плоский стиль, толстая белая обводка, четыре цвета.',
image_size: '1:1',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'recraft-v4-1',
'input': {
'generation_type': 'text_to_vector',
'model_tier': 'standard',
'prompt': 'Наклейка для ноутбука: рыжая лиса в больших наушниках спит, свернувшись клубком, над ней надпись «Не беспокоить». Плоский стиль, толстая белая обводка, четыре цвета.',
'image_size': '1:1',
},
},
timeout=30,
)
print(response.json())
Любой режим можно запустить в версии Pro - достаточно передать "model_tier": "pro".
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "recraft-v4-1",
"input": {
"generation_type": "text_to_image",
"model_tier": "pro",
"prompt": "Рекламный плакат кофейни: бумажный стакан тыквенного латте на деревянном столе у окна, рядом маленькие тыквы и осенние листья. Сверху крупная надпись «Тыквенный латте». Тёплый вечерний свет.",
"image_size": "3:4"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'recraft-v4-1',
input: {
generation_type: 'text_to_image',
model_tier: 'pro',
prompt:
'Рекламный плакат кофейни: бумажный стакан тыквенного латте на деревянном столе у окна, рядом маленькие тыквы и осенние листья. Сверху крупная надпись «Тыквенный латте». Тёплый вечерний свет.',
image_size: '3:4',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'recraft-v4-1',
'input': {
'generation_type': 'text_to_image',
'model_tier': 'pro',
'prompt': 'Рекламный плакат кофейни: бумажный стакан тыквенного латте на деревянном столе у окна, рядом маленькие тыквы и осенние листья. Сверху крупная надпись «Тыквенный латте». Тёплый вечерний свет.',
'image_size': '3:4',
},
},
timeout=30,
)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "recraft-v4-1",
"cost": 6,
"balance_after": 494,
"created_at": "2026-09-30T12:45:51.971771+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "recraft-v4-1",
"cost": 6,
"created_at": "2026-09-30T12:45:51.971771+00:00",
"completed_at": "2026-09-30T12:46:14.310495+00:00",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/recraft-v4-1/image-1.webp"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "recraft-v4-1",
"cost": 12,
"created_at": "2026-09-30T12:50:02.114532+00:00",
"completed_at": "2026-09-30T12:50:24.871204+00:00",
"result": {
"type": "file",
"files": [
{
"url": "https://storage.bratuha.ru/results/recraft-v4-1/vector-1.svg",
"name": "result"
}
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "recraft-v4-1",
"cost": 6,
"created_at": "2026-09-30T12:45:51.971771+00:00",
"completed_at": "2026-09-30T12:46:03.520117+00:00",
"result": null,
"error_message": "Ваш запрос не прошел модерацию."
}
Сохраните id из ответа на создание и запрашивайте статус операции по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForResult(id: string) {
while (true) {
const response = await fetch(`https://bratuha.ru/api/v1/operations/${id}`, {
headers: { Authorization: 'Bearer brth_ваш_ключ' },
})
const operation = await response.json()
if (operation.status === 'completed' || operation.status === 'failed') {
return operation
}
await new Promise((resolve) => setTimeout(resolve, 5000))
}
}
Статус меняется с queued на processing, а затем на completed или failed. Обычно результат готов за 20-30 секунд. Опрашивать одну операцию можно не чаще раза в секунду, разумный интервал - 3-5 секунд.
Форма result зависит от режима.
Для text_to_image и utility_text_to_image:
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/recraft-v4-1/image-1.webp"
]
}
type - "image".urls - массив с одной ссылкой на картинку в формате WebP.Для text_to_vector:
{
"type": "file",
"files": [
{
"url": "https://storage.bratuha.ru/results/recraft-v4-1/vector-1.svg",
"name": "result"
}
]
}
type - "file".files - массив с одним SVG-файлом: url - ссылка на файл, name - служебное имя.Если ваш код обрабатывает оба режима, проверяйте result.type: у изображения ссылки лежат в urls, у вектора - в files[].url.
Цена фиксирована за один запуск и зависит от режима и версии модели. Длина задания и соотношение сторон на цену не влияют.
generation_type | standard | pro |
|---|---|---|
text_to_image | 6 ₽ | 35 ₽ |
utility_text_to_image | 6 ₽ | 35 ₽ |
text_to_vector | 12 ₽ | 35 ₽ |
Стоимость списывается при создании операции и приходит в поле cost ответа.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую оплаченную операцию. Если ответ потерялся, не повторяйте запрос вслепую.queued, результат забирается по id.failed и сообщением «Ваш запрос не прошел модерацию.»text_to_image.