Генерирует изображения или SVG-вектор по текстовому описанию. Цена зависит от режима: текст в изображение - 7 ₽ (обычная) или 40 ₽ (Pro), текст в SVG - 15 ₽ (обычная) или 50 ₽ (Pro).
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Recraft V4 рисует по текстовому заданию обычные картинки и векторную графику. Она хорошо справляется с дизайн-задачами: плакаты, обложки, логотипы, иконки, наклейки и макеты с надписями прямо в кадре, в том числе на русском. Входные изображения модель не принимает - только текст.
Что можно получить:
text_to_image).text_to_svg).Каждый режим доступен в двух версиях: обычной (standard) и Pro (pro). Pro прорабатывает детали тщательнее и стоит дороже.
Каждый вызов создаёт асинхронную операцию. Сохраните её id из ответа и проверяйте статус отдельным запросом.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Режим выбирается параметром generation_type, версия модели - параметром model_tier:
text_to_image - растровое изображение, пропорции задаёт image_size_image;text_to_svg - векторная графика, пропорции задаёт image_size_svg.{
"tool": "recraft-v4",
"input": {
"generation_type": "text_to_image",
"model_tier": "standard",
"prompt": "...",
"image_size_image": "3:4"
}
}
tool - slug нейросети, всегда "recraft-v4".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
generation_type | enum | Да | Что создать. text_to_image - растровое изображение, text_to_svg - векторная графика (SVG). Если не передать, будет text_to_image. |
model_tier | enum | Да | Версия модели. standard - обычная, быстрее и дешевле, pro - более детальная. Если не передать, будет standard. |
prompt | string | Да | Описание того, что нужно нарисовать: объект, стиль, фон, цвета, надписи. От 3 до 10 000 символов. Точный текст надписи лучше взять в кавычки. |
image_size_image | enum | Да, для text_to_image | Соотношение сторон картинки. Работает только в режиме text_to_image. Варианты: 1:1 - квадрат, 16:9 - горизонталь для обложек и баннеров, 9:16 - вертикаль для сторис, 4:3 - горизонталь, 3:4 - вертикаль для плакатов. Если не передать, будет 3:4. |
image_size_svg | enum | Да, для text_to_svg | Соотношение сторон вектора. Работает только в режиме text_to_svg. Варианты те же: 1:1, 16:9, 9:16, 4:3, 3:4. Если не передать, будет 1:1. |
Параметр пропорций, который не относится к выбранному режиму, не учитывается. Например, в режиме text_to_svg значение image_size_image ни на что не влияет.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "recraft-v4",
"input": {
"generation_type": "text_to_image",
"model_tier": "standard",
"prompt": "Плакат для книжного магазина: стопка книг и чашка чая на подоконнике, за окном дождь. Сверху крупная надпись «Читай осенью». Плоская иллюстрация, тёплые цвета.",
"image_size_image": "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',
input: {
generation_type: 'text_to_image',
model_tier: 'standard',
prompt: 'Плакат для книжного магазина: стопка книг и чашка чая на подоконнике, за окном дождь. Сверху крупная надпись «Читай осенью». Плоская иллюстрация, тёплые цвета.',
image_size_image: '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',
'input': {
'generation_type': 'text_to_image',
'model_tier': 'standard',
'prompt': 'Плакат для книжного магазина: стопка книг и чашка чая на подоконнике, за окном дождь. Сверху крупная надпись «Читай осенью». Плоская иллюстрация, тёплые цвета.',
'image_size_image': '3:4',
},
},
timeout=30,
)
print(response.status_code)
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",
"input": {
"generation_type": "text_to_svg",
"model_tier": "standard",
"prompt": "Наклейка для ноутбука: рыжая лиса в больших наушниках спит, свернувшись клубком, над ней надпись «Не беспокоить». Плоский стиль, толстая белая обводка, четыре цвета.",
"image_size_svg": "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',
input: {
generation_type: 'text_to_svg',
model_tier: 'standard',
prompt: 'Наклейка для ноутбука: рыжая лиса в больших наушниках спит, свернувшись клубком, над ней надпись «Не беспокоить». Плоский стиль, толстая белая обводка, четыре цвета.',
image_size_svg: '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',
'input': {
'generation_type': 'text_to_svg',
'model_tier': 'standard',
'prompt': 'Наклейка для ноутбука: рыжая лиса в больших наушниках спит, свернувшись клубком, над ней надпись «Не беспокоить». Плоский стиль, толстая белая обводка, четыре цвета.',
'image_size_svg': '1:1',
},
},
timeout=30,
)
print(response.status_code)
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",
"input": {
"generation_type": "text_to_image",
"model_tier": "pro",
"prompt": "Рекламный плакат кофейни: бумажный стакан тыквенного латте на деревянном столе у окна, рядом маленькие тыквы и осенние листья. Сверху крупная надпись «Тыквенный латте». Тёплый вечерний свет.",
"image_size_image": "16:9"
}
}'
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',
input: {
generation_type: 'text_to_image',
model_tier: 'pro',
prompt: 'Рекламный плакат кофейни: бумажный стакан тыквенного латте на деревянном столе у окна, рядом маленькие тыквы и осенние листья. Сверху крупная надпись «Тыквенный латте». Тёплый вечерний свет.',
image_size_image: '16:9',
},
}),
})
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',
'input': {
'generation_type': 'text_to_image',
'model_tier': 'pro',
'prompt': 'Рекламный плакат кофейни: бумажный стакан тыквенного латте на деревянном столе у окна, рядом маленькие тыквы и осенние листья. Сверху крупная надпись «Тыквенный латте». Тёплый вечерний свет.',
'image_size_image': '16:9',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "recraft-v4",
"cost": 7,
"balance_after": 493,
"created_at": "2026-09-30T19:50:36.764854+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "recraft-v4",
"cost": 7,
"created_at": "2026-09-30T19:50:36.764854+00:00",
"completed_at": "2026-09-30T19:51:02.490825+00:00",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/recraft-v4/image-1.webp"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "recraft-v4",
"cost": 15,
"created_at": "2026-09-30T19:55:10.114532+00:00",
"completed_at": "2026-09-30T19:55:41.871204+00:00",
"result": {
"type": "file",
"files": [
{
"url": "https://storage.bratuha.ru/results/recraft-v4/vector-1.svg",
"name": "result"
}
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "recraft-v4",
"cost": 7,
"created_at": "2026-09-30T19:50:36.764854+00:00",
"completed_at": "2026-09-30T19:50:49.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-40 секунд. Опрашивать одну операцию можно не чаще раза в секунду, разумный интервал - 3-5 секунд.
Форма result зависит от режима.
Для text_to_image:
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/recraft-v4/image-1.webp"
]
}
type - "image".urls - массив с одной ссылкой на картинку в формате WebP.Размер картинки зависит от пропорций и одинаков для standard и pro:
| Пропорции | Размер, пикселей |
|---|---|
1:1 | 1024 × 1024 |
16:9 | 1344 × 768 |
9:16 | 768 × 1344 |
4:3 | 1216 × 896 |
3:4 | 896 × 1216 |
Для text_to_svg:
{
"type": "file",
"files": [
{
"url": "https://storage.bratuha.ru/results/recraft-v4/vector-1.svg",
"name": "result"
}
]
}
type - "file".files - массив с одним SVG-файлом: url - ссылка на файл, name - служебное имя.Если ваш код обрабатывает оба режима, проверяйте result.type: у изображения ссылки лежат в urls, у вектора - в files[].url.
Цена фиксирована за один запуск и зависит от режима и версии модели. Длина задания и пропорции на цену не влияют.
generation_type | standard | pro |
|---|---|---|
text_to_image | 7 ₽ | 40 ₽ |
text_to_svg | 15 ₽ | 50 ₽ |
Стоимость списывается при создании операции и приходит в поле cost ответа.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую оплаченную операцию. Если ответ потерялся, не повторяйте запрос вслепую.queued, результат забирается по id.failed и сообщением «Ваш запрос не прошел модерацию.»text_to_image.