Claude Opus 5.5 כבר זמין ב-SeedRouter
SeedRouter Docs

Nano Banana 2 (Gemini 3.1 Flash Image)

יצירת תמונות ועריכתן עם Nano Banana 2 דרך נקודת קצה אסינכרונית אחת, עם גוף הבקשה generateContent של Google: פלט עד 4K ועד 14 תמונות ייחוס.

View Markdown

Nano Banana 2 (ננו בננה 2) הוא מודל Gemini 3.1 Flash Image של Google. שלח את גוף הבקשה generateContent של Google עם שדה model, שמור את מזהה המשימה שהוחזר, ותשאל את המשימה כדי לקבל את התמונה המוכנה. תמונות ייחוס נכנסות ל-contents ככתובות fileData.

מזהי מודל

מזהה מודלערוץאופן החיוב
gemini-3.1-flash-imageStandardמחיר קבוע לכל תמונה שנמסרה
gemini-3.1-flash-image-officialOfficialתעריפים לפי טוקנים לקלט, לפלט טקסט/חשיבה ולפלט תמונה

שני המזהים מקבלים את אותם פרמטרים. המחירים הנוכחיים מופיעים בדף המודל.

דוגמה מהירה

curl https://api.seedrouter.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image",
    "contents": [{"parts": [{"text": "A ceramic teapot on a linen tablecloth, soft window light"}]}],
    "generationConfig": {
      "responseModalities": ["IMAGE"],
      "imageConfig": {"aspectRatio": "16:9", "imageSize": "2K"}
    }
  }'

נקודת קצה

POST https://api.seedrouter.ai/v1/images/generations
כותרתערך
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

הגוף הוא בקשת generateContent של Google עם תוספת אחת: model, כי בנתיב של נקודת הקצה הזאת אין שם מודל. התגובה מכילה מזהה משימה, לא את התמונה המוכנה. שמור את מפתחות ה-API בקוד צד השרת. קריאה ישירה ל-/v1beta/models/...:generateContent אינה נתמכת; השתמש בנקודת הקצה הזאת.

פרמטרים

שםסוגחובהברירת מחדלהערות
modelstringכן—אחד משני מזהי המודל שלמעלה.
contentsContent[]כן—1–32 תורות. לכל אחת parts ו-role אופציונלי (user או model); התור האחרון הוא user.
contents[].parts[].textstring——חלק טקסט. נדרש לפחות חלק טקסט אחד.
contents[].parts[].fileDataobjectלא—{"mimeType": "...", "fileUri": "https://..."}; ייחוס של תמונה, וידאו או PDF. עד 14 בסך הכול.
systemInstructionobjectלא—{"parts": [{"text": "..."}]}.
safetySettingsobject[]לא—זוגות {"category", "threshold"}; ראה למטה.
generationConfig.responseModalitiesenum[]לאטקסט ותמונה["IMAGE"] לתמונות בלבד, או ["TEXT", "IMAGE"].
generationConfig.imageConfig.aspectRatioenumלאהיחס של תמונת הקלט, אחרת 1:11:1, 1:4, 4:1, 1:8, 8:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9.
generationConfig.imageConfig.imageSizeenumלא1K512, 1K, 2K, 4K. האות K גדולה.
generationConfig.candidateCountintegerלא1רק 1. בקשה אחת מחזירה תמונה אחת.
generationConfig.temperaturenumberלאברירת המחדל של המודל0–2.
generationConfig.topPnumberלאברירת המחדל של המודל0–1.
generationConfig.topKintegerלאברירת המחדל של המודל1 ומעלה.
generationConfig.seedintegerלא—מספר שלם של 32 ביט.
generationConfig.maxOutputTokensintegerלאברירת המחדל של המודל1–32,768.
generationConfig.stopSequencesstring[]לא—עד 5.
generationConfig.mediaResolutionenumלאברירת המחדל של המודלMEDIA_RESOLUTION_LOW, MEDIA_RESOLUTION_MEDIUM, MEDIA_RESOLUTION_HIGH. קובע כמה טוקנים צורכת מדיית הקלט.
generationConfig.thinkingConfig.includeThoughtsbooleanלאfalseמחזיר את סיכומי החשיבה של המודל ב-output.thoughts.
generationConfig.responseFormat.imageobjectלא—mimeType: IMAGE_JPEG; delivery: INLINE; aspectRatio ו-imageSize כערכי enum של Google, למשל ASPECT_RATIO_SIXTEEN_BY_NINE ו-IMAGE_SIZE_TWO_K, עם אותם יחסי גובה-רוחב וגדלים כמו ב-imageConfig.

