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 token) مع كل طلب.
رابط الأساس (Base URL)
https://api.seevio.aiAuthorization: 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. |
| الحقل | النوع | القيم المسموح بها والمتطلبات |
|---|---|---|
| id | string | معرف المهمة. هذا هو taskId المسترجع من استجابة الإنشاء. |
| created_at | number | وقت إنشاء المهمة بثواني Unix. |
| 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[] | مصفوفة روابط الصور؛ فارغة قبل الاكتمال وبعد انتهاء الصلاحية. |
| 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 في طلب الإنشاء لتلقي طلب 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 | الحقل | الإجراء المطلوب |
|---|---|---|
| 400 | invalid_request | قم بتصحيح الـ JSON، أو الوصف المفقود، أو نطاق المعلمات، أو رابط الوسائط قبل إعادة المحاولة. |
| 401 | invalid_api_key | تحقق من الرمز الحامل (Bearer token) وما إذا كان مفتاح الـ 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 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."
}
}