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

Загрузка своих файлов

Модели правки принимают исходное изображение только ссылкой — положить файл прямо в тело запроса нельзя. Чтобы не искать сторонний файлохостинг, картинку можно загрузить к нам: адрес принимает файл и возвращает ссылку, которую остаётся подставить в поле модели. Тем же способом к текстовой модели прикладывается документ PDF — подробности в разделе о текстовых моделях.

Загрузка рассчитана на ключ или вход в кабинет: с ними принимаются все типы из таблицы ниже, 20 файлов в минуту. Без ключа и без входа адрес тоже отвечает, но по другим правилам: 1 файл в сутки с одного адреса и только изображение — image/jpeg, image/png, image/webp. Сделано это ради бесплатной пробы на страницах, куда человек приносит свой снимок: без ссылки на файл она там не работает. Исчерпана суточная загрузка — адрес отвечает 429, прислан другой тип — 415.

POST https://api.gen202.com/api/v1/files/upload

Тело — форма multipart/form-data с единственным полем file. Заголовок с ключом тот же, что у генерации; Content-Type проставляет сам клиент, вручную его задавать не нужно.

ЧтоПредел
file Один файл за запрос. Больше 8 МиБ шлюз не принимает
Content-Type файла image/jpeg, image/png, image/webp, application/pdf · другой тип шлюз отклоняет, файлохранилищем он не работает
Частота 20 загрузок в минуту на ключ

Ответ

ПолеТипЧто в нём
data.url строка Адрес загруженного файла. Его и ставят в поле модели со ссылкой на изображение.
data.bytes число Размер принятого файла в байтах.
upload.sh
# 1. Загрузить картинку с диска и забрать ссылку
URL=$(curl -s https://api.gen202.com/api/v1/files/upload \
  -H "Authorization: Bearer sk-ваш-ключ" \
  -F "file=@photo.jpg" | jq -r '.data.url')

# 2. Подставить её в поле модели правки
curl https://api.gen202.com/api/v1/jobs/createTask \
  -H "Authorization: Bearer sk-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d "{\"model\": \"nano-banana/2\", \"input\": {\"prompt\": \"заменить фон на вечернюю улицу\", \"image_urls\": [\"$URL\"]}}"

Каким должен быть адрес изображения

Ссылка на изображение принимается только полным адресом на http или https: не длиннее 2048 символов, на общедоступном сайте, без имени и пароля перед адресом и без порта, кроме 80 и 443. Относительный путь, а также адреса внутри сети — localhost, 127.0.0.1, 10.0.0.5, 192.168.1.2 — и имена без точки шлюз отклоняет ответом 422, к поставщику не обращаясь. Это самая частая причина 422 у моделей правки, и относится правило ко всем полям со ссылками — image_urls, image_input, input_urls: в шлюзе их проверяет одна и та же функция. Какое поле у выбранной модели, видно в её таблице полей — изображения, видео. Ссылка, которую вернула загрузка выше, этому правилу удовлетворяет заведомо.