تضع OpenRouter نماذج الصور من Google وOpenAI وBlack Forest Labs وByteDance وغيرها خلف نقطة وصول واحدة. يشرح هذا المقال صيغة الطلب، والمعاملات التي تغيّر الجودة والتكلفة، والفارق السعري بين النماذج، ومتى تكون منصة صور مخصصة أنسب.
بنت OpenRouter سمعتها بوصفها بوابة واحدة إلى مئات النماذج النصية، وهي تفعل الشيء نفسه الآن مع الصور. حساب واحد وفاتورة واحدة وصيغة طلب واحدة تتيح لك التنقل بين نماذج الصور من Google وOpenAI وBlack Forest Labs وByteDance وغيرها بتغيير سلسلة نصية واحدة. هذه السهولة حقيقية، لكن بعض التفاصيل الصغيرة تحدد ما إذا كانت ميزة الصور تبقى رخيصة أم تصبح مكلفة دون أن تلاحظ.
يستعرض هذا المقال توليد الصور عبر OpenRouter من أول طلب حتى الفاتورة الشهرية: النماذج التي يمكنك اختيارها، واستدعاء API بالتفصيل، والمعاملات التي تغيّر الجودة، ونظرة مباشرة إلى تكلفة الصورة الواحدة. كما يوضح أين تناسب منصة مخصصة مثل PicassoIA عندما تريد تحكمًا عبر المتصفح بدلًا من الكود.
ماذا يفعل توليد الصور في OpenRouter
نقطة نهاية واحدة وعدة مزوّدين
يعمل توليد الصور في OpenRouter عبر نقطة نهاية مخصصة، POST /api/v1/images. ترسل معرّف النموذج model وprompt، فتعود بيانات الصورة مشفّرة بصيغة base64. خلف هذا الباب الواحد يقف مزوّدون منفصلون، لكل منهم نموذجه وحدوده وسعره. تتولى OpenRouter التوجيه والمصادقة والفوترة، لذلك لا يتصل كودك بهؤلاء المزوّدين مباشرة.
الكتالوج واسع. وقت كتابة هذا المقال يضم نماذج صور من Google وOpenAI وBlack Forest Labs وxAI وByteDance وMicrosoft وRecraft وKrea وSourceful، والقائمة تتغير كثيرًا. تصفية قائمة النماذج العامة في OpenRouter حسب مخرجات الصور تُظهر ما هو متاح في أي يوم بعينه.
لمن يناسب أكثر
تكون البوابة الواحدة مفيدة في عدة حالات:
النماذج الأولية: اختبر خمسة نماذج بالأمر النصي نفسه دون فتح خمسة حسابات.
البدائل الاحتياطية: إذا تباطأ مزوّد ما أو تعطّل، وجّه الطلب نفسه إلى مكان آخر.
فوترة موحّدة: فاتورة واحدة بدلًا من واحدة لكل مزوّد.
مسارات مختلطة: التطبيق الذي يرسل بالفعل أوامر نصية عبر OpenRouter يستطيع إضافة الصور بالتوكن نفسه.
تقل فائدتها عندما تحتاج إلى محرر مرئي أو معرض لنتائج سابقة أو تحكم يدوي في كل إعداد. هذا عمل للمتصفح، وسنعود إليه قرب النهاية.
استدعاء نقطة نهاية الصور
أصغر طلب يعمل
تحتاج إلى حساب في OpenRouter، ومفتاح سرّي مرتبط برصيد، ومعرّف نموذج. احفظ المفتاح في متغير بيئة. يسمّيه هذا المقال OPENROUTER_TOKEN، لكن الاسم متروك لاختيارك.
curl -X POST "https://openrouter.ai/api/v1/images" \
-H "Authorization: Bearer $OPENROUTER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance-seed/seedream-4.5",
"prompt": "a red panda astronaut floating in space"
}'
هذا هو الطلب كله. يتبع المعرّف النمط author/model-name، وهنا يشير إلى Seedream 4.5. كل ما عدا ذلك اختياري، ولهذا يستغرق الاختبار الأول نحو دقيقتين.
المعاملات التي تغيّر النتيجة
تقبل نقطة نهاية الصور قائمة طويلة من الحقول الاختيارية. هذه أهمها:
المعامل
ما الذي يتحكم فيه
قيم مثال
resolution
مستوى حجم الإخراج
512، 768، 1K، 2K، 4K
aspect_ratio
شكل الإطار
1:1، 16:9، 9:16، 4:3، 3:4
size
اختصار لمستوى أو لبكسلات محددة
اسم مستوى، أو عرض وارتفاع
quality
جهد التصيير
auto، low، medium، high
output_format
نوع الملف
png، jpeg، webp، svg
background
الشفافية
auto، transparent، opaque
output_compression
حجم الملف لصيغتي webp وjpeg
من 0 إلى 100
n
عدد الصور في كل طلب
من 1 إلى 10، حيثما تدعم النماذج ذلك
seed
مخرجات قابلة للتكرار
أي عدد صحيح، حيثما تدعم النماذج ذلك
input_references
صور مرجعية للعمل من صورة إلى صورة
قائمة من الصور
stream
معاينات جزئية عبر server-sent events
true أو false
ليس كل نموذج يقبل كل الحقول. لكل نموذج مسار endpoints يسرد المعاملات المدعومة والتسعير ومدى دعم البث، لذا اقرأه قبل أن تعتمد على إعداد ما. صيغة الإخراج svg لا تفيد إلا مع النماذج القادرة على إخراج المتجهات.
يستحق البث ذكرًا خاصًا. عند تفعيل stream، ترسل نقطة النهاية الصور الجزئية أثناء تكوّنها، فتستطيع واجهة المستخدم عرض معاينة تقريبية خلال لحظات بدلًا من دوّار فارغ. المعاينات مجانية، ولا تُحتسب إلا الصورة المكتملة. إذا كان تطبيقك يحتوي على شاشة انتظار، فهذه أرخص طريقة لجعلها تبدو أسرع.
💡 نصيحة: غيّر شيئًا واحدًا في كل مرة. إذا بدّلت النموذج والأمر النصي معًا، فلن تعرف أيهما غيّر النتيجة. ثبّت seed حيثما يدعمه النموذج، وغيّر حقلًا واحدًا في كل تشغيل.
قراءة الاستجابة
تصل الصور كنص base64 داخل مصفوفة data. يحمل كل عنصر b64_json، وهي البايتات المشفّرة، وmedia_type، مثل image/png أو image/svg+xml. تتضمن الاستجابة أيضًا كائن usage، ويخبرك usage.cost بما فوترته هذه المهمة.
import base64, os, requests
resp = requests.post(
"https://openrouter.ai/api/v1/images",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_TOKEN']}"},
json={
"model": "bytedance-seed/seedream-4.5",
"prompt": "a ceramic mug on a marble counter, soft window light",
"aspect_ratio": "16:9",
},
timeout=120,
)
resp.raise_for_status()
body = resp.json()
image = body["data"][0]
with open("mug.png", "wb") as f:
f.write(base64.b64decode(image["b64_json"]))
print(image["media_type"], body["usage"]["cost"])
فكّ ترميز البايتات، واكتبها على القرص أو في مخزن الكائنات، وسجّل usage.cost بجانب الأمر النصي الذي أنتجها. بعد أسبوع سيصبح هذا السجل قائمة أسعار أصدق من أي صفحة تسعير.
تستغرق مهام الصور وقتًا أطول من استدعاءات النصوص، لذا اضبط مهلة عميل كريمة، كما يفعل المثال أعلاه بمدة 120 ثانية. المهلة الافتراضية التي تبلغ بضع ثوانٍ ستقطع نتائج سليمة تمامًا.
نماذج تستحق التجربة
المزوّدون في الكتالوج
هذه طريقة ترتيب المزوّدين الرئيسيين، مع صفحات النماذج المقابلة على PicassoIA حيث تتوفر:
Google: عائلة Gemini للصور. يظهر المعرّف google/gemini-2.5-flash-image في أمثلة OpenRouter نفسها، والنموذج نفسه موجود على PicassoIA باسم Gemini 2.5 Flash Image.
OpenAI: GPT Image، حيث يغيّر إعداد الجودة السعر كثيرًا. انظر GPT Image 2.
تتغير نقاط القوة مع كل إصدار، لذا شغّل أوامرك النصية بنفسك قبل أن تلتزم مشروعًا بنموذج واحد. يستغرق الاختبار المنصف نحو ساعة:
اكتب عشرة أوامر نصية من عمل حقيقي، لا أمثلة لعب، بينها اثنان يتضمنان نصًا داخل الصورة واثنان يتضمنان أشخاصًا.
شغّل كل أمر عبر النماذج الثلاثة نفسها بقيم aspect_ratio وresolution متطابقة.
سجّل usage.cost والثواني التي استغرقتها كل مهمة.
قيّم النتائج بشكل أعمى، مع إخفاء أسماء النماذج، ثم اقسم التكلفة الإجمالية على عدد الصور التي ستنشرها فعلًا.
هذا الرقم الأخير، أي تكلفة الصورة الصالحة للاستخدام، يحسم الجدل. نموذج بسعر 0.02 دولار يحتاج إلى أربع محاولات ليصل إلى المطلوب تكلّف 0.08 دولار لكل صورة صالحة للاستخدام، أي ضعف نموذج بسعر 0.04 دولار يصيب من أول محاولة.
ما الذي تكلفه الصورة الواحدة فعليًا
فارق الأسعار
احتسبت الدروس التعليمية الصادرة عن OpenRouter تكلفة صورة واحدة بالإعدادات الافتراضية عبر 20 نموذجًا. تراوح النطاق من 0.006 دولار إلى 0.134 دولار، أي فارق بنسبة 22 ضعفًا. تبدأ النماذج الرخيصة عند نحو سنت واحد للصورة. هذه الفجوة أداة أكبر تأثيرًا في فاتورتك من طول الأمر النصي أو إعادة المحاولات أو أي حيلة ذكية للتخزين المؤقت.
عمليًا، يقسّم هذا الفارق النماذج إلى مجموعتين. نماذج المسودات القريبة من سنت للصورة مناسبة للأفكار والصور المصغرة والاختبارات السريعة. أما النماذج المتميزة القريبة من أعلى النطاق فمناسبة للمخرجات النهائية والصور الرئيسية. كثير من الفرق تشغّل الاثنين: مسودات رخيصة، وتصيير غالٍ.
ثلاثة أساليب للفوترة
لا تتقاضى النماذج كلها بالطريقة نفسها:
لكل صورة: سعر ثابت لكل نتيجة، مهما كان الحجم.
لكل ميغابكسل: يرتفع السعر مع الدقة، فصورة 4K تكلف أكثر من 1K.
لكل توكن: تُقاس توكنات الإدخال والإخراج. وفق الأسعار المعلنة وقت كتابة هذا المقال، يتقاضى GPT-5.4 Image 2 مبلغ 8.00 دولارات لكل مليون توكن إدخال و15.00 دولارًا لكل مليون توكن إخراج، مع 30.00 دولارًا لكل مليون توكن لإخراج الصور.
فوترة التوكنات هي الأصعب في التوقع. يؤثر طول الأمر النصي والصور المرجعية وإعداد الجودة في الرقم النهائي، لذلك يبقى usage.cost الرقم الوحيد الجدير بالثقة. تتغير الأسعار، فتحقق من صفحة النموذج قبل أن تضع ميزانية.
المهام الفاشلة لا تكلّف شيئًا
الفوترة إما كاملة أو لا شيء. إما أن يكتمل التوليد فيُحتسب بالكامل، أو يفشل فلا يُحتسب. كذلك لا تُفوتر عمليات البث الملغاة، ولا تُنشئ المعاينات الجزئية التي تصل قبل انتهاء البث رسومًا جزئية. هذا يجعل إعادة المحاولة أأمن مما تبدو: تدفع مرة واحدة مقابل النتيجة التي تحتفظ بها. مع ذلك، تعامل مع الأخطاء بجدية. تحقق من حالة HTTP، وانتظر قبل إعادة محاولة مهمة فاشلة، وتوقف بعد بضع محاولات حتى لا يدور أمر نصي سيئ إلى ما لا نهاية.
حساب ميزانية 1,000 صورة
خذ ثلاث نقاط سعرية من ذلك النطاق واحسب تكلفتها لكل حجم:
سعر الصورة
1,000 صورة
10,000 صورة
0.006 دولار
6 دولارات
60 دولارًا
0.04 دولار
40 دولارًا
400 دولار
0.134 دولار
134 دولارًا
1,340 دولارًا
💡 نصيحة: أضف معدل إعادة المحاولة لديك. إذا احتاج أمر نصي واحد من كل ثلاثة إلى محاولة ثانية لأن النتيجة الأولى لم تصب الهدف، فأضف نحو الثلث إلى الميزانية. المهام الفاشلة لا تكلّف شيئًا، لكن النتائج المخيبة للآمال تكلّف.
3 أخطاء تضخّم فاتورتك
ترك الجودة على التلقائي
عند ضبط quality على auto، يقرر المزوّد مقدار الجهد الذي يبذله. في النماذج التي يتبع سعرها الجودة، قد تكلّف نتيجة high أكثر بكثير من نتيجة low. استخدم low أثناء تحسين الأمر النصي، ولا تنتقل إلى high إلا للتصيير النهائي.
تخزين base64 داخل قاعدة البيانات
الصورة 2K المشفّرة بصيغة base64 غالبًا ما تكون عدة ميغابايتات من النص. حفظ هذه السلسلة في صف قاعدة بيانات يبطئ كل استعلام يمسها. اكتب الملف في مخزن الكائنات، واحتفظ برابطه فقط في قاعدة البيانات، واستخدم webp أو jpeg مع output_compression عندما يكون حجم الملف أهم من التفاصيل الخالية من الفقد.
تجاهل توجيه المزوّدين
يمكن لعدة مزوّدين تقديم النموذج نفسه، وقد تختلف نقاط نهايتهم في السعر والمعاملات المدعومة. إذا لم تضبط أي تفضيل، فإن OpenRouter تختار عنك. ثبّت الترتيب، وقرر ما إذا كانت البدائل الاحتياطية مقبولة:
{
"model": "google/gemini-2.5-flash-image",
"prompt": "A minimalist logo for a coffee roaster",
"provider": {
"order": ["google-ai-studio", "google-vertex"],
"allow_fallbacks": true
}
}
أوقف allow_fallbacks عندما تحتاج إلى مخرجات وتسعير متطابقين في كل استدعاء، واتركه مفعّلًا عندما يكون التوافر أهم.
كيف تستخدم Seedream 4.5 على PicassoIA
إذا كنت تفضّل تجاوز الكود، فالنموذج نفسه من أمثلة OpenRouter متاح في المتصفح. ينشئ Seedream 4.5 صورًا تصل إلى 4K من أمر نصي، ولا يحتاج إلى أي تثبيت.
اكتب الأمر النصي من أربعة أجزاء: الشخص أو الموضوع، والمكان، والإضاءة، والعدسة. جرّب: كوب قهوة خزفي على منضدة رخامية، ضوء نافذة ناعم من الجهة اليسرى، عدسة 85mm، عمق حقل ضحل، حبيبات فيلم Kodak Portra 400.
اختر نسبة العرض إلى الارتفاع: 16:9 لعناوين المدونة، و1:1 لبطاقات المنتجات، و9:16 للمنشورات العمودية.
وَلِّد وراجع. غيّر تفصيلًا واحدًا، ثم شغّله من جديد، بالطريقة نفسها التي تغيّر بها حقل API.
💡 نصيحة: الأفكار الخام تصنع أوامر نصية ضعيفة. اطلب من نموذج لغوي مثل Claude Sonnet 5 أو Gemini 3.5 Flash أن يوسّع فكرة من سطر واحد إلى أمر نصي تصويري مفصّل يتضمن الإضاءة والعدسة والملمس، ثم الصق النتيجة في نموذج الصور.
API المطورين في PicassoIA
يشغّل PicassoIA أيضًا API خاصًا بالمطورين للمسارات والسكربتات. عنوان الأساس هو https://api.picassoia.com/v1، وتتم المصادقة عبر رمز حامل (bearer token) يبدأ بـ pia_sk_. التدفق غير متزامن، وسيبدو مألوفًا إذا استخدمت واجهات برمجة تطبيقات أخرى من نوع التنبؤ: أنشئ مهمة، ثم استعلم عن حالتها، ثم اجلب النتيجة.
POST /v1/models/{owner}/{name}/predictions ينشئ مهمة.
GET /v1/predictions/{id} يتحقق من حالتها ويعيد المخرجات.
POST /v1/predictions/{id}/cancel يوقف مهمة ما زالت تعمل.
GET /v1/predictions يسرد مهامك الأخيرة.
في الصور، يقدم API كلًا من PicassoIA Image وPicassoIA Image Editor Pro، إلى جانب نموذجين للفيديو. يستطيع الحساب تشغيل 5 تنبؤات في وقت واحد، والأوامر النصية محدودة بحد أقصى 4,000 حرف. الوصول إلى API مرتبط بخطط محددة، لذا تأكد من الخطة المطلوبة في صفحة التسعير قبل أن تبني عليها. كتالوج المتصفح أوسع بكثير، ويضم أكثر من 200 نموذج لتحويل النص إلى صورة لتجربتها قبل أن تختار واحدًا للسكربت.
أنشئ صورك الأولى اليوم
أفضل طريقة لحسم مسألة البوابة هي تشغيل أمر نصي واحد بالطريقتين. أرسله عبر نقطة نهاية الصور في OpenRouter، وسجّل usage.cost، ثم الصق النص نفسه في صفحة نموذج على Picasso IA، وقارن المظهر والسرعة والجهد.
اختر أمرًا نصيًا من عملك: لقطة منتج، أو عنوان مدونة، أو صورة شخصية لصفحة هبوط. جرّب نموذجين أو ثلاثة على Picasso IA، وغيّر تفصيلًا واحدًا في كل تشغيل، واحتفظ بالنتائج التي ستنشرها فعلًا. ستعرف خلال بعد ظهر واحد أي مسار يناسب مشروعك، وستكون لديك صور حقيقية لتريها.