Поиск

Документация на метод "aiimages"

Асинхронный метод

ИИ-генератор изображений: генерация и обработка картинок

Метод запускает генерацию изображений в инструменте ИИ-генератор изображений, а также удаление фона и апскейл готовой картинки. Работает асинхронно: сначала ставится задача, потом по report_id забирается результат. Состав доступных нейросетей и их возможности отдаёт отдельный вызов того же метода.

GET /api/aiimages?key={ключ-api}&models=1 справочник моделей
POST /api/aiimages?key={ключ-api} постановка задачи
GET /api/aiimages?key={ключ-api}&report_id={id} результат

Как это работает

  • 1 Берём модель из справочника — вызываем метод с models=1. Оттуда же берём допустимые для модели соотношения сторон и разрешения: у каждой нейросети они свои.
  • 2 Ставим задачуPOST с промптом, моделью и режимом. В ответ приходит report_id. Лимиты списываются в момент создания задачи.
  • 3 Забираем результат — периодически (раз в 5–10 секунд) запрашиваем метод с report_id, пока вместо In progress не придут ссылки на готовые изображения.
Ключ доступа к API создаётся в настройках аккаунта. Метод доступен только платным тарифам; ключ передаётся в query-строке параметром key даже для POST-запросов. Одновременно у одного пользователя может выполняться не больше 5 задач инструмента.

1Справочник моделей

/api/aiimages?models=1 — возвращает нейросети, доступные вашему ключу, и их возможности. Задача не создаётся, лимиты не списываются.

Поле ответа Тип Описание
models[].name string Название модели для интерфейса, например Nano Banana Pro.
models[].value string Идентификатор модели — значение параметра modelName при постановке задачи. У Midjourney и Niji в value входит версия, например midjourney --v 6.1.
models[].promptLength int Максимальная длина request_field в символах. 0 — у модели нет своего ограничения, действует общее: 2 000 символов.
models[].aspect_ratios array Допустимые значения aspect_ratio для этой модели. Пустой массив — список не задан, значение не проверяется.
models[].resolutions array Допустимые значения resolution, например ["1K", "2K", "4K"]. Пустой массив — модель не поддерживает выбор разрешения.
models[].supports_image_input bool Модель принимает референсное изображение через image_url.
models[].supports_multi_image_input bool Модель принимает несколько референсов за один запрос.
models[].supports_native_lang bool Модель понимает русский промпт как есть. При false промпт перед отправкой автоматически переводится на английский.
default string value модели, предвыбранной в интерфейсе инструмента.

Ответ

{
  "models": [
    {
      "name": "Nano Banana Pro",
      "value": "nano-banana-pro",
      "promptLength": 0,
      "aspect_ratios": ["auto", "1:1", "2:3", "3:2", "3:4", "4:3", "9:16", "16:9", "21:9"],
      "resolutions": ["1K", "2K", "4K"],
      "supports_image_input": true,
      "supports_multi_image_input": true,
      "supports_native_lang": true
    },
    {
      "name": "Leonardo",
      "value": "leonardo",
      "promptLength": 1000,
      "aspect_ratios": [],
      "resolutions": [],
      "supports_image_input": false,
      "supports_multi_image_input": false,
      "supports_native_lang": false
    }
  ],
  "default": "leonardo"
}
Список фильтруется по тарифу ключа: у промо- и триал-аккаунтов часть моделей не отдаётся. Значения в примере иллюстративные — актуальный состав возвращает сам метод.

2Постановка задачи

POST /api/aiimages — параметры передаются телом запроса.

Параметр Тип Обяз. По умолчанию Описание
modelName string да value из справочника моделей. Отключённая или неизвестная модель — ошибка Ошибка - неправильно выбранная модель нейросети!. Короткое midjourney принимается и приводится к midjourney --v 6.0, но надёжнее передавать значение из справочника целиком.
request_field string да Промпт: что изобразить. Максимальная длина — promptLength модели, по умолчанию 2 000 символов. Не требуется для режимов remove_background и upscale.
part string нет chat_bot Режим работы: chat_bot — генерация изображения, remove_background — удаление фона, upscale — увеличение разрешения. Другие значения отклоняются с ошибкой Ошибка — неправильно выбранная вкладка!.
image_url string нет Ссылка на исходное изображение: референс при генерации либо обязательный вход для remove_background и upscale. Форматы .png, .jpg, .jpeg, .webp; ресурс должен отвечать 200, локальные адреса и localhost не принимаются. Референс поддерживают модели с supports_image_input=true; для Leonardo параметр игнорируется.
aspect_ratio string нет Соотношение сторон. Проверяется по списку aspect_ratios выбранной модели из справочника; если список пуст, значение не валидируется.
resolution string нет Разрешение генерации. Проверяется по списку resolutions модели; если список пуст, параметр не применяется. Влияет на стоимость у моделей с посегментной ценой.
imagesCount int нет 1 Количество изображений за один запуск, от 1 до 4. Поддерживается моделями, которые умеют отдавать серию: Leonardo, DALL-E, YandexART.
img_ref img | cref | sref нет img Только для Midjourney: как использовать референс. img — композиция, стиль и цвет; cref — персонаж в новой сцене; sref — только стиль и эстетика.
photoReal on | off нет off Только для Leonardo: режим фотореалистичной генерации.