קטגוריות בטיחות: HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT. ספים: BLOCK_NONE, BLOCK_ONLY_HIGH, BLOCK_MEDIUM_AND_ABOVE, BLOCK_LOW_AND_ABOVE, OFF.

שדות לא מוכרים נדחים. עדיין לא זמינים: עיגון בחיפוש Google (tools) ותוכן שמור במטמון; thinkingLevel אינו מתועד עבור המודל הזה. inlineData אינו מתקבל; העבר מדיה ככתובות fileData. responseFormat.image.delivery מקבל רק INLINE: תמונות מוכנות מוחזרות תמיד ככתובות מאוחסנות.

גודל הפלט

imageSizeפלט ביחס 1:1טוקני תמונה
512512×512747
1K1024×10241,120
2K2048×20481,680
4K4096×40962,520

יחסי גובה-רוחב אחרים שומרים על אותו מספר טוקנים; למשל 16:9 ב-1K הוא 1376×768.

מצבים

אין פרמטר מצב נפרד ואין נקודת קצה נפרדת לעריכה.

פעולהפרמטרים
טקסט לתמונהחלק טקסט
עריכה או הרכבהחלק טקסט + חלק fileData אחד או יותר
עריכה בכמה תורותתורות user ו-model קודמות, ואחריהן תור user חדש (ראה את ההערה למטה)

כדי להמשיך שיחה, בנה מחדש את תור ה-model מתוך output.parts של המשימה הקודמת, לפי הסדר: חלק טקסט הופך ל-{"text": ..., "thoughtSignature": ...} וחלק תמונה הופך ל-{"fileData": {"mimeType": "image/<output_format>", "fileUri": <data[image].url>}, "thoughtSignature": ...}. שמור כל thoughtSignature בדיוק כפי שהוחזר: זו כתובת ה-URL של החתימה ששמרנו עבורך (החתימה של תמונת 4K שוקלת כמה מגה-בייט), ואנחנו משחזרים אותה לפני שהבקשה מגיעה למודל. מתקבלות רק חתימות מתוצאות המשימות שלך.

עריכה עם תמונת ייחוס

curl https://api.seedrouter.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image",
    "contents": [{
      "role": "user",
      "parts": [
        {"text": "Turn this photo into a watercolor painting. Keep the composition."},
        {"fileData": {"mimeType": "image/jpeg", "fileUri": "https://example.com/photo.jpg"}}
      ]
    }]
  }'

החלף את כתובת הדוגמה בתמונה נגישה משלך.

קלט מדיה

ה-API הזה מקבל הפניות לכתובות URL בלבד. inlineData ב-Base64, כתובות data: והעלאות multipart אינם מתקבלים. ה-Playground מעלה את הקבצים שנבחרו לאחסון לפני שהוא שולח את הכתובות שלהם.

ייחוסים חייבים להיות כתובות HTTP(S) ציבוריות, כל אחת קטנה מ-50 MB ובסך הכול פחות מ-100 MB: תמונות (image/png, image/jpeg, image/webp, image/heic, image/heif), סרטוני וידאו (video/mp4, video/mpeg, video/mov, video/avi, video/x-flv, video/mpg, video/webm, video/wmv, video/3gpp) או מסמכי PDF (application/pdf). mimeType חייב להתאים לקובץ. הכתובות נטענות במהלך העיבוד; תמונה שאינה נגישה גורמת לכישלון המשימה, ומשימה שנכשלה אינה מחויבת.

גורמי עלות

בדוק את מדור המחירים של המודל לתעריפים הנוכחיים. gemini-3.1-flash-image מחייב מחיר קבוע לכל תמונה שנמסרה, בלי קשר לגודל או לפרומפט. gemini-3.1-flash-image-official מחייב לפי שימוש: טוקני קלט (טקסט ותמונות ייחוס), טוקני פלט של טקסט וחשיבה, וטוקני פלט של תמונה, כל אחד בתעריף משלו. גודל התמונה הוא הגורם העיקרי; ראה את הטבלה שלמעלה.

