{
  "aboutHtml": "<p>FLUX.2 [flex] إصدار Black Forest Labs لتوليد الصور وتحريرها، المتخصّص في الطباعة ورسم النص والحفاظ على التفاصيل الصغيرة. يستخدم تعليمات مكتوبة للمشهد ومراجع صورية لإنتاج صورة. وعنصر تحكّمه المميّز هو أخذ العينات القابل للضبط: يكشف الملف الموثّق خطوات الاستدلال وقوة التوجيه معًا، مما يتيح تنقيح التوجيه البصري عبر الإعدادات والكلمات.</p><h4>الحروف والتفاصيل الدقيقة</h4><p>يجب أن تبدأ مهمة الطباعة بالنص الفعلي. ضع كل سطر بين علامتي اقتباس، وحدّد مكانه، وميّز بين العنوان والنص المساند والتسمية. صِف أسلوب الحروف ومقياسها ولونها في علاقتها بالمشهد. ويمكن لتوجيه مبتكر لملصق أن يعرض دراجة زرقاء كوبالتية في استوديو فاتح، بعنوان كبير فوق هيكلها وسطر مواصفات أصغر تحته. ويجب أن توضّح الصورة المنتج وترتيب القراءة معًا.</p><p>وفي صورة منتج تفصيلية، حدّد الأجزاء التي تقرّر فائدة النتيجة: ميناء أو تسمية عنصر تحكّم أو درزة أو حافة مادة أو علامة على العبوة. قدّم مرجعًا مقروءًا واشرح السمة التي يثبتها. فقد يغيّر مشهد مشابه عمومًا حرفًا أو مكوّنًا حاسمًا، لذا قارن التفصيل المولَّد بحجم عرضه المقصود. وتخصّص النموذج سبب لتقديم متطلبات دقيقة، وليس ضمانًا للاستغناء عن التدقيق أو الفحص البصري.</p><h4>للخطوات وقوة التوجيه غرضان مختلفان</h4><p>يقبل ملف الجهة المصنّعة المحدّد من خطوة استدلال واحدة إلى خمسين، مع خمسين افتراضيًا. ويربط وصفه زيادة الخطوات بمزيد من التفاصيل والواقعية. وتتراوح قوة التوجيه من 1.5 إلى 10، وقيمتها الافتراضية 5. تعزّز القيمة الأعلى الالتزام بالتوجيه، لكنها قد تقلّل الواقعية. ولذلك قد تحتاج صورة ذات تعليمات تصميم دقيقة وصورة تستهدف مظهرًا فوتوغرافيًا طبيعيًا إلى اختيارين مختلفين داخل هذا الملف.</p><p>أبقِ الصياغة والمراجع وشكل المخرجات ثابتة عند مقارنة تغيير في إعداد. انظر إلى السمة التي دفعت إلى التغيير: أشكال الحروف أو مواضع الأجسام أو ملمس المادة. غيّر الإعداد لسبب بصري محدّد بدلًا من اعتبار العدد الكبير أفضل تلقائيًا. وهذه عناصر تحكّم لدى المنتج في أخذ العينات؛ أما ملف [klein] المقطَّر ذو الأربع خطوات وعناصر التحكّم القياسية ل[pro] أو [max] فتمثّل خيارات نماذج مختلفة.</p><p>توسيع التوجيه مفعّل افتراضيًا في مواصفات [flex]، ويمكن تعطيله عبر عنصر prompt_upsampling الخاص به. ويتيح ذلك إبقاء توجيه مفصّل بالنص المقدَّم عندما يكون مناسبًا. ويوصي الدليل المشترك للجهة المصنّعة بوضع العنصر الرئيسي والفعل المهم قبل الزخرفة الثانوية، ويصف التوجيهات المنظمة بصيغة JSON إلى جانب التوجيهات باللغة الطبيعية. استخدم البنية التي تجعل تحديد العلاقات المطلوبة أسهل.</p><h4>تعديلات تسترشد بالمراجع</h4><p>يحتوي ملف الطلب المحدّد على ثمانية مواضع للصور المرجعية. ويسمح مسار الجهة المطوّرة التفاعلي بما يصل إلى عشر صور بصورة مستقلة؛ ويصف العددان واجهتين مختلفتين. حدّد ما إذا كانت صورة تقدّم المشهد المطلوب تحريره أو منتجًا أو شخصية أو ملابس أو أسلوبًا. وللتعديل، حدّد الجسم والتغيير، ثم سمِّ التكوين المحيط أو المواد أو الضوء الذي يجب أن يبقى.</p><p>يمكن لمهمة مبتكرة لتغليف استخدام الصندوق من الصورة الأولى والتشطيب من الثانية، واستبدال الملصق الأمامي بالنص المعتمد، والحفاظ على نسب الصندوق. ويمكن لتكوين جماعي تعيين مرجع مختلف لكل عنصر مع الحفاظ على اتساق التعيينات. وتغطّي أمثلة العائلة تغيير الأجسام والخلفيات والتركيب وتعديل النصوص وتحويل الأسلوب. اطلب تعديلًا مترابطًا واحدًا بهدف واضح، ثم قارن المنطقة المعدّلة والأجزاء المطلوب أن تبقى ثابتة معًا.</p><h4>الحجم واللون والصورة الناتجة</h4><p>يوثّق دليل FLUX.2 حدًا أدنى 64×64 بكسل، وأبعادًا من مضاعفات 16، ومخرجات حتى 4 ميغابكسل، مع توصية بما يصل إلى 2 ميغابكسل للاستخدام المعتاد. وتسرد مواصفات [flex] المحدّدة مخرجات JPEG وPNG وWebP، مع JPEG افتراضيًا. كما توفّر بذرة عشوائية اختيارية. احتفظ بالنموذج الفعلي والبذرة وإعدادات أخذ العينات مع المراجع المصدرية عند مقارنة النسخ؛ فاسم العائلة وحده لا يحدّد إعداد التوليد كاملًا.</p><p>في العمل الحساس للألوان، اربط كل رمز سداسي بجسم أو عنصر نصي مسمّى. وللتكوين، حدّد نسبة الأبعاد المقصودة من خلال أبعاد الصورة واترك مساحة كافية لحروف مقروءة. ولا يتضمّن الدليل المشترك آلية للتوجيه السلبي، لذا صِف المظهر المطلوب إيجابيًا: تركيز حاد أو خلفية نظيفة أو مساحة فارغة واضحة للنص. وتدعم أمثلته متعددة اللغات كتابة توجيه خاص بثقافة معيّنة باللغة الملائمة من دون أن تثبت ضمانًا لعدد محدّد من اللغات.</p><p>يعيد مسار FLUX.2 لدى المنتج صورة بعد المعالجة، ويستخدم روابط موقّعة مؤقتة بنافذة استرجاع مدتها عشر دقائق. احتفظ بالصورة الفعلية والتوجيه معًا. تحقّق من الطباعة والتفاصيل الدقيقة وهوية المراجع والمعالجة البصرية قبل وضع الصورة في تخطيط. وقد يكون التسليم النهائي ملصقًا مختارًا أو صورة منتج أو تكوينًا محرَّرًا، مع الاحتفاظ بإعداداته الدقيقة للمراجعة التالية.</p>",
  "aboutText": "FLUX.2 [flex] إصدار Black Forest Labs لتوليد الصور وتحريرها، المتخصّص في الطباعة ورسم النص والحفاظ على التفاصيل الصغيرة. يستخدم تعليمات مكتوبة للمشهد ومراجع صورية لإنتاج صورة. وعنصر تحكّمه المميّز هو أخذ العينات القابل للضبط: يكشف الملف الموثّق خطوات الاستدلال وقوة التوجيه معًا، مما يتيح تنقيح التوجيه البصري عبر الإعدادات والكلمات.\n\n### الحروف والتفاصيل الدقيقة\n\nيجب أن تبدأ مهمة الطباعة بالنص الفعلي. ضع كل سطر بين علامتي اقتباس، وحدّد مكانه، وميّز بين العنوان والنص المساند والتسمية. صِف أسلوب الحروف ومقياسها ولونها في علاقتها بالمشهد. ويمكن لتوجيه مبتكر لملصق أن يعرض دراجة زرقاء كوبالتية في استوديو فاتح، بعنوان كبير فوق هيكلها وسطر مواصفات أصغر تحته. ويجب أن توضّح الصورة المنتج وترتيب القراءة معًا.\n\nوفي صورة منتج تفصيلية، حدّد الأجزاء التي تقرّر فائدة النتيجة: ميناء أو تسمية عنصر تحكّم أو درزة أو حافة مادة أو علامة على العبوة. قدّم مرجعًا مقروءًا واشرح السمة التي يثبتها. فقد يغيّر مشهد مشابه عمومًا حرفًا أو مكوّنًا حاسمًا، لذا قارن التفصيل المولَّد بحجم عرضه المقصود. وتخصّص النموذج سبب لتقديم متطلبات دقيقة، وليس ضمانًا للاستغناء عن التدقيق أو الفحص البصري.\n\n### للخطوات وقوة التوجيه غرضان مختلفان\n\nيقبل ملف الجهة المصنّعة المحدّد من خطوة استدلال واحدة إلى خمسين، مع خمسين افتراضيًا. ويربط وصفه زيادة الخطوات بمزيد من التفاصيل والواقعية. وتتراوح قوة التوجيه من 1.5 إلى 10، وقيمتها الافتراضية 5. تعزّز القيمة الأعلى الالتزام بالتوجيه، لكنها قد تقلّل الواقعية. ولذلك قد تحتاج صورة ذات تعليمات تصميم دقيقة وصورة تستهدف مظهرًا فوتوغرافيًا طبيعيًا إلى اختيارين مختلفين داخل هذا الملف.\n\nأبقِ الصياغة والمراجع وشكل المخرجات ثابتة عند مقارنة تغيير في إعداد. انظر إلى السمة التي دفعت إلى التغيير: أشكال الحروف أو مواضع الأجسام أو ملمس المادة. غيّر الإعداد لسبب بصري محدّد بدلًا من اعتبار العدد الكبير أفضل تلقائيًا. وهذه عناصر تحكّم لدى المنتج في أخذ العينات؛ أما ملف [klein] المقطَّر ذو الأربع خطوات وعناصر التحكّم القياسية ل[pro] أو [max] فتمثّل خيارات نماذج مختلفة.\n\nتوسيع التوجيه مفعّل افتراضيًا في مواصفات [flex]، ويمكن تعطيله عبر عنصر prompt_upsampling الخاص به. ويتيح ذلك إبقاء توجيه مفصّل بالنص المقدَّم عندما يكون مناسبًا. ويوصي الدليل المشترك للجهة المصنّعة بوضع العنصر الرئيسي والفعل المهم قبل الزخرفة الثانوية، ويصف التوجيهات المنظمة بصيغة JSON إلى جانب التوجيهات باللغة الطبيعية. استخدم البنية التي تجعل تحديد العلاقات المطلوبة أسهل.\n\n### تعديلات تسترشد بالمراجع\n\nيحتوي ملف الطلب المحدّد على ثمانية مواضع للصور المرجعية. ويسمح مسار الجهة المطوّرة التفاعلي بما يصل إلى عشر صور بصورة مستقلة؛ ويصف العددان واجهتين مختلفتين. حدّد ما إذا كانت صورة تقدّم المشهد المطلوب تحريره أو منتجًا أو شخصية أو ملابس أو أسلوبًا. وللتعديل، حدّد الجسم والتغيير، ثم سمِّ التكوين المحيط أو المواد أو الضوء الذي يجب أن يبقى.\n\nيمكن لمهمة مبتكرة لتغليف استخدام الصندوق من الصورة الأولى والتشطيب من الثانية، واستبدال الملصق الأمامي بالنص المعتمد، والحفاظ على نسب الصندوق. ويمكن لتكوين جماعي تعيين مرجع مختلف لكل عنصر مع الحفاظ على اتساق التعيينات. وتغطّي أمثلة العائلة تغيير الأجسام والخلفيات والتركيب وتعديل النصوص وتحويل الأسلوب. اطلب تعديلًا مترابطًا واحدًا بهدف واضح، ثم قارن المنطقة المعدّلة والأجزاء المطلوب أن تبقى ثابتة معًا.\n\n### الحجم واللون والصورة الناتجة\n\nيوثّق دليل FLUX.2 حدًا أدنى 64×64 بكسل، وأبعادًا من مضاعفات 16، ومخرجات حتى 4 ميغابكسل، مع توصية بما يصل إلى 2 ميغابكسل للاستخدام المعتاد. وتسرد مواصفات [flex] المحدّدة مخرجات JPEG وPNG وWebP، مع JPEG افتراضيًا. كما توفّر بذرة عشوائية اختيارية. احتفظ بالنموذج الفعلي والبذرة وإعدادات أخذ العينات مع المراجع المصدرية عند مقارنة النسخ؛ فاسم العائلة وحده لا يحدّد إعداد التوليد كاملًا.\n\nفي العمل الحساس للألوان، اربط كل رمز سداسي بجسم أو عنصر نصي مسمّى. وللتكوين، حدّد نسبة الأبعاد المقصودة من خلال أبعاد الصورة واترك مساحة كافية لحروف مقروءة. ولا يتضمّن الدليل المشترك آلية للتوجيه السلبي، لذا صِف المظهر المطلوب إيجابيًا: تركيز حاد أو خلفية نظيفة أو مساحة فارغة واضحة للنص. وتدعم أمثلته متعددة اللغات كتابة توجيه خاص بثقافة معيّنة باللغة الملائمة من دون أن تثبت ضمانًا لعدد محدّد من اللغات.\n\nيعيد مسار FLUX.2 لدى المنتج صورة بعد المعالجة، ويستخدم روابط موقّعة مؤقتة بنافذة استرجاع مدتها عشر دقائق. احتفظ بالصورة الفعلية والتوجيه معًا. تحقّق من الطباعة والتفاصيل الدقيقة وهوية المراجع والمعالجة البصرية قبل وضع الصورة في تخطيط. وقد يكون التسليم النهائي ملصقًا مختارًا أو صورة منتج أو تكوينًا محرَّرًا، مع الاحتفاظ بإعداداته الدقيقة للمراجعة التالية.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "aed2b49b31d244a9af11ea6895db5f0dde74d85e5c3010054bd4ccab0373b77d",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ar",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Black Forest Labs: FLUX.2 Flex</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"إغلاق\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux.2-flex</code><button type=\"button\" id=\"copy-id\">نسخ ID</button></div><nav class=\"card-jump-nav\" aria-label=\"أقسام بطاقة النموذج\"><button type=\"button\" data-card-jump=\"overview\">البداية</button><button type=\"button\" data-card-jump=\"methods\">المدخلات والطرائق</button><button type=\"button\" data-card-jump=\"pricing\">الباقات</button><button type=\"button\" data-card-jump=\"examples\">أمثلة</button><button type=\"button\" data-card-jump=\"results\">النتائج</button><button type=\"button\" data-card-jump=\"aliases\">الأسماء البديلة</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"طرائق API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|images|/v1/images/generations|black-forest-labs%2Fflux.2-flex\">الصور</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">البداية</h3><p class=\"mdesc-full\">يتخصّص FLUX.2 [flex] في طباعة النص داخل الصور والتفاصيل البصرية الصغيرة، مع خطوات أخذ عينات وقوة توجيه قابلتين للضبط. استخدم النص والمراجع الصورية لتطوير ملصقات أو تخطيطات منتجات أو تعديلات دقيقة مع الموازنة بين الالتزام والواقعية.</p><dl class=\"card-io\" data-card-io><div><dt>المدخلات المقبولة</dt><dd>النص · الصور</dd></div><div><dt>النتائج</dt><dd>الصور</dd></div></dl><details class=\"card-about\"><summary>عن النموذج</summary><p class=\"note-s\" data-model-method-boundary>يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.</p><div class=\"mabout\" id=\"m-about\"><p>FLUX.2 [flex] إصدار Black Forest Labs لتوليد الصور وتحريرها، المتخصّص في الطباعة ورسم النص والحفاظ على التفاصيل الصغيرة. يستخدم تعليمات مكتوبة للمشهد ومراجع صورية لإنتاج صورة. وعنصر تحكّمه المميّز هو أخذ العينات القابل للضبط: يكشف الملف الموثّق خطوات الاستدلال وقوة التوجيه معًا، مما يتيح تنقيح التوجيه البصري عبر الإعدادات والكلمات.</p><h4>الحروف والتفاصيل الدقيقة</h4><p>يجب أن تبدأ مهمة الطباعة بالنص الفعلي. ضع كل سطر بين علامتي اقتباس، وحدّد مكانه، وميّز بين العنوان والنص المساند والتسمية. صِف أسلوب الحروف ومقياسها ولونها في علاقتها بالمشهد. ويمكن لتوجيه مبتكر لملصق أن يعرض دراجة زرقاء كوبالتية في استوديو فاتح، بعنوان كبير فوق هيكلها وسطر مواصفات أصغر تحته. ويجب أن توضّح الصورة المنتج وترتيب القراءة معًا.</p><p>وفي صورة منتج تفصيلية، حدّد الأجزاء التي تقرّر فائدة النتيجة: ميناء أو تسمية عنصر تحكّم أو درزة أو حافة مادة أو علامة على العبوة. قدّم مرجعًا مقروءًا واشرح السمة التي يثبتها. فقد يغيّر مشهد مشابه عمومًا حرفًا أو مكوّنًا حاسمًا، لذا قارن التفصيل المولَّد بحجم عرضه المقصود. وتخصّص النموذج سبب لتقديم متطلبات دقيقة، وليس ضمانًا للاستغناء عن التدقيق أو الفحص البصري.</p><h4>للخطوات وقوة التوجيه غرضان مختلفان</h4><p>يقبل ملف الجهة المصنّعة المحدّد من خطوة استدلال واحدة إلى خمسين، مع خمسين افتراضيًا. ويربط وصفه زيادة الخطوات بمزيد من التفاصيل والواقعية. وتتراوح قوة التوجيه من 1.5 إلى 10، وقيمتها الافتراضية 5. تعزّز القيمة الأعلى الالتزام بالتوجيه، لكنها قد تقلّل الواقعية. ولذلك قد تحتاج صورة ذات تعليمات تصميم دقيقة وصورة تستهدف مظهرًا فوتوغرافيًا طبيعيًا إلى اختيارين مختلفين داخل هذا الملف.</p><p>أبقِ الصياغة والمراجع وشكل المخرجات ثابتة عند مقارنة تغيير في إعداد. انظر إلى السمة التي دفعت إلى التغيير: أشكال الحروف أو مواضع الأجسام أو ملمس المادة. غيّر الإعداد لسبب بصري محدّد بدلًا من اعتبار العدد الكبير أفضل تلقائيًا. وهذه عناصر تحكّم لدى المنتج في أخذ العينات؛ أما ملف [klein] المقطَّر ذو الأربع خطوات وعناصر التحكّم القياسية ل[pro] أو [max] فتمثّل خيارات نماذج مختلفة.</p><p>توسيع التوجيه مفعّل افتراضيًا في مواصفات [flex]، ويمكن تعطيله عبر عنصر prompt_upsampling الخاص به. ويتيح ذلك إبقاء توجيه مفصّل بالنص المقدَّم عندما يكون مناسبًا. ويوصي الدليل المشترك للجهة المصنّعة بوضع العنصر الرئيسي والفعل المهم قبل الزخرفة الثانوية، ويصف التوجيهات المنظمة بصيغة JSON إلى جانب التوجيهات باللغة الطبيعية. استخدم البنية التي تجعل تحديد العلاقات المطلوبة أسهل.</p><h4>تعديلات تسترشد بالمراجع</h4><p>يحتوي ملف الطلب المحدّد على ثمانية مواضع للصور المرجعية. ويسمح مسار الجهة المطوّرة التفاعلي بما يصل إلى عشر صور بصورة مستقلة؛ ويصف العددان واجهتين مختلفتين. حدّد ما إذا كانت صورة تقدّم المشهد المطلوب تحريره أو منتجًا أو شخصية أو ملابس أو أسلوبًا. وللتعديل، حدّد الجسم والتغيير، ثم سمِّ التكوين المحيط أو المواد أو الضوء الذي يجب أن يبقى.</p><p>يمكن لمهمة مبتكرة لتغليف استخدام الصندوق من الصورة الأولى والتشطيب من الثانية، واستبدال الملصق الأمامي بالنص المعتمد، والحفاظ على نسب الصندوق. ويمكن لتكوين جماعي تعيين مرجع مختلف لكل عنصر مع الحفاظ على اتساق التعيينات. وتغطّي أمثلة العائلة تغيير الأجسام والخلفيات والتركيب وتعديل النصوص وتحويل الأسلوب. اطلب تعديلًا مترابطًا واحدًا بهدف واضح، ثم قارن المنطقة المعدّلة والأجزاء المطلوب أن تبقى ثابتة معًا.</p><h4>الحجم واللون والصورة الناتجة</h4><p>يوثّق دليل FLUX.2 حدًا أدنى 64×64 بكسل، وأبعادًا من مضاعفات 16، ومخرجات حتى 4 ميغابكسل، مع توصية بما يصل إلى 2 ميغابكسل للاستخدام المعتاد. وتسرد مواصفات [flex] المحدّدة مخرجات JPEG وPNG وWebP، مع JPEG افتراضيًا. كما توفّر بذرة عشوائية اختيارية. احتفظ بالنموذج الفعلي والبذرة وإعدادات أخذ العينات مع المراجع المصدرية عند مقارنة النسخ؛ فاسم العائلة وحده لا يحدّد إعداد التوليد كاملًا.</p><p>في العمل الحساس للألوان، اربط كل رمز سداسي بجسم أو عنصر نصي مسمّى. وللتكوين، حدّد نسبة الأبعاد المقصودة من خلال أبعاد الصورة واترك مساحة كافية لحروف مقروءة. ولا يتضمّن الدليل المشترك آلية للتوجيه السلبي، لذا صِف المظهر المطلوب إيجابيًا: تركيز حاد أو خلفية نظيفة أو مساحة فارغة واضحة للنص. وتدعم أمثلته متعددة اللغات كتابة توجيه خاص بثقافة معيّنة باللغة الملائمة من دون أن تثبت ضمانًا لعدد محدّد من اللغات.</p><p>يعيد مسار FLUX.2 لدى المنتج صورة بعد المعالجة، ويستخدم روابط موقّعة مؤقتة بنافذة استرجاع مدتها عشر دقائق. احتفظ بالصورة الفعلية والتوجيه معًا. تحقّق من الطباعة والتفاصيل الدقيقة وهوية المراجع والمعالجة البصرية قبل وضع الصورة في تخطيط. وقد يكون التسليم النهائي ملصقًا مختارًا أو صورة منتج أو تكوينًا محرَّرًا، مع الاحتفاظ بإعداداته الدقيقة للمراجعة التالية.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">متاح في Ailoot · المدخلات والطرائق</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · الصور</b> <code>POST /v1/images/generations</code></summary><dl class=\"method-capabilities\"><div><dt>الإدخال</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>الإخراج</dt><dd><code>image</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>الحقل</th><th>النوع</th><th>المتطلب</th><th>القيم والحدود</th><th>القيمة الافتراضية</th></tr></thead><tbody><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>string</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>مطلوب</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span><div>black-forest-labs/flux.2-flex</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>string</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>مطلوب</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span><div>الحد الأدنى للطول: ⁦1⁩</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>string</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>اختياري</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span><div>1:1, 4:3, 3:4, 3:2, 2:3, 16:9, 9:16, 21:9, auto</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">output_format</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>string</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>اختياري</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span><div>png, jpeg</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">n</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>integer</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>اختياري</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span><div>الحد الأدنى: ⁦1⁩</div><div>الحد الأقصى: ⁦1⁩</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>array</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>اختياري</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span><div>الحد الأدنى للعناصر: ⁦0⁩</div><div>الحد الأقصى للعناصر: ⁦8⁩</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>object</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>اختياري</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>معلمات الطريقة ودورة حياتها</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>المعلمة</th><th>المواصفات</th></tr></thead><tbody><tr><th data-cell-label=\"المعلمة\" scope=\"row\"><span class=\"card-cell-label\">المعلمة</span><code>content_type</code></th><td data-cell-label=\"المواصفات\"><span class=\"card-cell-label\">المواصفات</span>application/json</td></tr><tr><th data-cell-label=\"المعلمة\" scope=\"row\"><span class=\"card-cell-label\">المعلمة</span><code>required</code></th><td data-cell-label=\"المواصفات\"><span class=\"card-cell-label\">المواصفات</span>model, prompt</td></tr><tr><th data-cell-label=\"المعلمة\" scope=\"row\"><span class=\"card-cell-label\">المعلمة</span><code>material_types</code></th><td data-cell-label=\"المواصفات\"><span class=\"card-cell-label\">المواصفات</span>text, image</td></tr></tbody></table></div><p>دورة الحياة: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · قيمة task_id الفعلية المُعادة أو سجل مكتبة الوسائط</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">الباقات</h3><div class=\"card-result-process\" data-billing-basis><h5>كيفية احتساب الرسوم النهائية</h5><p class=\"note-s\">تقدّر التعرفات المعروضة التكلفة قبل التوليد. تُحسب الرسوم النهائية من التكلفة المسجّلة لعملية التوليد الأصلية. مدة المخرجات المقاسة والكميات المتوقعة ليست الكمية النهائية الخاضعة للفوترة.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>مراجع التسعير لا تضيف خيارات للطلب. المعلمات المدعومة مذكورة للطريقة المحددة.</p><dl data-price-conditions><dt>الوضع السريع</dt><dd>غير محدد <span class=\"note-s\">عند اختيار الوضع السريع</span></dd><dt>الوضع المرن</dt><dd>غير محدد <span class=\"note-s\">عند اختيار وضع flex</span></dd><dt>أقصى جهد للاستدلال</dt><dd>غير محدد <span class=\"note-s\">عندما يُطبَّق الضبط الافتراضي default مع أقصى جهد للاستدلال</span></dd></dl></div><div data-declared-tariff-pricing><h4>تعرفات تقديرية للمقارنة</h4><h4>الأسعار حسب الإعدادات</h4><p class=\"note-s\">طابق كل رسم مع الشروط المعروضة. طبّق تعرفة واحدة لكل مجموعة من الإعدادات البديلة.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>الإعدادات</th><th>جدول التعرفة</th><th>الكمية المتوقعة</th><th>وحدة الفوترة</th><th>الرسوم</th></tr></thead><tbody><tr><th data-cell-label=\"الإعدادات\" scope=\"row\"><span class=\"card-cell-label\">الإعدادات</span>التعرفات الأساسية للرموز</th><td data-cell-label=\"جدول التعرفة\"><span class=\"card-cell-label\">جدول التعرفة</span>التعرفة الأساسية</td><td data-cell-label=\"الكمية المتوقعة\"><span class=\"card-cell-label\">الكمية المتوقعة</span>—</td><td data-cell-label=\"وحدة الفوترة\"><span class=\"card-cell-label\">وحدة الفوترة</span>—</td><td data-cell-label=\"الرسوم\"><span class=\"card-cell-label\">الرسوم</span><div><span>الإدخال · رموز الإدخال · تقدير للمقارنة فقط</span> <b>—</b> <span class=\"price-unit\">/ 1K من الرموز</span></div><div><span>الإخراج · رموز الإخراج · تقدير للمقارنة فقط</span> <b>—</b> <span class=\"price-unit\">/ 1K من الرموز</span></div><div><span>الإدخال · قراءة ذاكرة التخزين المؤقت · تقدير للمقارنة فقط</span> <b>—</b> <span class=\"price-unit\">/ 1K من الرموز</span></div><div><span>الإدخال · الكتابة إلى ذاكرة التخزين المؤقت · تقدير للمقارنة فقط</span> <b>—</b> <span class=\"price-unit\">/ 1K من الرموز</span></div><div><span>الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة · تقدير للمقارنة فقط</span> <b>—</b> <span class=\"price-unit\">/ 1K من الرموز</span></div></td></tr><tr><th data-cell-label=\"الإعدادات\" scope=\"row\"><span class=\"card-cell-label\">الإعدادات</span>ميغابكسل من صورة الإدخال</th><td data-cell-label=\"جدول التعرفة\"><span class=\"card-cell-label\">جدول التعرفة</span>—</td><td data-cell-label=\"الكمية المتوقعة\"><span class=\"card-cell-label\">الكمية المتوقعة</span>—</td><td data-cell-label=\"وحدة الفوترة\"><span class=\"card-cell-label\">وحدة الفوترة</span>لكل ميغابكسل من صورة الإدخال</td><td data-cell-label=\"الرسوم\"><span class=\"card-cell-label\">الرسوم</span><div><span>الإدخال · ميغابكسل من صورة الإدخال · تقدير للمقارنة فقط</span> <b>$0.12</b> <span class=\"price-unit\">لكل ميغابكسل من صورة الإدخال</span></div></td></tr><tr><th data-cell-label=\"الإعدادات\" scope=\"row\"><span class=\"card-cell-label\">الإعدادات</span>ميغابكسل من الصورة الناتجة</th><td data-cell-label=\"جدول التعرفة\"><span class=\"card-cell-label\">جدول التعرفة</span>—</td><td data-cell-label=\"الكمية المتوقعة\"><span class=\"card-cell-label\">الكمية المتوقعة</span>—</td><td data-cell-label=\"وحدة الفوترة\"><span class=\"card-cell-label\">وحدة الفوترة</span>لكل ميغابكسل من صورة الإخراج</td><td data-cell-label=\"الرسوم\"><span class=\"card-cell-label\">الرسوم</span><div><span>الإخراج · ميغابكسل من الصورة الناتجة · تقدير للمقارنة فقط</span> <b>$0.12</b> <span class=\"price-unit\">لكل ميغابكسل من صورة الإخراج</span></div></td></tr><tr><th data-cell-label=\"الإعدادات\" scope=\"row\"><span class=\"card-cell-label\">الإعدادات</span>تكلفة التوليد التقديرية</th><td data-cell-label=\"جدول التعرفة\"><span class=\"card-cell-label\">جدول التعرفة</span>—</td><td data-cell-label=\"الكمية المتوقعة\"><span class=\"card-cell-label\">الكمية المتوقعة</span>تقدير لتوليد واحد</td><td data-cell-label=\"وحدة الفوترة\"><span class=\"card-cell-label\">وحدة الفوترة</span>—</td><td data-cell-label=\"الرسوم\"><span class=\"card-cell-label\">الرسوم</span><div><span>الإخراج · تكلفة التوليد التقديرية · تقدير للمقارنة فقط</span> <b>$0.12</b> <span class=\"price-unit\">تقدير قبل الإنشاء</span></div><p class=\"note-s\">هذا التقدير ليس رسومًا إضافية ولا تعرفة ثابتة لعملية التوليد المكتملة.</p></td></tr></tbody></table></div></div><p class=\"note-s\">تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. <a href=\"/docs/ar/billing/reserve/\">كيفية عمل حجز المبلغ وتسوية الرسوم →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">أمثلة للطلبات</h3><h4>Ailoot Ultra · الصور</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"خيارات الشيفرة\"><button class=\"cg-tab\" id=\"model-code-1099-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1099-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"نسخ الشيفرة\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1099-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1099-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np={&#39;model&#39;: &#39;black-forest-labs/flux.2-flex&#39;, &#39;prompt&#39;: &#39;a red panda astronaut floating in space, studio lighting&#39;}\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(&quot;No completed images; retain the full response&quot;)\n    for index, item in enumerate(items):\n        encoded=item.get(&quot;b64_json&quot;)\n        uri=item.get(&quot;url&quot;, &quot;&quot;)\n        if not encoded and uri.startswith(&quot;data:image/&quot;):\n            header, separator, encoded=uri.partition(&quot;,&quot;)\n            if not separator or &quot;;base64&quot; not in header: raise SystemExit(&quot;Unsupported image data URI&quot;)\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(&quot;https://api.ailoot.ai&quot;,uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=&quot;https&quot; or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(&quot;Invalid returned image URL&quot;)\n            owned=parsed.netloc==&quot;api.ailoot.ai&quot; and parsed.path.startswith(&quot;/v1/media/assets/&quot;) and parsed.path.endswith(&quot;/content&quot;)\n            args=[&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,uri]\n            if owned: args += [&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;]]\n            temporary=Path(f&quot;image-{index}.bin&quot;)\n            subprocess.run(args+[&quot;-o&quot;,str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(&quot;Image has neither bytes nor URL&quot;)\n        if not raw: raise SystemExit(&quot;Empty image result&quot;)\n        ext=&quot;png&quot; if raw.startswith(b&quot;\\x89PNG&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;svg&quot; if raw.lstrip().startswith((b&quot;&lt;svg&quot;,b&quot;&lt;?xml&quot;)) else &quot;bin&quot;\n        Path(f&quot;image-{index}.{ext}&quot;).write_bytes(raw)\n    print(&quot;Every returned image saved; complete response metadata retained&quot;)\nsave_images(json.loads(Path(&quot;result.json&quot;).read_text())[&quot;data&quot;])\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">استلام النتائج وحفظها</h3><h4>Ailoot Ultra · الصور</h4><p class=\"note-s\">نزّل كل صورة مُرجعة أو احفظ محتواها بصيغة Base64</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>عمليات أخرى لقراءة المحتوى</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"خيارات الشيفرة\"><button class=\"cg-tab\" id=\"model-code-1100-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1100-panel-0\" aria-selected=\"true\" tabindex=\"0\">قراءة الأصول الموجودة المملوكة لك</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"نسخ الشيفرة\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1100-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1100-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>الاحتفاظ بكل النتائج المكتملة</h5><p class=\"note-s\">احفظ كل صورة مكتملة؛ نزّلها من كل URL مُرجع، أو فك ترميز محتواها بصيغة Base64.</p><p class=\"note-s\">احتفظ بالاستجابة كاملة وبجميع الترويسات، وبكل مخرج فعلي، وبالمعرّفات الأصلية المُعادة، وبجميع حقول الاستخدام. استعد العملية الأصلية دون إرسال طلب الإنشاء مجددًا.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>عند الحاجة إلى التحقق من الاستجابة الأصلية</h5><p class=\"note-s\">احتفظ بقيمة X-Client-Request-ID المُعادة للمطابقة. اقرأ فقط قيم task_id/asset_id الفعلية المُعادة أو مكتبة الوسائط المملوكة لك؛ ولا تنشئ عنوان URL لمهمة من معرّف العملية، ولا تُعِد إرسال طلب الإنشاء مطلقًا.</p></div><details class=\"card-about\" data-output-fields><summary>حقول الاستجابة</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>الحقل</th><th>النوع</th></tr></thead><tbody><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">created</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span></td></tr><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">data[].url</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span></td></tr><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">data[].b64_json</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span></td></tr><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">الأسماء البديلة</h3><h4>الأسماء البديلة للنموذج</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=black-forest-labs%2Fflux.2-flex&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux.2-flex&amp;fmt=images\"><code>black-forest-labs/flux.2-flex</code></a></span></p><h4>الأسماء البديلة لمسارات الطرائق</h4><p class=\"note-s\"><code>/v1/images</code></p><h4>معرّفات النماذج ذات الصلة IDs</h4><p class=\"note-s\"><a href=\"#m=black-forest-labs%2Fflux.2-flex&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux.2-flex&amp;fmt=images\"><code>black-forest-labs/flux.2-flex</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux.2-flex",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "black-forest-labs/flux.2-flex",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|black-forest-labs%2Fflux.2-flex",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "تقدّر التعرفات المعروضة التكلفة قبل التوليد. تُحسب الرسوم النهائية من التكلفة المسجّلة لعملية التوليد الأصلية. مدة المخرجات المقاسة والكميات المتوقعة ليست الكمية النهائية الخاضعة للفوترة.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "احتفظ بقيمة X-Client-Request-ID المُعادة للمطابقة. اقرأ فقط قيم task_id/asset_id الفعلية المُعادة أو مكتبة الوسائط المملوكة لك؛ ولا تنشئ عنوان URL لمهمة من معرّف العملية، ولا تُعِد إرسال طلب الإنشاء مطلقًا."
            },
            "outputs": {
              "all_results": "احتفظ بالاستجابة كاملة وبجميع الترويسات، وبكل مخرج فعلي، وبالمعرّفات الأصلية المُعادة، وبجميع حقول الاستخدام. استعد العملية الأصلية دون إرسال طلب الإنشاء مجددًا.",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux.2-flex"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3",
                  "16:9",
                  "9:16",
                  "21:9",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "png",
                  "jpeg"
                ],
                "enum_known": true,
                "name": "output_format",
                "required": false,
                "type": "string"
              },
              {
                "maximum": 1,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 8,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "4:3",
                    "3:4",
                    "3:2",
                    "2:3",
                    "16:9",
                    "9:16",
                    "21:9",
                    "auto"
                  ],
                  "type": "string"
                },
                "input_references": {
                  "items": {
                    "properties": {
                      "image_url": {
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 8,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux.2-flex"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "output_format": {
                  "enum": [
                    "png",
                    "jpeg"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "black-forest-labs/flux.2-flex",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "قيمة task_id الفعلية المُعادة أو سجل مكتبة الوسائط",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "image",
            "fields": [
              {
                "description": null,
                "name": "created",
                "type": null
              },
              {
                "description": null,
                "name": "data[].url",
                "type": null
              },
              {
                "description": null,
                "name": "data[].b64_json",
                "type": null
              },
              {
                "description": null,
                "name": "usage",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image megapixel"
            },
            "label": "input image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input_megapixel",
                "label": "input image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per input image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input_megapixel"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per output image megapixel"
            },
            "label": "output image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output_megapixel",
                "label": "output image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per output image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output_megapixel"
              }
            ]
          },
          {
            "basis": "هذا التقدير ليس رسومًا إضافية ولا تعرفة ثابتة لعملية التوليد المكتملة.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "تكلفة التوليد التقديرية",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np={'model': 'black-forest-labs/flux.2-flex', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(\"No completed images; retain the full response\")\n    for index, item in enumerate(items):\n        encoded=item.get(\"b64_json\")\n        uri=item.get(\"url\", \"\")\n        if not encoded and uri.startswith(\"data:image/\"):\n            header, separator, encoded=uri.partition(\",\")\n            if not separator or \";base64\" not in header: raise SystemExit(\"Unsupported image data URI\")\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(\"https://api.ailoot.ai\",uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=\"https\" or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(\"Invalid returned image URL\")\n            owned=parsed.netloc==\"api.ailoot.ai\" and parsed.path.startswith(\"/v1/media/assets/\") and parsed.path.endswith(\"/content\")\n            args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",uri]\n            if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n            temporary=Path(f\"image-{index}.bin\")\n            subprocess.run(args+[\"-o\",str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(\"Image has neither bytes nor URL\")\n        if not raw: raise SystemExit(\"Empty image result\")\n        ext=\"png\" if raw.startswith(b\"\\x89PNG\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"svg\" if raw.lstrip().startswith((b\"<svg\",b\"<?xml\")) else \"bin\"\n        Path(f\"image-{index}.{ext}\").write_bytes(raw)\n    print(\"Every returned image saved; complete response metadata retained\")\nsave_images(json.loads(Path(\"result.json\").read_text())[\"data\"])\nPY_RESULT\n",
            "label": "curl · exact creation/save all outputs",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "الصور",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/images"
        ],
        "native_endpoint": "images",
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image megapixel"
            },
            "label": "input image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input_megapixel",
                "label": "input image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per input image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input_megapixel"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per output image megapixel"
            },
            "label": "output image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output_megapixel",
                "label": "output image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per output image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output_megapixel"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "black-forest-labs/flux.2-flex",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_input_megapixel",
            "label": "input image megapixel",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "per input image megapixel",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "image_input_megapixel"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_output_megapixel",
            "label": "output image megapixel",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "per output image megapixel",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "image_output_megapixel"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "black-forest-labs/flux.2-flex",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "bc4f2d352cf4904a6c2b54e276d88b9b433622c4b0c45d61e34b0fb9e4c0ea58",
    "input_html_sha256": "032b5f47f68be980716b2aede7a824d67dd243b6990a7ce7d655d78a577808f8",
    "private_audit_sha256": "1834645f2ad9c796ae33fb7e83c14a74f82ed256b97e90e80f83ded6d29a9e54",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ar/black-forest-labs-flux-2-flex/",
    "description": "يتخصّص FLUX.2 [flex] في طباعة النص داخل الصور والتفاصيل البصرية الصغيرة، مع خطوات أخذ عينات وقوة توجيه قابلتين للضبط. استخدم النص والمراجع الصورية لتطوير ملصقات أو تخطيطات منتجات أو تعديلات دقيقة مع الموازنة بين الالتزام والواقعية.",
    "locale": "ar",
    "md_url": "https://ailoot.ai/models/ar/black-forest-labs-flux-2-flex/index.md",
    "title": "Black Forest Labs: FLUX.2 Flex — Ailoot",
    "url": "https://ailoot.ai/models/ar/black-forest-labs-flux-2-flex/"
  },
  "rawModel": {
    "about": "FLUX.2 [flex] إصدار Black Forest Labs لتوليد الصور وتحريرها، المتخصّص في الطباعة ورسم النص والحفاظ على التفاصيل الصغيرة. يستخدم تعليمات مكتوبة للمشهد ومراجع صورية لإنتاج صورة. وعنصر تحكّمه المميّز هو أخذ العينات القابل للضبط: يكشف الملف الموثّق خطوات الاستدلال وقوة التوجيه معًا، مما يتيح تنقيح التوجيه البصري عبر الإعدادات والكلمات.\n\n### الحروف والتفاصيل الدقيقة\n\nيجب أن تبدأ مهمة الطباعة بالنص الفعلي. ضع كل سطر بين علامتي اقتباس، وحدّد مكانه، وميّز بين العنوان والنص المساند والتسمية. صِف أسلوب الحروف ومقياسها ولونها في علاقتها بالمشهد. ويمكن لتوجيه مبتكر لملصق أن يعرض دراجة زرقاء كوبالتية في استوديو فاتح، بعنوان كبير فوق هيكلها وسطر مواصفات أصغر تحته. ويجب أن توضّح الصورة المنتج وترتيب القراءة معًا.\n\nوفي صورة منتج تفصيلية، حدّد الأجزاء التي تقرّر فائدة النتيجة: ميناء أو تسمية عنصر تحكّم أو درزة أو حافة مادة أو علامة على العبوة. قدّم مرجعًا مقروءًا واشرح السمة التي يثبتها. فقد يغيّر مشهد مشابه عمومًا حرفًا أو مكوّنًا حاسمًا، لذا قارن التفصيل المولَّد بحجم عرضه المقصود. وتخصّص النموذج سبب لتقديم متطلبات دقيقة، وليس ضمانًا للاستغناء عن التدقيق أو الفحص البصري.\n\n### للخطوات وقوة التوجيه غرضان مختلفان\n\nيقبل ملف الجهة المصنّعة المحدّد من خطوة استدلال واحدة إلى خمسين، مع خمسين افتراضيًا. ويربط وصفه زيادة الخطوات بمزيد من التفاصيل والواقعية. وتتراوح قوة التوجيه من 1.5 إلى 10، وقيمتها الافتراضية 5. تعزّز القيمة الأعلى الالتزام بالتوجيه، لكنها قد تقلّل الواقعية. ولذلك قد تحتاج صورة ذات تعليمات تصميم دقيقة وصورة تستهدف مظهرًا فوتوغرافيًا طبيعيًا إلى اختيارين مختلفين داخل هذا الملف.\n\nأبقِ الصياغة والمراجع وشكل المخرجات ثابتة عند مقارنة تغيير في إعداد. انظر إلى السمة التي دفعت إلى التغيير: أشكال الحروف أو مواضع الأجسام أو ملمس المادة. غيّر الإعداد لسبب بصري محدّد بدلًا من اعتبار العدد الكبير أفضل تلقائيًا. وهذه عناصر تحكّم لدى المنتج في أخذ العينات؛ أما ملف [klein] المقطَّر ذو الأربع خطوات وعناصر التحكّم القياسية ل[pro] أو [max] فتمثّل خيارات نماذج مختلفة.\n\nتوسيع التوجيه مفعّل افتراضيًا في مواصفات [flex]، ويمكن تعطيله عبر عنصر prompt_upsampling الخاص به. ويتيح ذلك إبقاء توجيه مفصّل بالنص المقدَّم عندما يكون مناسبًا. ويوصي الدليل المشترك للجهة المصنّعة بوضع العنصر الرئيسي والفعل المهم قبل الزخرفة الثانوية، ويصف التوجيهات المنظمة بصيغة JSON إلى جانب التوجيهات باللغة الطبيعية. استخدم البنية التي تجعل تحديد العلاقات المطلوبة أسهل.\n\n### تعديلات تسترشد بالمراجع\n\nيحتوي ملف الطلب المحدّد على ثمانية مواضع للصور المرجعية. ويسمح مسار الجهة المطوّرة التفاعلي بما يصل إلى عشر صور بصورة مستقلة؛ ويصف العددان واجهتين مختلفتين. حدّد ما إذا كانت صورة تقدّم المشهد المطلوب تحريره أو منتجًا أو شخصية أو ملابس أو أسلوبًا. وللتعديل، حدّد الجسم والتغيير، ثم سمِّ التكوين المحيط أو المواد أو الضوء الذي يجب أن يبقى.\n\nيمكن لمهمة مبتكرة لتغليف استخدام الصندوق من الصورة الأولى والتشطيب من الثانية، واستبدال الملصق الأمامي بالنص المعتمد، والحفاظ على نسب الصندوق. ويمكن لتكوين جماعي تعيين مرجع مختلف لكل عنصر مع الحفاظ على اتساق التعيينات. وتغطّي أمثلة العائلة تغيير الأجسام والخلفيات والتركيب وتعديل النصوص وتحويل الأسلوب. اطلب تعديلًا مترابطًا واحدًا بهدف واضح، ثم قارن المنطقة المعدّلة والأجزاء المطلوب أن تبقى ثابتة معًا.\n\n### الحجم واللون والصورة الناتجة\n\nيوثّق دليل FLUX.2 حدًا أدنى 64×64 بكسل، وأبعادًا من مضاعفات 16، ومخرجات حتى 4 ميغابكسل، مع توصية بما يصل إلى 2 ميغابكسل للاستخدام المعتاد. وتسرد مواصفات [flex] المحدّدة مخرجات JPEG وPNG وWebP، مع JPEG افتراضيًا. كما توفّر بذرة عشوائية اختيارية. احتفظ بالنموذج الفعلي والبذرة وإعدادات أخذ العينات مع المراجع المصدرية عند مقارنة النسخ؛ فاسم العائلة وحده لا يحدّد إعداد التوليد كاملًا.\n\nفي العمل الحساس للألوان، اربط كل رمز سداسي بجسم أو عنصر نصي مسمّى. وللتكوين، حدّد نسبة الأبعاد المقصودة من خلال أبعاد الصورة واترك مساحة كافية لحروف مقروءة. ولا يتضمّن الدليل المشترك آلية للتوجيه السلبي، لذا صِف المظهر المطلوب إيجابيًا: تركيز حاد أو خلفية نظيفة أو مساحة فارغة واضحة للنص. وتدعم أمثلته متعددة اللغات كتابة توجيه خاص بثقافة معيّنة باللغة الملائمة من دون أن تثبت ضمانًا لعدد محدّد من اللغات.\n\nيعيد مسار FLUX.2 لدى المنتج صورة بعد المعالجة، ويستخدم روابط موقّعة مؤقتة بنافذة استرجاع مدتها عشر دقائق. احتفظ بالصورة الفعلية والتوجيه معًا. تحقّق من الطباعة والتفاصيل الدقيقة وهوية المراجع والمعالجة البصرية قبل وضع الصورة في تخطيط. وقد يكون التسليم النهائي ملصقًا مختارًا أو صورة منتج أو تكوينًا محرَّرًا، مع الاحتفاظ بإعداداته الدقيقة للمراجعة التالية.",
    "alias_of": null,
    "aliases": [],
    "author": "Black Forest Labs",
    "capabilities": {
      "context_length": 67344,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "image"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "التسعير الكامل للتكوين في التفاصيل."
      }
    ],
    "ctx": null,
    "formats": [
      "images"
    ],
    "id": "black-forest-labs/flux.2-flex",
    "input": [
      "text",
      "image"
    ],
    "kind": "image",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "تقدّر التعرفات المعروضة التكلفة قبل التوليد. تُحسب الرسوم النهائية من التكلفة المسجّلة لعملية التوليد الأصلية. مدة المخرجات المقاسة والكميات المتوقعة ليست الكمية النهائية الخاضعة للفوترة.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "احتفظ بقيمة X-Client-Request-ID المُعادة للمطابقة. اقرأ فقط قيم task_id/asset_id الفعلية المُعادة أو مكتبة الوسائط المملوكة لك؛ ولا تنشئ عنوان URL لمهمة من معرّف العملية، ولا تُعِد إرسال طلب الإنشاء مطلقًا."
            },
            "outputs": {
              "all_results": "احتفظ بالاستجابة كاملة وبجميع الترويسات، وبكل مخرج فعلي، وبالمعرّفات الأصلية المُعادة، وبجميع حقول الاستخدام. استعد العملية الأصلية دون إرسال طلب الإنشاء مجددًا.",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux.2-flex"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3",
                  "16:9",
                  "9:16",
                  "21:9",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "png",
                  "jpeg"
                ],
                "enum_known": true,
                "name": "output_format",
                "required": false,
                "type": "string"
              },
              {
                "maximum": 1,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 8,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "4:3",
                    "3:4",
                    "3:2",
                    "2:3",
                    "16:9",
                    "9:16",
                    "21:9",
                    "auto"
                  ],
                  "type": "string"
                },
                "input_references": {
                  "items": {
                    "properties": {
                      "image_url": {
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 8,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux.2-flex"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "output_format": {
                  "enum": [
                    "png",
                    "jpeg"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "black-forest-labs/flux.2-flex",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "قيمة task_id الفعلية المُعادة أو سجل مكتبة الوسائط",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "image",
            "fields": [
              {
                "description": null,
                "name": "created",
                "type": null
              },
              {
                "description": null,
                "name": "data[].url",
                "type": null
              },
              {
                "description": null,
                "name": "data[].b64_json",
                "type": null
              },
              {
                "description": null,
                "name": "usage",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image megapixel"
            },
            "label": "input image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input_megapixel",
                "label": "input image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per input image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input_megapixel"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per output image megapixel"
            },
            "label": "output image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output_megapixel",
                "label": "output image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per output image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output_megapixel"
              }
            ]
          },
          {
            "basis": "هذا التقدير ليس رسومًا إضافية ولا تعرفة ثابتة لعملية التوليد المكتملة.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "تكلفة التوليد التقديرية",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np={'model': 'black-forest-labs/flux.2-flex', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(\"No completed images; retain the full response\")\n    for index, item in enumerate(items):\n        encoded=item.get(\"b64_json\")\n        uri=item.get(\"url\", \"\")\n        if not encoded and uri.startswith(\"data:image/\"):\n            header, separator, encoded=uri.partition(\",\")\n            if not separator or \";base64\" not in header: raise SystemExit(\"Unsupported image data URI\")\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(\"https://api.ailoot.ai\",uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=\"https\" or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(\"Invalid returned image URL\")\n            owned=parsed.netloc==\"api.ailoot.ai\" and parsed.path.startswith(\"/v1/media/assets/\") and parsed.path.endswith(\"/content\")\n            args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",uri]\n            if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n            temporary=Path(f\"image-{index}.bin\")\n            subprocess.run(args+[\"-o\",str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(\"Image has neither bytes nor URL\")\n        if not raw: raise SystemExit(\"Empty image result\")\n        ext=\"png\" if raw.startswith(b\"\\x89PNG\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"svg\" if raw.lstrip().startswith((b\"<svg\",b\"<?xml\")) else \"bin\"\n        Path(f\"image-{index}.{ext}\").write_bytes(raw)\n    print(\"Every returned image saved; complete response metadata retained\")\nsave_images(json.loads(Path(\"result.json\").read_text())[\"data\"])\nPY_RESULT\n",
            "label": "curl · exact creation/save all outputs",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "الصور",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/images"
        ],
        "native_endpoint": "images",
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image megapixel"
            },
            "label": "input image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input_megapixel",
                "label": "input image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per input image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input_megapixel"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per output image megapixel"
            },
            "label": "output image megapixel",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output_megapixel",
                "label": "output image megapixel",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "per output image megapixel",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output_megapixel"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.12",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.12",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "black-forest-labs/flux.2-flex",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_input_megapixel",
            "label": "input image megapixel",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "per input image megapixel",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "image_input_megapixel"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_output_megapixel",
            "label": "output image megapixel",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "per output image megapixel",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "image_output_megapixel"
          },
          {
            "amount": "0.12",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.12",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "black-forest-labs/flux.2-flex",
        "request_model_id": "black-forest-labs/flux.2-flex",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX.2 Flex",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.12,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.12,
      "varies": false
    },
    "short": "يتخصّص FLUX.2 [flex] في طباعة النص داخل الصور والتفاصيل البصرية الصغيرة، مع خطوات أخذ عينات وقوة توجيه قابلتين للضبط. استخدم النص والمراجع الصورية لتطوير ملصقات أو تخطيطات منتجات أو تعديلات دقيقة مع الموازنة بين الالتزام والواقعية."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "يتخصّص FLUX.2 [flex] في طباعة النص داخل الصور والتفاصيل البصرية الصغيرة، مع خطوات أخذ عينات وقوة توجيه قابلتين للضبط. استخدم النص والمراجع الصورية لتطوير ملصقات أو تخطيطات منتجات أو تعديلات دقيقة مع الموازنة بين الالتزام والواقعية.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "1417d4321bad69959dd0aeb9d80ece0d53ef03dd924d9bdbf3dc78be24347580",
    "renderer_sha256": "081ee0fd5b6b1b60564b02c52d62547e01e922c8c0a16e91a0d055073e76a10e"
  },
  "sourceRevision": "d09e79fcc72cbe1c31861f070e1e34ff7a1cfd5cebfc161f2b6586b451690824"
}
