Claude Opus 5.5 متاح الآن على SeedRouter

طريقة استخدام Nano Banana 2 API: المفتاح والطلب والنتيجة

شرح استخدام Nano Banana 2 API خطوة بخطوة: أنشئ مفتاحًا، وأرسل طلب generateContent، واستعلم عن المهمة، وأضف صورًا مرجعية، ودع وكيل برمجة ينفّذ المهمة.

اقرأ بصيغة Markdown

لاستخدام Nano Banana 2 API، أنشئ مفتاح API، وأرسل جسم طلب generateContent الخاص بـ Google مع حقل model إلى نقطة نهاية واحدة، ثم استعلم عن المهمة التي تُعاد إليك حتى يصبح رابط الصورة جاهزًا. وتنطبق الخطوات نفسها على Nano Banana Pro وNano Banana 2 Lite؛ ولا يتغيّر سوى قيمة model.

يشرح هذا الدليل كل خطوة بشفرة تعمل، ثم يوضّح كيفية التحرير بالصور المرجعية وكيفية تسليم المهمة إلى وكيل برمجة.

ما الذي تحتاجه قبل الطلب الأول؟

  1. مفتاح API. أنشئ مفتاحًا في صفحة مفاتيح API واحتفظ به على خادمك. لا تضعه أبدًا في شفرة المتصفح.
  2. الرصيد. أضف رصيدًا في صفحة الفوترة. الرصيد لا تنتهي صلاحيته، والطلبات الفاشلة لا تُحتسب.
  3. معرّف النموذج. يحتسب gemini-3.1-flash-image سعرًا ثابتًا لكل صورة؛ ويحتسب gemini-3.1-flash-image-official التوكنات. راجع دليل الأسعار لتختار.
export SEEDROUTER_API_KEY="your-key"

كيف ترسل طلب Nano Banana 2؟

أرسل الطلب بطريقة POST إلى /v1/images/generations. الجسم هو بنية generateContent الخاصة بـ Google مضافًا إليها model:

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"}
    }
  }'

الاستجابة مهمة، لا صورة:

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

إذا كنت تستدعي API الخاصة بـ Google بالفعل، فالجسم الذي ترسله هو نفسه الذي كنت سترسله إلى generateContent. ولا يُدعم استدعاء /v1beta/models/...:generateContent على SeedRouter مباشرة؛ استخدم نقطة النهاية هذه.

كيف تحصل على الصورة؟

استعلم عن المهمة كل بضع ثوانٍ حتى تصبح قيمة status هي completed أو failed. بلغة Python:

import os
import time
import requests

API = "https://api.seedrouter.ai/v1"
headers = {"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"}

response = requests.post(
    f"{API}/images/generations",
    headers=headers,
    json={
        "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"},
        },
    },
    timeout=60,
)
response.raise_for_status()
task_id = response.json()["id"]

deadline = time.monotonic() + 600
while time.monotonic() < deadline:
    result = requests.get(f"{API}/tasks/{task_id}", headers=headers, 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}.")

تتضمن المهمة المكتملة رابط الصورة في output.data[0].url، إضافة إلى استهلاك التوكنات. ومع "responseModalities": ["TEXT", "IMAGE"]، يعود أي نص يكتبه النموذج في output.text. نزّل الصورة إلى تخزينك الخاص إذا كنت تحتاج إليها على المدى الطويل.

انتهاء المهلة أثناء الاستعلام لا يعني أن الصورة فشلت. احتفظ بمعرّف المهمة وتحقّق منها مجددًا؛ فإرسال طلب جديد يعني الدفع مقابل صورة ثانية.

كيف تحرّر صورة أو تستخدم المراجع؟

أضف أجزاء fileData بجانب النص. كل جزء منها رابط عام مع نوع MIME الخاص به:

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"}}
      ]
    }]
  }'

يقبل Nano Banana 2 حتى 14 مرجعًا لكل طلب: صورًا أو فيديوهات أو ملفات PDF، حجم كل منها أقل من 50 ميغابايت. ويجب أن تكون المراجع روابط؛ ولا يُقبل inlineData بصيغة base64. وإذا تعذّر جلب رابط ما، تفشل المهمة ولا تُحتسب. وللتحرير اللاحق، أرسل الأدوار السابقة على شكل إدخالات user وmodel واختم بدور user جديد.