את החיובים הסופיים תראה בהיסטוריית השימוש של החשבון שלך. משימות שנכשלו אינן מחויבות.

מבנה הפלט

השליחה מחזירה הפניה למשימה:

{
  "id": "task_...",
  "model": "gemini-3.1-flash-image",
  "status": "processing",
  "created_at": 1790310979
}

תשאול המשימה

curl https://api.seedrouter.ai/v1/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

תשאל כל כמה שניות עד ש-status יהיה completed או failed. פקיעת זמן ברשת במהלך התשאול אינה מעידה שהיצירה נכשלה: שמור את מזהה המשימה והמשך לבדוק אותה. אל תיצור משימה נוספת כדי לבדוק התקדמות.

דוגמת תשאול מלאה

הרץ זאת אחרי דוגמת השליחה ב-Python שלמעלה.

import time

deadline = time.monotonic() + 600
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "completed":
        for image in task["output"]["data"]:
            print(image["url"])
        break
    if task["status"] == "failed":
        raise RuntimeError(task["error"]["message"])
    time.sleep(3)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

משימה שהסתיימה

{
  "id": "task_...",
  "model": "gemini-3.1-flash-image",
  "status": "completed",
  "created_at": 1790310979,
  "finished_at": 1790311001,
  "output": {
    "created": 1790310999,
    "data": [{"url": "https://static.seedrouter.ai/media/tasks/task_example/0.jpg"}],
    "output_format": "jpeg",
    "usage": {
      "input_tokens": 27,
      "output_tokens": 1525,
      "total_tokens": 1552,
      "output_tokens_details": {"image_tokens": 1120, "text_tokens": 405, "reasoning_tokens": 0}
    }
  }
}
שדהמשמעות
idשמור את המזהה הזה לתשאולים הבאים.
statusprocessing, completed או failed.
created_at, finished_atחותמות זמן Unix בשניות.
output.data[].urlכתובת התמונה שנוצרה.
output.textטקסט שהמודל החזיר לצד התמונה, כש-responseModalities כולל TEXT. החשיבה אינה נכללת.
output.thoughtsסיכומי החשיבה של המודל, כש-includeThoughts הוא true. תמונות ביניים שהמודל מצייר בזמן החשיבה אינן נמסרות.
output.output_formatפורמט התמונה בפועל.
output.partsחלקי התגובה הסופיים לפי הסדר, לעריכה בכמה תורות: {"text", "thoughtSignature"} או {"image": <index into data>, "thoughtSignature"}. thoughtSignature הוא כתובת URL; שלח אותו בחזרה ללא שינוי.
output.usageשימוש בטוקנים. output_tokens סופר פלט של טקסט, חשיבה ותמונה; output_tokens_details.image_tokens הוא החלק של התמונה.
errorשגיאה מובנית במשימה שנכשלה.

סטרימינג (streamGenerateContent) אינו נתמך; התוצאות נמסרות דרך המשימה.

שגיאות

בקשות שנדחות לפני יצירת המשימה מחזירות שגיאת HTTP יחד עם אובייקט error. משימה שנכשלת לאחר שהתקבלה מחזירה בתשאול HTTP 200, עם status: "failed" ואובייקט error. תמונה שנחסמה על ידי מסנני הבטיחות של המודל נכשלת עם content_policy_violation; תגובה ללא תמונה נכשלת עם no_output.

ראה את קטלוג השגיאות המשותף לקודים, לסטטוסי HTTP ולהנחיות ניסיון חוזר.

{
  "id": "task_...",
  "status": "failed",
  "error": {
    "code": 60001,
    "message": "The request was rejected by the content policy. Please revise the prompt or input images."
  }
}

אם השליחה עצמה חורגת מהזמן הקצוב, בדוק את היסטוריית המשימות לפני שליחה חוזרת: ייתכן שהבקשה הראשונה כבר התקבלה.

טיפים

  • תאר את הנושא, הסביבה, התאורה והסגנון במשפטים מלאים.
  • בעריכה, ציין מה צריך להשתנות ומה חייב להישאר כפי שהוא.
  • השתמש ב-512 או ב-1K לטיוטות, וב-2K או ב-4K לנכסים הסופיים.
  • שמור את התמונות שהוחזרו באחסון שלך אם אתה צריך עותק קבוע.

קישורים רלוונטיים