Nano Banana 2.1 API
Generate one image asynchronously per request. Supports text-to-image and image-to-image generation with your Seevio API key.
POST https://api.seevio.ai/v1/images/generationsМожливості
| Функція | Допустимі значення |
|---|---|
| Режими генерації | text-to-image, image-to-image |
| Роздільна здатність відео | 1K, 2K, 4K |
| Співвідношення сторін | auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 21:9, 4:1, 1:4, 8:1, 1:8 |
| Референсні зображення | Public HTTPS PNG / JPEG / WebP URLs. Image-to-image requires 1–10 images, each up to 30 MB. Text-to-image requires an empty array. |
| Промпт | Required non-empty prompt, up to 20000 characters. |
| Формат виводу | png, jpg |
Тарифи та кредити
Кожен запит створює одне зображення. Вартість у кредитах залежить від роздільної здатності в таблиці нижче. Кредити резервуються під час прийняття завдання, списуються після успіху та повертаються в разі помилки.
| Роздільна здатність відео | Тарифи та кредити |
|---|---|
| 1K | 2 кредитів |
| 2K | 3 кредитів |
| 4K | 4 кредитів |
Ідемпотентність запитів не підтримується. Кожен коректний запит POST створює нове платне завдання. Якщо результат відправки запиту невідомий, перевірте статус за отриманим taskId. Повторне відправлення POST-запиту може призвести до створення ще одного завдання.
Автентифікація
Створіть ключ API у панелі керування. Повний ключ відображається лише один раз. Зберігайте його на своєму сервері та надсилайте як Bearer-токен у кожному запиті.
Базовий URL
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonЗадайте змінну середовища SEEVIO_API_KEY перед запуском цих прикладів. Приклади на JavaScript виконуються на вашому сервері за допомогою Node.js; приклади на Python використовують бібліотеку requests.
Тіло запиту
| Поле | Тип | Обов’язково | Опис та обмеження |
|---|---|---|---|
model | string | Так | Ідентифікатор моделі. Щоб використовувати Nano Banana 2.1, установіть для цього поля значення nano-banana-2-1. |
callback_url | string | Ні | Публічна адреса HTTPS для отримання POST-запитів про завершення роботи або помилку. Приватні мережі та localhost не підтримуються. Приклад: https://example.com/webhooks/seevio |
input | object | Так | Налаштування генерації. Має містити непусті вказівки (prompt). |
Вхідні параметри
| Поле | Тип | Обов’язково | За замовчуванням | Опис та обмеження |
|---|---|---|---|---|
input.prompt | string | Так | — | Required non-empty prompt, up to 20000 characters. Приклад: A minimalist ceramic teapot on a stone pedestal, soft studio lighting |
input.generation_type | string | Ні | text-to-image | Для редагування зображень установіть параметр generation_type на image-to-image та вкажіть image_urls. Для всіх інших параметрів діють ті самі правила. Допустимі значення text-to-image | image-to-image |
input.image_urls | string[] | Залежно від умов | [] | Public HTTPS PNG / JPEG / WebP URLs. Image-to-image requires 1–10 images, each up to 30 MB. Text-to-image requires an empty array. Приклад: ["https://example.com/teapot.png"] |
input.aspect_ratio | string | Ні | auto | Співвідношення сторін Допустимі значення auto | 1:1 | 16:9 | 9:16 | 4:3 | 3:4 | 3:2 | 2:3 | 5:4 | 4:5 | 21:9 | 4:1 | 1:4 | 8:1 | 1:8Приклад: 1:1 |
input.resolution | string | Ні | 2K | Використовуйте одну з підтримуваних роздільних здатностей готового зображення, наведених тут. Допустимі значення 1K | 2K | 4KПриклад: 2K |
input.output_format | string | Ні | png | Допустимі значення png | jpgПриклад: png |
Співвідношення сторін за замовчуванням — auto. Кожен запит генерує рівно одне зображення.
Швидкий старт
Надішліть цей мінімальний запит, збережіть отриманий taskId, а потім використайте приклад запиту статусу, наведений нижче. Значення credits у відповіді на створення — це зарезервована сума кредитів.
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "nano-banana-2-1",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "text-to-image"
}
}'Приклад відповіді на запит створення завдання
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 3
}З тексту в зображення
Generate one image asynchronously per request. Supports text-to-image and image-to-image generation with your Seevio API key.
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "nano-banana-2-1",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "text-to-image"
}
}'Із зображення в зображення
Для редагування зображень установіть параметр generation_type на image-to-image та вкажіть image_urls. Для всіх інших параметрів діють ті самі правила.
Замініть адреси медіафайлів example.com на власні загальнодоступні HTTPS-файли. Приклади URL-адрес наведено лише для ілюстрації структури запиту, вони не є тестовими файлами для завантаження.
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "nano-banana-2-1",
"input": {
"prompt": "Change the teapot to matte sage green. Preserve its shape and the studio lighting.",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "image-to-image",
"image_urls": [
"https://example.com/teapot.png"
]
}
}'Запит статусу завдання
GET https://api.seevio.ai/v1/tasks/{taskId}Замініть ID з прикладу на taskId, отриманий під час створення. Запити повертають лише ті завдання, які належать користувачеві ключа API; до невідомих або недоступних ID повертається помилка HTTP 404.
Для початку опитуйте статус кожні 10–20 секунд, за умов помилки HTTP 429 збільшуйте інтервал і зупиняйтеся, коли статус зміниться на completed або failed. Для продакшену краще використовувати вебхуки. Кожен приклад коду нижче виконує один запит.
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| Статус | Дозволені значення та вимоги |
|---|---|
| queued | Прийнято й очікує на запуск. |
| generating | Генерація триває. |
| completed | Успішно завершено. Завантажте файли з data.results до закінчення терміну дії. |
| failed | Помилка виконання. Перевірте failed_reason та billing_status. |
| Поле | Тип | Дозволені значення та вимоги |
|---|---|---|
| id | string | Ідентифікатор завдання. Це taskId з відповіді на створення. |
| created_at | number | Час створення завдання в секундах Unix. |
| model | string | Публічний ID моделі, використаний для цього завдання. |
| billing_status | string | Статус оплати: reserved, charged, refunded або refund_failed. |
| credits | number | Кредити, зарезервовані для цього завдання. Це значення зберігається після повернення коштів; перевіряйте billing_status для визначення остаточного статусу розрахунку. |
| failed_reason | string | null | Причина помилки для неуспішних завдань; в інших випадках — null. Відповіді на запити для неуспішних завдань не містять об’єкта data. |
| failed_code | string | null | Код помилки. Докладний опис помилки дивіться у failed_reason. |
| data | object | Міститься у запитах успішних завдань. Передає результат та деталі обробки. |
| data.results | string[] | Масив URL зображень; порожній до завершення та після закінчення строку. |
| data.image_expires_at | string | null | Строк дії зображень у форматі ISO 8601 або null, якщо ще невідомий. |
| data.processing_time | number | null | Тривалість обробки завдання в секундах, якщо доступно; в іншому випадку — null. |
У черзі
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "nano-banana-2-1",
"credits": 3,
"failed_code": null,
"status": "queued",
"billing_status": "reserved",
"failed_reason": null,
"data": {
"results": [],
"image_expires_at": null,
"processing_time": null
}
}Завершено
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "nano-banana-2-1",
"credits": 3,
"failed_code": null,
"status": "completed",
"billing_status": "charged",
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/images/example.png"
],
"image_expires_at": "2026-10-12T00:00:00.000Z",
"processing_time": 12
}
}Помилка
Коли запит повертає статус status=failed, це означає, що генерація завершилася помилкою. Причину збою вказано в полі failed_reason, а результат повернення коштів — у billing_status. У цьому прикладі статус refunded означає, що кредити було повернено. У полі credits залишається початкова зарезервована сума, а об'єкт data у відповіді відсутній.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "nano-banana-2-1",
"credits": 3,
"failed_code": "400",
"status": "failed",
"billing_status": "refunded",
"failed_reason": "The input or output was flagged as sensitive. Please try again with different inputs."
}Посилання на результати доступні протягом 30 днів після збереження. Після закінчення цього терміну масив results буде порожнім.
Вебхуки
Вкажіть callback_url у запиті на створення, щоб отримувати POST-запит JSON після успішного виконання або помилки завдання. Поверніть відповідь 2xx протягом 15 секунд. У разі невдалої доставки запити повторюються; налаштуйте ідемпотентну обробку повторних запитів за ID завдання.
Ваша кінцева точка зворотного виклику (callback endpoint) має приймати запити POST із тілом запиту у форматі JSON (Content-Type: application/json).
Створення завдання з вебхуком
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "nano-banana-2-1",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "text-to-image"
},
"callback_url": "https://example.com/webhooks/seevio"
}'Для зворотних викликів (callbacks) використовується структура відповіді на запит статусу завдання. Сповіщення про збій із поверненням коштів також містять параметр верхнього рівня credits_refunded. Використовуйте id для ідентифікації завдання та status, щоб відрізнити успішно завершені завдання від тих, що зазнали збою. Сповіщення можуть дублюватися: обробляйте їх ідемпотентно за id та status. Зворотні виклики не підписуються цифровим підписом — перевіряйте статус завдання за допомогою автентифікованого запиту до кінцевої точки (endpoint). Помилка доставки сповіщення не скасовує оплату за успішно виконане завдання.
Завдання виконано: дані успішного зворотного виклику
created_at — час створення події, task_created_at — час створення завдання, у секундах Unix. Приклади показують рекомендовані поля; відповідь може містити додаткові поля.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171212,
"model": "nano-banana-2-1",
"credits": 3,
"failed_code": null,
"status": "completed",
"billing_status": "charged",
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/images/example.png"
],
"image_expires_at": "2026-10-12T00:00:00.000Z",
"processing_time": 12
},
"task_created_at": 1789171200
}Помилка завдання: дані зворотного виклику про збій
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171212,
"model": "nano-banana-2-1",
"credits": 3,
"failed_code": "400",
"status": "failed",
"billing_status": "refunded",
"failed_reason": "The input or output was flagged as sensitive. Please try again with different inputs.",
"task_created_at": 1789171200,
"credits_refunded": 3
}Приклад обробника
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const imageUrls = callbackData.data.results;
// Save the image URLs and mark this task as completed in your application.
console.log(callbackData.id, imageUrls);
}
if (callbackData.status === "failed") {
const { failed_reason, credits_refunded } = callbackData;
// Record the failure reason and refunded credits for this task.
console.error(callbackData.id, failed_reason, credits_refunded);
}
return new Response(null, { status: 200 });
}Цей приклад для Next.js зчитує тіло зворотного виклику в JSON та безпосередньо обробляє успішно виконані й невдалі завдання. Додайте у свій додаток збереження даних та дедуплікацію за ID завдань; додавайте тривалі процеси в чергу, перш ніж підтверджувати отримання зворотного виклику.
Помилки
Помилки HTTP містять об’єкт error із кодом (code) та повідомленням (message). Завдання, успішно прийняте в роботу, все одно може завершитися помилкою згодом; опитуйте статус або обробляйте вебхук про помилку.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | Поле | Що робити |
|---|---|---|
| 400 | invalid_request | Виправте структуру JSON, додайте prompt, перевірте ліміти параметрів або URL-адреси медіа перед повторною спробою. |
| 401 | invalid_api_key | Перевірте Bearer-токен та переконайтеся, що ключ API активний. |
| 402 | insufficient_credits | Поповніть баланс або зменште вартість завдання. Відповідь може містити необхідну та доступну кількість кредитів. |
| 403 | forbidden | Перевірте обмеження на рівні облікового запису, описані в повідомленні про помилку. |
| 404 | not_found | Перевірте ID завдання та переконайтеся, що ключ належить користувачеві, який створив це завдання. |
| 429 | rate_limited | Зачекайте інтервал, указаний у Retry-After, перед повторним запитом. |
| 500 | internal_error | Перевірте повідомлення про помилку та логи API. Повторюйте запити обережно: повторне надсилання запиту на створення може створити ще одне платне завдання. |
Помилки містять error.code та error.message: 400 invalid_request, 401 invalid_api_key, 402 insufficient_credits, 403 forbidden, 404 not_found, 429 rate_limited, 500 internal_error. Помилка 402 insufficient_credits означає, що на вашому балансі недостатньо кредитів для виконання цього запиту.
Ліміти запитів
Створення завдань: за замовчуванням для кожного ключа API дозволено до 100 запитів на хвилину. Індивідуальні ліміти запитів наразі недоступні.
Запити щодо завдань: за замовчуванням для кожного ключа API дозволено до 120 запитів на хвилину. Запити на отримання інформації та запити на створення завдань враховуються окремо.
Для запитів на створення зображень і відео діє спільний ліміт частоти запитів API-ключа.
Помилка HTTP 429 містить заголовок Retry-After: 60 для створення завдань та Retry-After: 5 для запитів статусу. Використовуйте експоненційне збільшення інтервалів та уникайте занадто частого опитування.
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded."
}
}