Ответ

{
  "report_id": 18452301
}
Промпт не должен содержать ссылок и параметров вида --ar, --v — версия и соотношение сторон задаются через modelName и aspect_ratio. Текст проходит фильтр 18+.

Требования к изображению для обработки фона и апскейла

Режим Минимальная сторона Площадь, пикселей
remove_background 64 px от 4 096 до 4 194 304
upscale 32 px от 1 024 до 1 048 576

3Получение результата

GET /api/aiimages?report_id={id} — вызывается, пока задача не завершится. Повторные запросы бесплатны.

Задача ещё выполняется

{
  "error": "In progress",
  "code": 50,
  "progress": 40,
  "time": "2026-02-11 14:32:07"
}
Поле Тип Описание
request object Параметры, с которыми задача была поставлена.
response.data array Готовые изображения. Для Leonardo и Midjourney — массив ссылок; для остальных моделей — массив объектов со ссылкой и, при частичной неудаче, полем errors.
response.errors string Текст ошибки генерации. Пустая строка — всё прошло успешно.
response.errorType string | null IMAGE_GENERATION_FAILED, если нейросеть не смогла обработать запрос.
time string Время готовности результата.
cost int Сколько лимитов фактически списано за задачу.

Пример результата

{
  "request": {
    "modelName": "nano-banana-pro",
    "request_field": "Витрина пекарни, тёплый утренний свет",
    "part": "chat_bot",
    "aspect_ratio": "16:9",
    "resolution": "2K"
  },
  "response": {
    "data": [
      {
        "url": "https://tools.pixelplus.ru/storage/ai-images/img_65f2c1a9.png",
        "errors": ""
      }
    ],
    "errors": "",
    "errorType": null
  },
  "time": "2026-02-11 14:33:12",
  "cost": 450
}

Тарификация

Цена зависит от модели и режима Списание происходит при постановке задачи. Справочник моделей и получение результата бесплатны.

У каждой модели своя цена генерации, у remove_background и upscale — собственные фиксированные цены. Часть моделей тарифицируется за запрос, часть — за изображение, у моделей с выбором разрешения цена растёт вместе с resolution. Актуальные цены показаны в интерфейсе инструмента, а фактическое списание всегда возвращается в поле cost вместе с результатом.

Если доступных лимитов не хватает, задача не создаётся: в ответе придут код ошибки и точные значения available / need.

Коды ошибок

Код Текст Причина
-1 Access denied Параметр key не передан.
-2 Access denied Ключ не найден или недействителен.
-4 Access denied Запрошен report_id чужой задачи или задачи другого инструмента.
-51 No requests data Запрос без models и без report_id пришёл методом GET — ожидался POST.
-60 MAX_PARALLEL_TASKS_FAIL Больше 5 одновременно выполняющихся задач инструмента.
-100 tools errors Ошибки валидации, список причин — в поле details.
50 In progress Задача ещё выполняется, повторите запрос позже.
-104 Processing error Ошибка при выполнении задачи.
-105 Limits run out Лимиты закончились в процессе выполнения.
-106 The process was canceled by a user Задача отменена пользователем.
-107 The process took more than 6 hours and was canceled Задача выполнялась дольше 6 часов и была снята.
-80 … -83, -68 Not enough … limits Исчерпан часовой, суточный, недельный, месячный или годовой лимит. В ответе — available и need.

Основные сообщения валидации в details

  • Ошибка - неправильно выбранная модель нейросети! — модель не из справочника;
  • Ошибка — неправильно выбранная вкладка! — недопустимое значение part;
  • Ошибка — неправильно выбрано соотношение сторон! / …выбрано качество! — значение вне списка модели;
  • Введите, пожалуйста, запрос. и Уменьшите размер запроса до {N} символов. — проблемы с промптом;
  • Ошибка, уберите, пожалуйста, из запроса параметры… и …из запроса ссылки.;
  • Исправьте, пожалуйста, запрос — фильтр 18+.;
  • Исправьте, пожалуйста, URL — некорректный URL или недопустимый формат…, …локальные пути или localhost не поддерживаются., …указанный ресурс недоступен.;
  • Исправьте, пожалуйста, параметр референса для изображения. Допустимые значения: img, cref, sref.;
  • Данный метод доступен только платным тарифам!.

