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. |
| הנחיה (Prompt) | Required non-empty prompt, up to 20000 characters. |
| פורמט פלט | png, jpg |
תמחור וקרדיטים
כל בקשה יוצרת תמונה אחת. עלות הקרדיטים תלויה ברזולוציה בטבלה שלהלן. הקרדיטים נשמרים בעת קבלת המשימה, מחויבים בהצלחה ומוחזרים במקרה של כישלון.
| רזולוציית פלט | תמחור וקרדיטים |
|---|---|
| 1K | 2 קרדיטים |
| 2K | 3 קרדיטים |
| 4K | 4 קרדיטים |
אין תמיכה באידמפוטנטיות של בקשות. כל בקשת POST תקינה מייצרת משימה חדשה לחיוב. אם תוצאת השליחה אינה ודאית, יש לתשאל את ה-taskId שהוחזר; שליחה מחדש של POST עלולה ליצור משימה נוספת.
אימות
צרו מפתח API בלוח הבקרה. המפתח המלא יוצג פעם אחת בלבד. שמרו אותו בשרת שלכם ושלחו אותו כטוקן Bearer בכל בקשה.
כתובת בסיס (Base 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 callbacks) במקרה של הצלחה או כישלון. שימוש ברשתות פרטיות וב-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 |
יחס הגובה-רוחב (aspect ratio) מוגדר כברירת מחדל ל-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. כל שאר הפרמטרים פועלים לפי אותם כללים.
החליפו את כתובות ה-URL לדוגמה של 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}החליפו את מזהה הדוגמה ב-taskId שהתקבל בעת היצירה. שאילתות יחזירו רק משימות השייכות למשתמש של מפתח ה-API; מזהים שאינם נגישים או שאינם קיימים יחזירו שגיאת HTTP 404.
כנקודת מוצא, בצעו שאילתה (polling) כל 10–20 שניות, הפחיתו את התדירות במקרה של שגיאת HTTP 429, ועצרו כאשר הסטטוס הופך ל-completed או failed. בסביבת פרודקשן מומלץ להשתמש ב-Webhooks. כל דוגמת קוד להלן מבצעת שאילתה אחת בלבד.
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 timestamp (שניות). |
| model | string | מזהה הדגם הציבורי ששימש למשימה זו. |
| 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 יהיה ריק.
Webhooks
הגדירו callback_url בבקשת היצירה כדי לקבל בקשת POST מסוג JSON כאשר המשימה מסתיימת או נכשלת. החזירו תגובת 2xx בתוך 15 שניות. שליחות שנכשלו ינוסו שוב; טפלו בקבלת שידורים חוזרים בצורה אידמפוטנטית (idempotent) לפי מזהה המשימה.
קצה הקישור החוזר (callback endpoint) שלך חייב לקבל בקשות POST עם גוף בקשה מסוג JSON (Content-Type: application/json).
יצירת משימה עם קריאה חוזרת (Callback)
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) משתמשות במבנה התגובה של שאילתת המשימה (task query); התראות על כשלים שזוכו כוללות גם את credits_refunded ברמה העליונה. יש להשתמש ב-id כדי לזהות את המשימה וב-status כדי להבחין בין משימה שהושלמה לכזו שנכשלה. התראות עשויות להישלח שוב: יש לעבד אותן באופן אידמפוטנטי (idempotently) לפי id ו-status. קריאות חוזרות אינן חתומות; יש לאמת את המשימה מול נקודת הקצה המאומתת של השאילתה. כשל במסירת ההתראה אינו מזכה על משימה שהושלמה בהצלחה.
המשימה הושלמה: נתוני ה-payload של ה-callback שהצליח
השדה 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
}המשימה נכשלה: נתוני ה-payload של ה-callback שנכשל
{
"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
}דוגמה לקוד קליטה (Receiver)
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 של ה-callback ומטפלת ישירות במשימות שהושלמו או נכשלו. מומלץ להוסיף שמירה בבסיס נתונים ומניעת כפילויות של מזהי משימות (task-ID deduplication) באפליקציה שלך; מומלץ להעביר עבודות איטיות לתור (queue) לפני החזרת אישור על קבלת ה-callback.
שגיאות
שגיאות HTTP מחזירות אובייקט error המכיל code (קוד) ו-message (הודעה). משימה שהתקבלה בהצלחה עדיין עלולה להיכשל בשלב מאוחר יותר; בצעו שאילתה על המשימה או טפלו בקריאה החוזרת של הכישלון שלה.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | שדה | מה לעשות |
|---|---|---|
| 400 | invalid_request | תקנו את מבנה ה-JSON, הנחיית הטקסט החסרה, טווח הפרמטרים או כתובת ה-URL של המדיה לפני שתנסו שוב. |
| 401 | invalid_api_key | בדקו את טוקן ה-Bearer וודאו שמפתח ה-API פעיל. |
| 402 | insufficient_credits | הוסיפו קרדיטים או הפחיתו את עלות המשימה. התגובה עשויה לכלול את כמות הקרדיטים הנדרשת מול זו הזמינה. |
| 403 | forbidden | בדוק את ההגבלות ברמת החשבון המתוארות בהודעת השגיאה. |
| 404 | not_found | ודאו שמזהה המשימה נכון ושהמפתח שייך למשתמש שיצר את המשימה. |
| 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 בקשות בדקה. בקשות שאילתה ובקשות ליצירת משימות נספרות בנפרד.
בקשות ליצירת תמונות ווידאו חולקות את אותה מגבלת קצב (rate limit) של מפתח ה-API.
שגיאת HTTP 429 כוללת את הכותרת Retry-After: 60 עבור יצירה ו-Retry-After: 5 עבור שאילתות. השתמשו בהשהיית פניות (backoff) והימנעו מביצוע שאילתות בתדירות גבוהה מהנדרש.
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded."
}
}