تحتوي واجهة برمجة تطبيقات Nano Banana على ثلاثة معرفات نماذج (model IDs) مدفوعة على TokenLab، وتكلفة أرخصها تعادل تقريبًا نصف تكلفة النموذج المتوسط لكل صورة. الخطأ المكلف نادرًا ما يكون في اختيار النموذج، بل في إرسال طلب تعديل إلى نقطة النهاية (endpoint) الخطأ أو إعادة محاولة استدعاء إنشاء (create call) قد أنشأ مهمة بالفعل. يغطي هذا الدليل المعرفات الدقيقة، واستدعاءً عمليًا لتحويل النص إلى صورة، واستدعاءً لصورة مرجعية، والاستقصاء غير المتزامن (async polling)، والأخطاء المتوقعة، وكيفية تحديد الرسوم. تم قراءة الأسعار وقوائم الحقول في 2026-10-03، لذا يرجى التأكد منها مرة أخرى قبل البدء في الاستخدام الفعلي.
أبرز النقاط
- أرسل المعرف الدقيق:
nano-banana-2، أوnano-banana-2-lite، أوnano-banana-pro. أسماء العرض ليست بدائل للطلب. - تعمل الصور المرجعية لـ Nano Banana عبر إرسال طلب
POST /v1/images/generationsمعoperation: "image-to-image"وimage_urls. لا يتم إرسالها إلى/v1/images/editsأو/v1/chat/completions. - الأسعار الأساسية التي قرأناها في 2026-10-03 هي 0.0168 دولار، و0.0335 دولار، و0.067 دولار لكل صورة لمعرفات lite، وstandard، وpro على التوالي. لكل نموذج نطاق سعري، لذا تحقق من الفئة الدقيقة في الاستخدام (Usage).
- استجابة الإنشاء التي تحتوي على
task_id، أوstatus: "pending"، أوpoll_urlتعني أنه يجب عليك إجراء استقصاء (poll) لـGET /v1/tasks/{id}حتى تصبح الحالةcompletedأوfailed. - قراءة الحالة تُرجع HTTP 200 حتى عند فشل المهمة. اعتمد على حقل
statusالخاص بالمهمة، وليس كود HTTP. - الرسوم النهائية تظهر في الاستخدام (Usage) وفي
billing_transaction_id، وليس في جدول أسعار منسوخ.
نماذج Nano Banana API، وحدات التسعير، والغرض من كل منها
عندما قارنا مسودة هذا الدليل السابقة بالوثائق الحالية، وجدنا ثلاث مشاكل: سرد النماذج بدون أسعار، إرسال تعديل Nano Banana عبر إكمال الدردشة (chat completions)، والاستعلام عن الكتالوج بفلتر لا يستخدمه دليل الصور. يصحح الجدول أدناه المشكلة الأولى، بينما تصحح الأقسام اللاحقة المشكلتين الأخريين.
| معرف النموذج (Model ID) | الأفضل لـ | وحدة التسعير | سعر TokenLab (بالدولار الأمريكي) | المصدر، المرصود |
|---|---|---|---|---|
nano-banana-2 |
تحويل النص إلى صورة وتحويل صورة إلى صورة مع aspect_ratio و resolution (1k، 2k، 4k). تم إصداره في 2026-02-26. |
per_image |
0.0335 دولار لكل طلب. النطاق من 0.0225 إلى 0.0755 دولار. | واجهة برمجة تطبيقات النموذج المباشرة، 2026-10-03 |
nano-banana-2-lite |
أرخص خيار لتحويل النص إلى صورة وتحويل صورة إلى صورة. السعر الذي رأيناه يغطي فئة 1k. | per_image |
0.0168 دولار لكل طلب. الحد الأدنى والأقصى كلاهما 0.0168 دولار. | واجهة برمجة تطبيقات النموذج المباشرة، 2026-10-03 |
nano-banana-pro |
تحويل النص إلى صورة، وتحويل صورة إلى صورة، وتعديل الصور مع aspect_ratio و resolution. |
per_image |
0.067 دولار لكل طلب. النطاق من 0.067 إلى 0.12 دولار. | واجهة برمجة تطبيقات النموذج المباشرة، 2026-10-03 |
nano-banana |
تحويل النص إلى صورة مع aspect_ratio فقط. لا يوجد اختيار عام لـ resolution. |
غير موجود في أدلتنا | تحقق من صفحة النموذج أو نقطة نهاية التسعير | الكتالوج، 2026-10-02؛ وثائق إنشاء صورة، 2026-10-03 |
جميع الأسعار أعلاه تحمل is_lock_price: true وتم تحديثها في 2026-10-02T16:53:30.068Z. هناك ثلاث تفاصيل مهمة قبل اختيار أحدها:
- فئات الدقة تغير السعر. تُظهر واجهة برمجة التطبيقات المباشرة نطاقًا لـ
nano-banana-2وnano-banana-pro، لكن أدلتنا لا تربط كل فئة بدقة معينة. لا تفترض أن1kهو السعر الأساسي. اقرأ إدخالات التسعير لنموذجك. - مخرجات النص لها سعر توكن خاص بها. يحمل كل من
nano-banana-2وnano-banana-proإدخالnative-gemini-text-output. ينطبق هذا عندما يكونoutputModalityهوtext. بالنسبة لـnano-banana-2، يتم إدراج 0.25 للمدخلات و1.5 للمخرجات. بالنسبة لـnano-banana-pro، يتم إدراج 1 للمدخلات و6 للمخرجات. الوحدة هيper_token. تأكد من المقياس فيGET /v1/models/:model/pricingقبل وضع ميزانية حوله. - Lite لا تدرج تنسيق طلب مقبول. السجل المباشر لـ
nano-banana-2-liteيقول "غير مدرج". اقرأ تفاصيله قبل البناء عليه.
للحصول على ميزانية تقريبية، نضرب السعر الأساسي في الحجم. هذه تقديرات بالسعر الأساسي، وليست عروض أسعار:
- 100 صورة على
nano-banana-2-lite: 100 × 0.0168 دولار = 1.68 دولار. - 100 صورة على
nano-banana-2: 100 × 0.0335 دولار = 3.35 دولار. - 100 صورة على
nano-banana-pro: 100 × 0.067 دولار = 6.70 دولار.
فئات الدقة الأعلى ستزيد من هذه الأرقام.
لسرد نماذج الصور الحالية بنفسك، اتصل بنقطة النهاية التي يستخدمها دليل توليد الصور. استخدمت المسودة السابقة category=image، وهو ما لا توثقه الدليل.
curl "https://api.tokenlab.sh/v1/models?recommended_for=image" \
-H "Authorization: Bearer sk-your-api-key"
لعمليات نموذج واحد، وأسعاره، ودورة حياته، استخدم Get a Model. يمكنك أيضًا تصفح دليل نماذج TokenLab.
إرسال طلب تحويل نص إلى صورة باستخدام Nano Banana API
أنشئ مفتاح API في لوحة تحكم TokenLab وقم بتصديره:
export TOKENLAB_API_KEY="your-tokenlab-api-key"
أرسل دائمًا model. تقول مرجع إنشاء الصور أن واجهات برمجة تطبيقات الصور لا تختار نموذجًا افتراضيًا. النموذج المفقود يُرجع 400 مع param: "model".
يستخدم هذا الطلب فقط الحقول التي تدرجها الوثائق لعائلات صور Google. حافظنا على resolution عند 1k لأن nano-banana-2 توثق 1k و 2k و 4k.
curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
--max-time 120 \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-2",
"prompt": "A minimalist ceramic vase on a natural wooden table, studio lighting",
"aspect_ratio": "1:1",
"resolution": "1k",
"response_format": "url"
}'
يتطابق علم --max-time 120 مع الوثائق. فهي تقول إن طلبات الدقة العالية قد تستغرق حوالي دقيقة أو أكثر، لذا اضبط مهلة العميل (client timeout) على 120 ثانية على الأقل. تقول الوثائق إن size هو اسم مستعار للتوافق مع عائلات صور Google، لكنها توصي بـ aspect_ratio مباشرة.
النجاح المتزامن يُرجع الصورة النهائية مباشرة. قيم العناصر النائبة أدناه تُظهر الشكل الموثق فقط:
{
"created": 1700000000,
"data": [
{ "url": "https://example.com/generated-image.png" }
]
}
اقرأها بهذا الترتيب:
- إذا كان النص يحتوي على
task_id، أوstatus: "pending"، أوpoll_url، فأنت لديك مهمة، وليس صورة. انتقل إلى قسم الاستقصاء. - بخلاف ذلك، اقرأ
data[0].url. معresponse_format: "b64_json"، اقرأdata[0].b64_jsonبدلاً من ذلك. createdهو طابع زمني Unix. يظهرrevised_promptفقط عندما يُرجع النموذج واحدًا، لذا لا تشترط وجوده.- خزّن رابط الصورة، ومعرف الوظيفة الخاص بك، والنموذج، و
request_idمن رؤوس الاستجابة.
قد يتم الاحتفاظ بروابط الصور المولدة كنسخ وسائط لمدة 30 يومًا. تحقق من media_retention.items لمعرفة حالة كل عنصر و expires_at. النسخ المعلقة أو الفاشلة ليست مضمونة، لذا انسخ الملف إلى وحدة التخزين الخاصة بك إذا كنت بحاجة إليه لفترة أطول. يحتوي دليل الاحتفاظ بالبيانات على التفاصيل.
تعديل صورة باستخدام رابط مرجعي
تخيل فريق كتالوج يريد نفس لقطة المنتج على خلفية استوديو نظيفة. الخطوة المغرية هي /v1/images/edits. الوثائق تستبعد ذلك. طلبات الصور المرجعية لـ Nano Banana مكشوفة على /v1/images/generations مع operation: "image-to-image". /v1/images/edits ليس المسار الصحيح لها.
يأتي هذا الطلب من دليل توليد الصور، مع nano-banana-2 كنموذج:
curl https://api.tokenlab.sh/v1/images/generations \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-2",
"operation": "image-to-image",
"prompt": "Keep the product shape, change the background to a bright studio setup",
"image_urls": ["https://example.com/input/product.png"],
"aspect_ratio": "1:1"
}'
القواعد التي نتبعها مع هذا الشكل:
- أرسل الحقول المرجعية الموثقة بدقة. استخدم
image_url، أوimage_urls، أوreference_image_urlsفي JSON. لا ترسلimages[]أوfile_idعلى المستوى الأعلى. فهي تنتمي إلى تدفق التعديل ويتم رفضها في نقطة النهاية هذه. - استخدم روابط عامة. يجب أن تكون
httpأوhttps، بدون بيانات اعتماد مضمنة، وبدون أجزاء (fragments)، وبدون مضيفي شبكة خاصة. تجنب الروابط الموقعة التي قد تنتهي صلاحيتها قبل بدء المعالجة. - استخدم multipart للمصادر الخاصة. توفر الوثائق ملف
imageبصيغة multipart للمصادر الخاصة أو المحمية برؤوس. - طابق
resolutionمع النموذج. تقول الوثائق إنnano-banana-proقد تتضمنه ويجب أن تحذفnano-banana-editذلك. تسمي الوثائق أيضًاnano-banana-editكنموذج صورة مرجعية، لكن هذا المعرف ليس في الكتالوج الذي جلبناه في 2026-10-02. تحقق من أي معرف مقابل/v1/modelsقبل استخدامه.
مثال تعديل إكمال الدردشة في المقالة الأصلية لم يعد موجودًا. يسرد السجل المباشر gemini_generate_content كتنسيق مقبول لـ nano-banana-2 و nano-banana-pro. أدلتنا لا توثق مسار تعديل صور إكمال الدردشة.
الرسم القائم على القناع (mask-based inpainting) والمعلمات مثل strength غير موثقة لـ Nano Banana في أدلتنا. افحص GET /v1/models/{model} قبل إرسالها.
متى يصبح طلب الصورة مهمة، وكيفية استقصائها
استدعاء إنشاء الصورة يكون إما متزامنًا أو غير متزامن، والاستجابة تخبرك أيهما. يسرد دليل الوظائف غير المتزامنة حقول التشغيل: task_id، أو status: "pending"، أو poll_url. إذا ظهر أي منها، فإن مصفوفة data[] تكون فارغة والعمل لا يزال قيد التشغيل.
توثق أدلتنا علم طلب async: true فقط لـ gpt-image-2 ونماذج صور FLUX/BFL الرسمية. لا توثقه لمعرفات Nano Banana. لا تضفه إلى طلب Nano Banana. تعامل مع استجابة المهمة إذا عادت، وتحقق من تفاصيل النموذج إذا كنت بحاجة إلى سلوك غير متزامن.
تخيل تحديث المتصفح الذي يعيد إرسال استدعاء الإنشاء بعد استجابة بطيئة. أنت الآن تدفع مقابل توليدين. تقول الوثائق إن معظم عمليات التوليد المكررة تأتي من هذه الإعادة. اتبع هذا الترتيب:
- احفظ المعرفات فورًا. خزّن
idأوtask_id، وpoll_url، والنموذج، ونقطة النهاية، ومعرف الوظيفة الخاص بك.idوtask_idهما نفس القيمة. - استقصِ الرابط. استخدم
poll_urlعند وجوده. بخلاف ذلك، اتصل بالمسار الثابت:
curl "https://api.tokenlab.sh/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $TOKENLAB_API_KEY"
- استقصِ كل 5-10 ثوانٍ. يقول الدليل إن ذلك عادة ما يكون كافيًا لوظائف الوسائط الطويلة.
- اعرف الحالات. هي
pending، وprocessing، وcompleted، وfailed. المهمة الملغاة تظهرfailedمعcancelled: true. - توقف عند حالة نهائية. عند
completed، اقرأdata[].url. نتائج الصور غير المتزامنة هي روابط فقط، وليست أبدًاb64_json. عندfailed، اقرأerrorوerror_details. - تعامل مع المهلات بأمان. إذا انتهت مهلة استدعاء الإنشاء قبل أن ترى استجابة، تحقق من
request_idوابحث عن مهمة قبل إعادة المحاولة. إذا قمت بتخزين معرف مهمة، استأنف استقصاءه. إذا فشل استقصاء الحالة، أعد محاولة ذلك الاستقصاء مع التراجع (backoff) ولا تقم بإعادة الإنشاء.
قراءة الحالة تُرجع HTTP 200 حتى للمهمة الفاشلة. قد تتضمن المهام الفاشلة error_details مع status، و type، و code، و message، و param، و retryable. على سبيل المثال، error_details.status: 400 مع param: "size" يعني أن الطلب يحتاج إلى تصحيح. هذا لا يعني أن الاستقصاء نفسه فشل. إعادة محاولة توليد فاشل تنشئ مهمة جديدة وقد تنشئ رسومًا جديدة.
الأخطاء المتوقعة وما يجب فعله
تعامل مع الأخطاء حسب حالة HTTP و code، وليس أبدًا حسب message. يقول دليل معالجة الأخطاء إن الرسالة قد تتغير دون إشعار. تستخدم إكمال الدردشة والاستجابات كائن error بنمط OpenAI، بينما تحتفظ Gemini و Anthropic بتنسيقاتهما الخاصة. لا تشارك محللًا واحدًا عبر جميع واجهات برمجة تطبيقات TokenLab.
| الحالة / الكود | السبب المحتمل | ما يجب فعله |
|---|---|---|
400، param: "model" |
لا يوجد نموذج صريح | أرسل model. اسرد المعرفات بـ /v1/models?recommended_for=image. |
400 حقل غير مدعوم، أو unsupported_parameter |
حقل لا يوثقه النموذج، مثل resolution على نموذج لا يدعمه |
احذف الحقل أو بدّل النموذج. لا تكرر دون تغيير. |
400 على صورة مرجعية |
نقطة نهاية خاطئة، أو رابط خاص أو منتهي الصلاحية | استخدم /v1/images/generations مع image_urls. استخدم رابطًا عامًا ومستقرًا. |
401 invalid_api_key أو expired_api_key |
مفتاح مفقود، أو ملغى، أو منتهي الصلاحية | استبدل المفتاح. |
402 insufficient_balance أو quota_exceeded |
الرصيد منخفض جدًا، أو وصل المفتاح إلى حده الخاص | أضف أموالًا، أو ارفع حد المفتاح، أو اختر نموذجًا أقل سعرًا. |
403 model_not_allowed |
لا يمكن للمفتاح استخدام ذلك النموذج | حدّث قائمة نماذج المفتاح. |
404 model_not_found |
معرف غير معروف أو غير متاح | اقرأ /v1/models واستخدم معرفًا حاليًا. |
413 payload_too_large |
الطلب أو الملف كبير جدًا | قلل المدخلات. |
429 rate_limit_exceeded |
طلبات كثيرة جدًا في النافذة | انتظر Retry-After، ثم أعد المحاولة. |
500–504، all_channels_failed |
مشكلة في الخدمة أو التوريد | أعد المحاولة فقط عندما يكون retryable هو true. احترم retry_after وحدد المحاولات. |
503 all_channels_failed لا يعني دائمًا انقطاع الخدمة. إذا كان retryable هو false و retry_after مفقودًا، فإن العملية ليس لها توريد في فئة التسليم المحددة. تكرار الطلب لن يساعد، لذا تحقق من GET /v1/models أولاً.
استقصاء المهمة له إخفاقاته الخاصة:
404 async_task_not_found: انتهت صلاحية المهمة أو اختفت. تحقق منtask_idوpoll_urlالمحفوظين.403 task_not_owned: المهمة تنتمي إلى مساحة عمل أخرى. تحقق من مساحة العمل التي ينتمي إليها مفتاح API.- مهمة مكتملة بدون رابط وسائط: تعامل معها على أنها فاشلة. احتفظ بالمعرفات واتصل بالدعم.
عند الاتصال بالدعم، أرسل request_id، و task_id، و billing_transaction_id عند وجوده، ونقطة النهاية، والنموذج، والوقت، وأسماء الحقول. لا ترسل أبدًا مفاتيح، أو وسائط خاصة، أو روابط موقعة.
كيف يتم تحديد الرسوم لطلب الصورة
تستخدم معرفات Nano Banana الثلاثة المدفوعة وحدة per_image، لذا فإن الرسوم الرئيسية هي سعر per_request للنموذج. يضيف دليل الفوترة القواعد المحيطة به:
- نتيجة واحدة، رسوم واحدة. يتم فرض رسوم على كل طلب مكتمل مرة واحدة، لخيار التسليم الذي أنتجه. يستخدم
TokenLab Verifiedأسعار TokenLab العامة. يستخدمOfficialطبقة السعر الرسمية. يحاولAutoاستخدام Verified أولاً، ثم Official. - الفئات تحدد الرقم النهائي. تُظهر نطاقات الأسعار المباشرة (0.0225 إلى 0.0755 دولار لـ
nano-banana-2، و 0.067 إلى 0.12 دولار لـnano-banana-pro) أن سعرًا ثابتًا واحدًا لا يغطي كل طلب. فئات الدقة هي المحرك المحتمل، لكن تأكد من ذلك في إدخالات تسعير النموذج. - المهام تحجز أولاً. قد تحجز المهمة غير المتزامنة تكلفتها المقدرة عند قبولها. يتم فرض رسوم على المهمة المكتملة مرة واحدة، وتقوم المهمة الفاشلة بتحرير أو استرداد المبلغ المعلق. يقول دليل الفوترة إن المهمة الفاشلة لا يتم فرض رسوم عليها.
- الشرطة ليست مجانية. في صفحة النماذج، تعني الشرطة في عمود سعر TokenLab عدم توفر عرض Verified حاليًا.
لتأكيد الرسوم، استخدم هذه الأماكن:
GET /v1/models/:model/pricingأو واجهة برمجة تطبيقات التسعير للسعر الحالي.- وحدة التحكم، التي تُظهر الحد الأقصى للتقدير قبل تأكيد التوليد المدفوع.
- الاستخدام (Usage) للرسوم النهائية حسب النموذج.
billing_transaction_idفي الاستجابة أو المهمة، ورأسX-Billing-Transaction-ID. قد تكشف البث وبعض التنسيقات الأصلية عنه فقط في الرأس.
إذا لم يظهر الاستخدام الرسوم النهائية أو المبلغ المحرر بعد انتهاء المهمة، أرسل معرف الطلب ومعرف المهمة إلى support@tokenlab.sh. لا تنسخ الأسعار في هذه المقالة إلى الكود الخاص بك. يقول دليل الفوترة بقراءة السعر الحالي عندما يحتاج تطبيقك إلى عرض أو مقارنة التكاليف.
الأسئلة الشائعة
أي معرف نموذج Nano Banana يجب أن أرسله لطلبات تحويل صورة إلى صورة؟
تسرد السجلات المباشرة image-to-image لـ nano-banana-2، و nano-banana-2-lite، و nano-banana-pro. تسمي الوثائق أيضًا nano-banana-edit، لكنه ليس في الكتالوج الذي جلبناه في 2026-10-02. أرسل المعرف مع operation: "image-to-image" و image_urls إلى /v1/images/generations. قم بإجراء اختبار صغير على صورك الخاصة، لأن أدلتنا ليس لديها مقارنة للجودة.
لماذا أعاد طلب صورتي task_id بدلاً من صورة؟
تم تشغيل استدعاء الإنشاء كمهمة غير متزامنة. ابحث عن task_id، أو status: "pending"، أو poll_url في الاستجابة. احفظ تلك الحقول، ثم استقصِ poll_url أو GET /v1/tasks/{id} كل 5-10 ثوانٍ حتى تصبح الحالة completed أو failed. لا ترسل طلب إنشاء ثانٍ أثناء الانتظار.
هل يمكنني الحصول على مخرجات base64 من نموذج Nano Banana؟
يقبل حقل response_format القيمة url أو b64_json، ويمكن للاستدعاء المتزامن إرجاع data[].b64_json. نتائج الصور غير المتزامنة هي روابط فقط، مهما كان التنسيق الذي طلبته. تحقق من تفاصيل النموذج المختار لتأكيد قبوله لـ b64_json، لأن الحقول تختلف حسب النموذج.
هل يتم فرض رسوم على مهمة صورة فاشلة؟
يقول دليل الفوترة إن المهمة الفاشلة لا يتم فرض رسوم عليها، ويتم تحرير أو استرداد أي حجز معلق. إعادة محاولة توليد فاشل تنشئ مهمة جديدة وقد تنشئ رسومًا جديدة. تحقق من النتيجة في الاستخدام باستخدام billing_transaction_id و task_id.
أنشئ مفتاحًا في لوحة تحكم TokenLab، وأرسل طلب تحويل النص إلى صورة أعلاه مع nano-banana-2-lite، وتحقق من الرسوم في الاستخدام.
المصادر
تم رصد السعر في 2026-10-03
- TokenLab Docs: Image generationتمت المراجعة في 2026-10-03
- TokenLab Docs: Create Imageتمت المراجعة في 2026-10-03
- TokenLab Docs: Edit Imageتمت المراجعة في 2026-10-03
- TokenLab Docs: Async jobs and pollingتمت المراجعة في 2026-10-03
- TokenLab Docs: Handle API errorsتمت المراجعة في 2026-10-03
- TokenLab Docs: Billing and pricingتمت المراجعة في 2026-10-03
- TokenLab Docs: Get a Modelتمت المراجعة في 2026-10-03
- TokenLab live model API: nano-banana-2تمت المراجعة في 2026-10-03



