Загрузка своих файлов
Модели правки принимают исходное изображение только ссылкой — положить файл прямо в тело запроса нельзя. Чтобы не искать сторонний файлохостинг, картинку можно загрузить к нам: адрес принимает файл и возвращает ссылку, которую остаётся подставить в поле модели. Тем же способом к текстовой модели прикладывается документ PDF — подробности в разделе о текстовых моделях.
Загрузка рассчитана на ключ или вход в кабинет: с ними принимаются все типы из таблицы ниже,
20 файлов в минуту. Без ключа и без входа адрес тоже отвечает, но по
другим правилам: 1 файл в сутки с одного адреса и только изображение
— image/jpeg, image/png, image/webp. Сделано это ради бесплатной пробы на страницах, куда человек приносит свой снимок: без
ссылки на файл она там не работает. Исчерпана суточная загрузка — адрес отвечает
429, прислан другой тип — 415.
Тело — форма multipart/form-data с единственным полем
file. Заголовок с ключом тот же, что у генерации;
Content-Type проставляет сам клиент, вручную его задавать не нужно.
| Что | Предел |
|---|---|
| file | Один файл за запрос. Больше 8 МиБ шлюз не принимает |
| Content-Type файла |
image/jpeg, image/png, image/webp, application/pdf
· другой тип шлюз отклоняет, файлохранилищем он не работает
|
| Частота | 20 загрузок в минуту на ключ |
Ответ
| Поле | Тип | Что в нём |
|---|---|---|
| data.url | строка | Адрес загруженного файла. Его и ставят в поле модели со ссылкой на изображение. |
| data.bytes | число | Размер принятого файла в байтах. |
# 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: в шлюзе их
проверяет одна и та же функция. Какое поле у выбранной модели, видно в её таблице полей —
изображения,
видео. Ссылка, которую вернула загрузка выше,
этому правилу удовлетворяет заведомо.