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/generationsYetenekler
| Özellik | Desteklenen değerler |
|---|---|
| Üretim modları | text-to-image, image-to-image |
| Çıkış çözünürlüğü | 1K, 2K, 4K |
| En boy oranı | 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 |
| Referans görseller | 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. |
| Prompt | Required non-empty prompt, up to 20000 characters. |
| Çıktı biçimi | png, jpg |
Fiyatlandırma ve krediler
Her istek bir görsel oluşturur. Kredi miktarı aşağıdaki çözünürlüğe bağlıdır. Krediler kabul sırasında ayrılır, başarıda tahsil edilir ve hata durumunda iade edilir.
| Çıkış çözünürlüğü | Fiyatlandırma ve krediler |
|---|---|
| 1K | 2 kredi |
| 2K | 3 kredi |
| 4K | 4 kredi |
İsteklerde aynı işlemin tekrar ücretlendirilmesini önleyen idempotency desteği yoktur. Her geçerli POST isteği, ücretlendirilebilir yeni bir görev oluşturur. Gönderim sonucunun belirsiz olduğu durumlarda, dönen taskId değerini sorgulayın; POST isteğinin yeniden denenmesi başka bir görev oluşturabilir.
Kimlik doğrulama
Panelde bir API anahtarı oluşturun. Anahtarın tamamı yalnızca bir kez gösterilir. Bu anahtarı sunucunuzda saklayın ve her istekte Bearer token olarak gönderin.
Temel URL
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonBu örnekleri çalıştırmadan önce SEEVIO_API_KEY ortam değişkenini tanımlayın. JavaScript örnekleri sunucunuzda Node.js ile çalışır; Python örnekleri ise requests paketini kullanır.
İstek gövdesi
| Alan | Tür | Zorunlu | Açıklama ve kısıtlamalar |
|---|---|---|---|
model | string | Evet | Model kimliği. Nano Banana 2.1 kullanmak için bu alanı nano-banana-2-1 olarak ayarlayın. |
callback_url | string | Hayır | Tamamlanma ve başarısızlık POST geri çağrıları (callback) için genel erişime açık HTTPS uç noktası. Özel ağlara ve localhost adresine izin verilmez. Örnek: https://example.com/webhooks/seevio |
input | object | Evet | Üretim ayarları. Boş olmayan bir prompt (istem) içermelidir. |
Giriş parametreleri
| Alan | Tür | Zorunlu | Varsayılan | Açıklama ve kısıtlamalar |
|---|---|---|---|---|
input.prompt | string | Evet | — | Required non-empty prompt, up to 20000 characters. Örnek: A minimalist ceramic teapot on a stone pedestal, soft studio lighting |
input.generation_type | string | Hayır | text-to-image | Görsel düzenleme için generation_type parametresini image-to-image olarak ayarlayın ve image_urls değerlerini sağlayın. Diğer tüm parametreler aynı kurallara tabidir. Desteklenen değerler text-to-image | image-to-image |
input.image_urls | string[] | Koşullu | [] | 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. Örnek: ["https://example.com/teapot.png"] |
input.aspect_ratio | string | Hayır | auto | En boy oranı Desteklenen değerler 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Örnek: 1:1 |
input.resolution | string | Hayır | 2K | Burada listelenen desteklenen çıkış çözünürlüklerinden birini kullanın. Desteklenen değerler 1K | 2K | 4KÖrnek: 2K |
input.output_format | string | Hayır | png | Desteklenen değerler png | jpgÖrnek: png |
En boy oranı varsayılan olarak auto (otomatik) ayarlanır. Her istek tam olarak bir görsel oluşturur.
Hızlı başlangıç
Bu temel isteği gönderin, dönen taskId değerini kaydedin ve ardından aşağıdaki görev sorgulama örneğini kullanın. İstek oluşturma yanıtındaki credits değeri, ayrılan (rezerve edilen) miktarı gösterir.
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"
}
}'Görev oluşturma yanıtı örneği
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 3
}Metinden görsele
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"
}
}'Görselden görsele
Görsel düzenleme için generation_type parametresini image-to-image olarak ayarlayın ve image_urls değerlerini sağlayın. Diğer tüm parametreler aynı kurallara tabidir.
example.com medya URL'lerini kendi genel erişime açık HTTPS dosyalarınızla değiştirin. Örnek URL'ler istek yapısını göstermek amaçlıdır ve indirilebilir örnek varlıklar değildir.
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"
]
}
}'Görev sorgula
GET https://api.seevio.ai/v1/tasks/{taskId}Örnek kimliği, oluşturma sırasında dönen taskId ile değiştirin. Sorgular yalnızca API anahtarının sahibine ait görevleri döndürür; erişilemeyen veya bilinmeyen kimlikler HTTP 404 döndürür.
Başlangıçta her 10-20 saniyede bir sorgulama yapın, HTTP 429 hatasında sıklığı azaltın ve durum completed veya failed olduğunda sorgulamayı durdurun. Üretim ortamında webhook'ları tercih edin. Aşağıdaki her kod örneği tek bir sorgu gerçekleştirir.
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| Durum | İzin verilen değerler ve gereksinimler |
|---|---|
| queued | Kabul edildi ve işlenmek üzere bekleniyor. |
| generating | Üretim devam ediyor. |
| completed | Başarılı sonuçlanma. Süre dolmadan önce data.results altındaki dosyaları indirin. |
| failed | Başarısız sonuçlanma. failed_reason ve billing_status alanlarını inceleyin. |
| Alan | Tür | İzin verilen değerler ve gereksinimler |
|---|---|---|
| id | string | Görev tanımlayıcı. Bu, oluşturma yanıtındaki taskId değeridir. |
| created_at | number | Unix saniyesi olarak görevin oluşturulma zamanı. |
| model | string | Bu görev için kullanılan genel model kimliği. |
| billing_status | string | reserved (rezerve edildi), charged (tahsil edildi), refunded (iade edildi) veya refund_failed (iade başarısız). |
| credits | number | Bu görev için rezerve edilen kredi. Bu değer iade sonrasında da korunur; faturalandırma sonucunu belirlemek için billing_status alanını inceleyin. |
| failed_reason | string | null | Başarısız görevlerdeki başarısızlık nedeni; aksi takdirde null. Başarısız sorgu yanıtlarında data alanı yer almaz. |
| failed_code | string | null | Hata kodu. Hata ayrıntıları için failed_reason alanına bakın. |
| data | object | Başarısız olmayan görev sorgularında bulunur. Çıkış ve işlem detaylarını içerir. |
| data.results | string[] | Görsel URL dizisi; tamamlanmadan önce ve süre dolduktan sonra boştur. |
| data.image_expires_at | string | null | ISO 8601 biçiminde görsel son kullanma zamanı; henüz yoksa null. |
| data.processing_time | number | null | Mevcut olduğunda saniye cinsinden görevin işlem süresi, aksi takdirde null. |
Sırada
{
"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
}
}Tamamlandı
{
"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
}
}Başarısız
Sorgu status=failed değerini döndürdüğünde üretim süreci başarısızlıkla sonuçlanmış demektir. Hatanın nedenini öğrenmek için failed_reason alanını, iade sonucunu görmek için ise billing_status alanını inceleyebilirsiniz. Bu örnekteki refunded ifadesi, kredilerin iade edildiğini gösterir. credits alanı orijinal rezerve edilen miktarı korur ve yanıt data alanını içermez.
{
"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."
}Sonuç bağlantıları, depolamadan sonraki 30 gün boyunca kullanılabilir. Süre dolduktan sonra results alanı boş döner.
Webhook'lar
Görev tamamlandığında veya başarısız olduğunda bir JSON POST isteği almak için oluşturma isteğinde callback_url alanını ayarlayın. 15 saniye içinde bir 2xx yanıtı döndürün. İletilemeyen bildirimler tekrar denenir; yinelenen bildirimleri görev kimliğine göre tekilleştirerek (idempotent) işleyin.
Geri arama (callback) uç noktanız, JSON istek gövdesine (Content-Type: application/json) sahip POST isteklerini kabul etmelidir.
Geri çağırma (callback) ile görev oluşturma
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"
}'Geri çağırmalar (callbacks) görev sorgulama yanıt yapısını kullanır; iadeyle sonuçlanan başarısızlık bildirimleri ayrıca üst düzeyde credits_refunded bilgisini içerir. Görevi tanımlamak için id, tamamlananları başarısız olanlardan ayırt etmek için ise status değerini kullanın. Bildirimler tekrarlanabilir: Bunları id ve status değerlerine göre mükerrerliği önleyecek şekilde (idempotent) işleyin. Geri çağırmalar imzasızdır; görevi doğrulamak için kimliği doğrulanmış sorgu uç noktasını kullanın. Gönderim hatası, başarıyla tamamlanan bir görevin ücret iadesini tetiklemez.
Görev tamamlandı: Başarılı geri arama yükü
created_at olayın, task_created_at görevin oluşturulma zamanıdır; ikisi de Unix saniyesidir. Örnekler önerilen alanları gösterir; yanıtlar ek alanlar içerebilir.
{
"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
}Görev başarısız oldu: Başarısızlık geri arama yükü
{
"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
}Alıcı örneği
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 });
}Bu Next.js örneği, JSON geri arama gövdesini okur ve tamamlanan ya da başarısız olan görevleri doğrudan işler. Kendi uygulamanız için veri kalıcılığı ve görev kimliği (task-ID) tekilleştirme özellikleri ekleyin; geri aramayı onaylamadan önce yavaş çalışan işlemleri sıraya alın.
Hatalar
HTTP hataları, code ve message içeren bir error nesnesine sahiptir. Başarıyla kabul edilen bir görev daha sonra yine de başarısız olabilir; görevi sorgulayın veya başarısızlık geri çağırmasını işleyin.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | Alan | Yapılması gereken |
|---|---|---|
| 400 | invalid_request | Yeniden denemeden önce JSON yapısını, eksik istemi, parametre aralığını veya medya URL'sini düzeltin. |
| 401 | invalid_api_key | Bearer token değerini ve API anahtarının aktif olup olmadığını kontrol edin. |
| 402 | insufficient_credits | Kredi ekleyin veya görev maliyetini düşürün. Yanıt, gerekli ve mevcut miktarları içerebilir. |
| 403 | forbidden | Hata mesajında belirtilen hesap düzeyindeki kısıtlamayı kontrol edin. |
| 404 | not_found | Görev kimliğini ve anahtarın görevin sahibine ait olup olmadığını kontrol edin. |
| 429 | rate_limited | Yeniden denemeden önce Retry-After başlığında belirtilen süreyi bekleyin. |
| 500 | internal_error | Hata mesajını ve API günlüklerini inceleyin. Dikkatli bir şekilde yeniden deneyin; istek oluşturmayı tekrar göndermek, faturalandırılabilir başka bir görev oluşturabilir. |
Hatalar error.code ve error.message kullanır: 400 invalid_request, 401 invalid_api_key, 402 insufficient_credits, 403 forbidden, 404 not_found, 429 rate_limited, 500 internal_error. 402 insufficient_credits hatası, mevcut kredilerinizin bu istek için yetersiz olduğu anlamına gelir.
İstek sınırları
Görev oluşturma: Her bir API anahtarı, varsayılan olarak dakikada en fazla 100 isteğe izin verir. Özel istek limitleri şu anda desteklenmemektedir.
Görev sorgulama: Her bir API anahtarı, varsayılan olarak dakikada en fazla 120 isteğe izin verir. Sorgulama istekleri ve görev oluşturma istekleri birbirinden bağımsız olarak sayılır.
Görsel ve video oluşturma istekleri aynı API anahtarı istek sınırını (rate limit) paylaşır.
HTTP 429 hatası, oluşturma için Retry-After: 60 ve sorgular için Retry-After: 5 başlıklarını içerir. Geri çekilme (backoff) yöntemini kullanın ve gereğinden daha sık sorgulama yapmaktan kaçının.
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded."
}
}