Все запросы к API требуют токен аутентификации. Токен передается в параметре token
каждого запроса.
{
"token": "ваш_api_ключ"
}
POST https://neuroimg.art/api/v1/generate
Параметр | Тип | Обязательный | По умолчанию | Диапазон | Описание |
---|---|---|---|---|---|
token |
string | Да | - | - | API-ключ |
model |
string | Да | - | - | Имя модели (например "FLUX-Devfp32") |
prompt |
string | Да | - | - | Текст описания на английском |
negative_prompt |
string | Нет | "EasyNegative" | - | Нежелательные элементы |
width |
int | Нет | 1024 | 256-1024 | Ширина изображения |
height |
int | Нет | 1024 | 256-1024 | Высота изображения |
steps |
int | Нет | 35 | 1-35 | Шаги обработки |
sampler |
string | Нет | "Euler" | - | Алгоритм сэмплирования |
cfg_scale |
float | Нет | 7 | 1-30 | Контроль соответствия промпту |
seed |
int | Нет | -1 | - | Зерно генерации |
init_image |
string | Нет* | - | - | Base64 для img2img/inpaint |
mask_image |
string | Нет* | - | - | Base64 маски для инпейнтинга |
denoising_strength |
float | Нет | 0.7 | 0.0-1.0 | Сила изменения оригинала |
loras |
object | Нет | - | - | Словарь {lora_name: weight} |
stream |
bool | Нет | false | - | Потоковый режим |
response_type |
string | Нет | "url" | url/base64 | Формат результата |
nsfw_filter |
bool | Нет | false | - | Фильтр NSFW |
send_to_gallery |
bool | Нет | false | - | Сохранить в галерее |
*Обязателен для img2img/inpaint
При стандартном запросе (stream: false
) сервер вернет ответ только после завершения генерации. При потоковом режиме (stream: true
) сервер будет отправлять промежуточные статусы генерации в реальном времени.
{
"status": "WAITING",
"job_id": "j-12345678",
"queue_position": 3,
"queue_total": 10
}
{
"status": "RUNNING",
"job_id": "j-12345678",
"progress": "Processing image..."
}
{
"status": "SUCCESS",
"job_id": "j-12345678",
"image_url": "https://neuroimg.art/i/12345678.png", // или Base64 код, смотря какой параметр вы выбрали в response_type
"seed": 42424242,
"file_size": "2.4MB",
"image_size": "1024x1024",
"credits_used": 3.5
}
Генерация изображения из текстового описания.
Пример запроса:
{
"token": "ваш_ключ",
"model": "AniFlux-v4.1",
"prompt": "космический корабль в стиле киберпанк",
"negative_prompt": "низкое качество, размытость",
"width": 1024,
"height": 1024,
"steps": 30,
"sampler": "Euler",
"cfg_scale": 7,
"seed": -1,
"stream": true
}
Модификация существующего изображения на основе текстового описания.
Пример запроса:
{
"token": "ваш_ключ",
"model": "AniFlux-v4.1",
"prompt": "превратить в акварельный рисунок",
"negative_prompt": "низкое качество",
"init_image": "base64_изображения",
"denoising_strength": 0.75,
"width": 1024,
"height": 1024,
"steps": 30,
"stream": true
}
Параметр denoising_strength
определяет степень изменения исходного изображения:
Замена выбранной области изображения с помощью маски.
Пример запроса:
{
"token": "ваш_ключ",
"model": "AniFlux-v4.1",
"prompt": "заменить фон на горный пейзаж",
"negative_prompt": "люди, машины",
"init_image": "base64_изображения",
"mask_image": "base64_маски",
"denoising_strength": 0.85,
"steps": 30,
"stream": true
}
Требования к маске:
import aiohttp
import asyncio
import json
async def generate_image_stream(prompt: str, api_key: str):
async with aiohttp.ClientSession() as session:
payload = {
"token": api_key,
"model": "AniFlux-v4.1",
"prompt": prompt,
"steps": 30,
"stream": True
}
async with session.post(
"https://neuroimg.art/api/v1/generate",
json=payload
) as response:
async for line in response.content:
if line:
status = json.loads(line)
if status["status"] == "WAITING":
print(f"В очереди: {status['queue_position']}/{status['queue_total']}")
elif status["status"] == "RUNNING":
print("Генерация...")
elif status["status"] == "SUCCESS":
print(f"Готово! URL: {status['image_url']}")
return status['image_url']
async def main():
result = await generate_image_stream(
"космический корабль будущего",
"ваш_api_ключ"
)
asyncio.run(main())
const axios = require('axios');
async function generateImageStream(prompt, apiKey) {
try {
const response = await axios.post(
'https://neuroimg.art/api/v1/generate',
{
token: apiKey,
model: 'AniFlux-v4.1',
prompt: prompt,
steps: 30,
stream: true
},
{
responseType: 'stream'
}
);
response.data.on('data', chunk => {
try {
const status = JSON.parse(chunk);
if (status.status === 'WAITING') {
console.log(`В очереди: ${status.queue_position}/${status.queue_total}`);
} else if (status.status === 'RUNNING') {
console.log('Генерация...');
} else if (status.status === 'SUCCESS') {
console.log(`Готово! URL: ${status.image_url}`);
}
} catch (e) {
// Пропускаем неполные чанки
}
});
} catch (error) {
console.error('Ошибка генерации:', error.response?.data);
throw error;
}
}
// Использование
generateImageStream('космический корабль будущего', 'ваш_api_ключ')
.catch(error => console.error('Ошибка:', error));
{
"error": "код_ошибки",
"message": "описание_ошибки"
}
Код | Описание | Решение |
---|---|---|
invalid_token |
Неверный API-ключ | Проверьте правильность токена |
insufficient_credits |
Недостаточно токенов | Пополните баланс |
nsfw_detected |
Обнаружен NSFW контент | Измените промпт |
image_too_large |
Превышен размер изображения | Уменьшите размер входного изображения |
invalid_mask |
Некорректная маска | Проверьте формат и размер маски |
generation_failed |
Ошибка генерации | Попробуйте другие параметры |
job_creation_failed |
Ошибка создания задачи | Проверьте параметры запроса |
polling_failed |
Ошибка получения статуса | Повторите запрос |
lora_mismatch |
Несовместимая версия LoRA | Используйте совместимую версию LoRA |
model_unavailable |
Модель недоступна | Выберите другую модель |
По дополнительным вопросам обращайтесь в техподдержку.