Миграция на Unified Image API с Google AI Studio, fal.ai или Replicate
2 мин чтенияАвтор Unified Image API Team
Перенос готовой интеграции Nano Banana к нам обычно занимает вечер: концепции отображаются один в один, а отличия — как раз те места, которые вы с удовольствием удалите. Ниже — соответствия, о которых спрашивают чаще всего.
Ментальная модель
| Концепция | Google AI Studio (Gemini API) | Replicate | У нас |
|---|---|---|---|
| Стиль вызова | синхронный generateContent | асинхронный prediction | асинхронное задание |
| Аутентификация | x-goog-api-key | Authorization: Bearer | Authorization: Bearer |
| Результат | base64 в ответе | URL по завершении prediction | подписанный URL в задании |
| Безопасные повторы | нет из коробки | нет из коробки | обязательный Idempotency-Key |
| Неудачный вызов | тарифицируется по токенам | по-разному | кредиты возвращаются автоматически |
| Пуш о завершении | нет | вебхуки | подписанные вебхуки |
С Google AI Studio
API Google синхронный и возвращает изображение как base64 прямо в ответе. Два изменения:
- Разделите вызов.
POST /v1/generations(получитеid), затем опросGET /v1/generations/{id}илиwebhook_url. Проблемы с таймаутами исчезают: отправка отвечает за миллисекунды независимо от загрузки модели. - Скачивание вместо декодирования. Результаты приходят подписанными ссылками на 15 минут — стримьте их в своё хранилище, а не держите base64 в памяти.
- POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent
- {"contents":[{"parts":[{"text":"a red fox in snow"}]}]}
+ POST $BASE/v1/generations
+ {"model":"nanobanana","prompt":"a red fox in snow","resolution":"1K","ratio":"1:1"}Сам текст промпта переносится без изменений — то же семейство моделей, то же поведение промптинга.
С Replicate
Схема уже знакома (создать prediction → опрос/вебхук). Что меняется:
- Хэши
version→ стабильные id моделей (nanobanana,nanobanana-pro) изGET /v1/models; без церемонии пиннинга — маршрутизация и failover происходят за id. input: {...}→ плоское тело:prompt,resolution(1K/2K/4K),ratio,n,seed, а такжеimagesдля image-to-image. Устаревшее полеsize(«1024x1024») по-прежнему принимается и отображается на ближайший тир и соотношение сторон.- Биллинг: посекундная оплата GPU → фиксированные кредиты за изображение, известные до отправки (
costв ответе) и возвращаемые при неудаче.
Чек-лист
- Создайте ключ, внесите IP-диапазоны боевого трафика в allowlist ключа.
- Оберните отправку в
Idempotency-Keyна каждое намерение пользователя (см. пост об идемпотентности). - Отобразите обработку ошибок на значения
code— таблица ошибок короткая. - Погоняйте оба провайдера параллельно день (кредиты предоплачены; тест на пакете Starter стоит несколько долларов) и сравните доли ошибок, прежде чем переключаться окончательно.
Полные схемы запросов и ответов с реальными payload: справочник API. Цены по моделям в долларах: модели.