Примеры

cURL

# 1. Справочник моделей
curl 'https://tools.pixelplus.ru/api/aiimages?key={ключ-api}&models=1'

# 2. Постановка задачи
curl -X POST 'https://tools.pixelplus.ru/api/aiimages?key={ключ-api}' \
  -d 'modelName=nano-banana-pro' \
  -d 'part=chat_bot' \
  -d 'aspect_ratio=16:9' \
  -d 'resolution=2K' \
  --data-urlencode 'request_field=Витрина пекарни, тёплый утренний свет'

# 3. Результат
curl 'https://tools.pixelplus.ru/api/aiimages?key={ключ-api}&report_id=18452301'

PHP

<?php

$key = '{ключ-api}';
$base = 'https://tools.pixelplus.ru/api';

function apiRequest(string $url, array $data = null): array
{
    $curl = curl_init();
    $options = [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 120,
    ];
    if ($data !== null) {
        $options[CURLOPT_POST] = true;
        $options[CURLOPT_POSTFIELDS] = $data;
    }
    curl_setopt_array($curl, $options);
    $response = curl_exec($curl);
    curl_close($curl);

    return json_decode($response, true) ?: [];
}

// 1. Ищем модель, которая умеет 16:9
$catalog = apiRequest("{$base}/aiimages?key={$key}&models=1");

$model = null;
foreach ($catalog['models'] as $item) {
    if (empty($item['aspect_ratios']) || in_array('16:9', $item['aspect_ratios'], true)) {
        $model = $item;
        break;
    }
}

$fields = [
    'modelName'     => $model['value'] ?? $catalog['default'],
    'part'          => 'chat_bot',
    'request_field' => 'Витрина пекарни, тёплый утренний свет',
    'aspect_ratio'  => '16:9',
];

// resolution передаём только если модель его поддерживает
if (!empty($model['resolutions'])) {
    $fields['resolution'] = end($model['resolutions']);
}

// 2. Ставим задачу
$task = apiRequest("{$base}/aiimages?key={$key}", $fields);

if (empty($task['report_id'])) {
    exit('Ошибка: ' . json_encode($task, JSON_UNESCAPED_UNICODE));
}

// 3. Ждём результат
do {
    sleep(10);
    $result = apiRequest("{$base}/aiimages?key={$key}&report_id={$task['report_id']}");
} while (($result['code'] ?? null) === 50);

print_r($result['response']['data']);

Python

import time
import requests

KEY = '{ключ-api}'
BASE = 'https://tools.pixelplus.ru/api'

catalog = requests.get(f'{BASE}/aiimages', params={'key': KEY, 'models': 1}).json()

# Модель, принимающая референс
model = next(
    (m for m in catalog['models'] if m['supports_image_input']),
    None,
)

task = requests.post(
    f'{BASE}/aiimages',
    params={'key': KEY},
    data={
        'modelName': model['value'] if model else catalog['default'],
        'part': 'chat_bot',
        'request_field': 'Тот же интерьер, но вечернее освещение',
        'image_url': 'https://example.com/reference.png',
    },
).json()

while True:
    result = requests.get(
        f'{BASE}/aiimages',
        params={'key': KEY, 'report_id': task['report_id']},
    ).json()
    if result.get('code') != 50:
        break
    time.sleep(10)

print(result['response']['data'])
print('Списано лимитов:', result['cost'])

Удаление фона и апскейл

# Промпт не нужен, обязателен image_url
curl -X POST 'https://tools.pixelplus.ru/api/aiimages?key={ключ-api}' \
  -d 'part=remove_background' \
  -d 'modelName=stableDiffusion3' \
  -d 'image_url=https://example.com/photo.png'

curl -X POST 'https://tools.pixelplus.ru/api/aiimages?key={ключ-api}' \
  -d 'part=upscale' \
  -d 'modelName=stableDiffusion3' \
  -d 'image_url=https://example.com/photo.png'

Ограничения и рекомендации

  • Модель, соотношения сторон и разрешения берите из справочника models=1: списки зависят от тарифа ключа и меняются с релизами инструмента.
  • Опрашивайте результат не чаще одного раза в 5 секунд — генерация занимает от десятков секунд до нескольких минут.
  • Не больше 5 одновременно выполняющихся задач на пользователя.
  • Загрузка файла изображения через API не поддерживается — передавайте публичную ссылку в image_url; ресурс проверяется запросом на доступность.
  • Промпт автоматически переводится на английский для моделей с supports_native_lang=false — пишите его так, чтобы перевод не терял смысл.
  • Готовый результат хранится в истории инструмента: один и тот же report_id можно запрашивать сколько угодно раз бесплатно.
  • Ссылки на сгенерированные изображения не вечны — скачивайте файлы сразу после получения результата.