الانتقال إلى الوثائق
في هذه الصفحة

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

الأسعار والأرصدة

ينشئ كل طلب صورة واحدة. تعتمد تكلفة الرصيد على الدقة الموضحة أدناه. يُحجز الرصيد عند قبول المهمة ويُخصم عند النجاح ويُرد عند الفشل.

دقة المخرجاتالأسعار والأرصدة
1K2 رصيد
2K3 رصيد
4K4 رصيد

خاصية تكرار الطلبات المتطابقة بشكل آمن غير مدعومة. كل طلب POST صالح ينشئ مهمة جديدة مدفوعة. إذا كانت نتيجة الإرسال غير مؤكدة، فاستعلم عن taskId المسترجع؛ حيث إن إعادة محاولة إرسال POST قد تنشئ مهمة أخرى.

المصادقة

أنشئ مفتاح API في لوحة التحكم. يظهر المفتاح الكامل مرة واحدة فقط. احتفظ به في خادمك وأرسله كرمز حامل (Bearer token) مع كل طلب.

رابط الأساس (Base URL)

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

قم بتعيين متغير البيئة SEEVIO_API_KEY قبل تشغيل هذه الأمثلة. يتم تشغيل أمثلة JavaScript على خادمك باستخدام Node.js؛ وتستخدم أمثلة Python حزمة requests.

جسم الطلب (Request body)

الحقلالنوعمطلوبالوصف والقيود
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 المسترجع، ثم استخدم مثال الاستعلام عن المهمة أدناه. قيمة الرصيد في استجابة الإنشاء تمثل المبلغ المحجوز.

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.

استعلم كل 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.
الحقلالنوعالقيم المسموح بها والمتطلبات
idstringمعرف المهمة. هذا هو taskId المسترجع من استجابة الإنشاء.
created_atnumberوقت إنشاء المهمة بثواني Unix.
modelstringمعرف النموذج العام المستخدم لهذه المهمة.
billing_statusstringreserved (محجوز)، charged (مخصوم)، refunded (مسترد)، أو refund_failed (فشل الاسترد).
creditsnumberالأرصدة المحجوزة لهذه المهمة. يتم الاحتفاظ بهذه القيمة بعد الاسترداد؛ تحقق من billing_status لمعرفة النتيجة النهائية للفوترة.
failed_reasonstring | nullسبب الفشل للمهام الفاشلة؛ ويكون null في الحالات الأخرى. تحذف استجابات الاستعلام الفاشلة حقل data.
failed_codestring | nullرمز الخطأ. راجع failed_reason للاطلاع على تفاصيل الخطأ.
dataobjectيكون متواجدًا في استعلامات المهام غير الفاشلة. يحتوي على تفاصيل المخرجات والمعالجة.
data.resultsstring[]مصفوفة روابط الصور؛ فارغة قبل الاكتمال وبعد انتهاء الصلاحية.
data.image_expires_atstring | nullوقت انتهاء صلاحية الصور بتنسيق ISO 8601، أو null إذا لم يتوفر بعد.
data.processing_timenumber | 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 في طلب الإنشاء لتلقي طلب JSON POST عند اكتمال المهمة أو فشلها. يجب إرجاع استجابة بترميز 2xx في غضون 15 ثانية. تتم إعادة المحاولة للإرسال الفاشل؛ لذا يرجى معالجة الطلبات المتكررة بشكل متطابق (idempotently) باستخدام معرف المهمة.

يجب أن تدعم نقطة نهاية الاستدعاء الذاتي (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) بنية استجابة استعلام المهمة؛ وتتضمن إشعارات الفشل التي رُدّت قيمتها الحقل credits_refunded في المستوى الأعلى أيضاً. استخدم id لتحديد المهمة وstatus للتمييز بين الاكتمال والفشل. قد تتكرر الإشعارات، لذا عالجها اعتماداً على id وstatus بحيث لا يؤدي تكرارها إلى تكرار الأثر. الاستدعاءات الراجعة غير موقعة؛ تحقق من المهمة عبر نقطة نهاية الاستعلام التي تتطلب المصادقة. فشل تسليم الإشعار لا يؤدي إلى ردّ قيمة مهمة ناجحة.

اكتملت المهمة: بيانات الاستدعاء الذاتي الناجح

يشير 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
}

مثال للمستقبل (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 للتعامل مع المهام المكتملة والفاشلة مباشرةً. يُرجى إضافة ميزة الحفظ الدائم وتجنب تكرار معرفات المهام (Task-ID) في تطبيقك، مع جدولة المهام البطيئة في قائمة انتظار قبل تأكيد الاستدعاء الذاتي.

الأخطاء

تحتوي أخطاء HTTP على كائن خطأ يضم الرمز (code) والرسالة (message). يمكن للمهمة المقبولة بنجاح أن تفشل لاحقًا؛ لذا استعلم عن المهمة أو تعامل مع خطاك الراجع للفشل.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPالحقلالإجراء المطلوب
400invalid_request
قم بتصحيح الـ JSON، أو الوصف المفقود، أو نطاق المعلمات، أو رابط الوسائط قبل إعادة المحاولة.
401invalid_api_key
تحقق من الرمز الحامل (Bearer token) وما إذا كان مفتاح الـ API نشطًا.
402insufficient_credits
أضف رصيدًا أو قلل من تكلفة المهمة. قد تتضمن الاستجابة المبالغ المطلوبة والمتاحة.
403forbidden
يرجى التحقق من القيود المفروضة على الحساب والموضحة في رسالة الخطأ.
404not_found
تحقق من معرف المهمة وتأكد من أن المفتاح ينتمي لمستخدم المهمة.
429rate_limited
انتظر للمدة المحددة في Retry-After قبل إعادة المحاولة.
500internal_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 key) ما يصل إلى 100 طلب في الدقيقة افتراضيًا. حدود معدل الطلبات المخصصة غير متوفرة حاليًا.

الاستعلام عن المهام: يتيح كل مفتاح واجهة برمجة تطبيقات (API key) ما يصل إلى 120 طلبًا في الدقيقة افتراضيًا. ويتم احتساب طلبات الاستعلام وطلبات إنشاء المهام بشكل منفصل.

تتشارك طلبات إنشاء الصور والفيديو نفس حد معدل الطلبات الخاص بمفتاح واجهة برمجة التطبيقات API key.

يتضمن خطأ 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."
  }
}