ما أهم الإعدادات؟

الإعدادوظيفته
imageConfig.imageSize512 أو 1K أو 2K أو 4K؛ والقيمة الافتراضية 1K
imageConfig.aspectRatio14 نسبة من 1:8 إلى 8:1؛ ويتبع المرجع الأول عند إغفاله
responseModalities["IMAGE"] للصورة فقط، و["TEXT", "IMAGE"] للحصول على نص أيضًا
systemInstructionقواعد ثابتة مثل الأسلوب المعتمد لديك
seedأعد استخدامه للاقتراب من نتيجة سابقة
mediaResolutionعدد التوكنات التي يستهلكها كل مرجع؛ والقيمة الأقل أرخص في Official

يسرد مرجع Nano Banana 2 API كل حقل وكل حد. وتُرفض الحقول غير المعروفة قبل احتساب أي شيء، والتأريض عبر Google Search (tools) غير متاح بعد.

كيف تدع وكيل برمجة يستخدم Nano Banana 2 API؟

يستطيع وكيل برمجة مثل Claude Code أو Codex أو Cursor استدعاء API بأمر shell أو بسكربت قصير. لا يوفّر SeedRouter خادم MCP ولا skill جاهزة؛ فهذا الموجّه هو التكامل كله. صدّر المفتاح أولًا، ثم الصق:

Use the SeedRouter API to generate a Nano Banana 2 image for me.

Security: read SEEDROUTER_API_KEY from my local environment. Never ask me to paste it and never print it.

Goal: [subject, setting, style, what the image is for]
Size: [512 | 1K | 2K | 4K]    Aspect ratio: [e.g. 1:1, 16:9, 9:16]
References: [public image URLs, or none]

Send POST https://api.seedrouter.ai/v1/images/generations with
{"model": "gemini-3.1-flash-image",
 "contents": [{"parts": [{"text": "..."}, {"fileData": {"mimeType": "image/jpeg", "fileUri": "https://..."}}]}],
 "generationConfig": {"responseModalities": ["IMAGE"],
   "imageConfig": {"aspectRatio": "...", "imageSize": "..."}}}
Accepted top-level fields: model, contents, systemInstruction, safetySettings,
generationConfig. References must be fileData URLs (up to 14), never base64.
Do not add tools or any other field.

Before sending, show me the request body and wait for my approval: each
request is charged. Then poll GET https://api.seedrouter.ai/v1/tasks/{id}
every 3 seconds until status is completed or failed. If polling times out,
keep checking the same task; never resubmit. Save output.data[0].url into
./images/ and tell me the file path.

خطوة الموافقة مهمة: فالوكيل ينفق من رصيدك، لذا لا ينبغي أن يرسل أي طلب من تلقاء نفسه.

الأسئلة الشائعة

كيف أحصل على مفتاح Nano Banana 2 API؟

سجّل الدخول، وافتح صفحة مفاتيح API وأنشئ مفتاحًا. يعمل المفتاح نفسه مع Nano Banana 2 وNano Banana Pro وNano Banana 2 Lite والنماذج الأخرى على SeedRouter.

هل تدعم Nano Banana 2 API الطلبات المجمّعة؟

أرسل طلبًا واحدًا لكل صورة واستعلم عن المهام بالتوازي. يعيد كل طلب صورة واحدة، وتُحتسب كل مهمة على حدة.

ما الأخطاء التي يجب أن أعالجها؟

يعني الرمز 400 أن الجسم خالف قاعدة ما، مثل حقل غير معروف أو حجم غير مدعوم، ولا يُحتسب شيء. والمهمة التي تنتهي بحالة failed تحمل رسالة خطأ ولا تُحتسب أيضًا. ويسرد دليل الأخطاء كل رمز ومتى تعيد المحاولة.

أرسل طلبك الأول

أنشئ مفتاحًا، وأضف رصيدًا صغيرًا، وشغّل مثال Python أعلاه، أو جرّب الطلب نفسه دون أي شفرة في Playground الخاص بـ Nano Banana 2. وللموجّهات المعقّدة، غيّر النموذج إلى gemini-3-pro-image لاستخدام Nano Banana Pro.

أدلة ذات صلة