{
  "aboutHtml": "<p>Recraft V3 نموذج لتوليد الصور صُمّم للتصميم الجرافيكي والمشاهد الفوتوغرافية والمرسومة. يصف توجيه مكتوب العنصر والمكان والتكوين؛ والناتج صورة. يطوّر V3 رسم النص والواقعية الفوتوغرافية لدى Recraft، مع الحفاظ على اتساق الأسلوب من الصور النموذجية من دون إعادة تدريب.</p><h4>النص جزء من التكوين</h4><p>يعمل V3 مع النص داخل الصورة، بما فيه النص الأطول والحروف متوسطة الحجم. تصف Recraft مرحلة تخطيط تحدّد الكلمات ومواضعها قبل توليد الصورة. ويمكن إنتاج التخطيط تلقائيًا من التوجيه أو ترتيبه يدويًا في بيئة التصميم لدى Recraft. ويساعد ذلك في ربط عنوان ورسم ونص مساند داخل تكوين واحد. وتوثّق الجهة المصنّعة أيضًا إحداثيات صريحة لتخطيط النص، معبَّرًا عنها نسبةً إلى الصورة لا كشبكة بكسلات ثابتة. يحتوي كل عنصر نصي على كلمة واحدة وأربع نقاط زوايا بإحداثيات مطبَّعة: ‏(0, 0) أعلى اليسار و(1, 1) أسفل اليمين. ويمكن للإحداثيات تجاوز ذلك النطاق، وعندها يُقتطع الشكل. ويجب أن تتبع كلمات التخطيط النصي الصريح قيود المحارف الموثّقة.</p><p>لملصق أو غلاف، قدّم الصياغة الدقيقة وصِف تسلسلها الهرمي: السطر المتصدّر ومكانه وكيف تدعمه الصورة. تحقّق من الإملاء والتباعد المرسومين عند اختيار النتيجة.</p><h4>الأسلوب والألوان والاتجاه الفني</h4><p>يتضمّن V3 أساليب فوتوغرافية وتوضيحية وشعارية منسّقة، إضافة إلى مكتبة مستقلة للأساليب المتجهية. Recraft V3 Raw الأسلوب الافتراضي للنموذج النقطي؛ وVector art الافتراضي للنسخة المتجهية. تستهدف Photorealism مظهرًا فوتوغرافيًا، بينما تستوعب Illustration الملامس الفنية والتظليل والانتقالات اللونية الأكثر تعقيدًا. وتفضّل الأساليب المتجهية الأشكال والألوان المحدودة والتعبئات المسطّحة أو التدرّجات البسيطة.</p><p>يمكن بناء أساليب مخصّصة من صور مرجعية أو أساليب متوافقة موجودة أو مزيج منها. وتوفّر اتجاهًا بصريًا قابلًا لإعادة الاستخدام عبر سلسلة صور. وتتيح عناصر المزج الموثّقة للمراجع والأساليب المصدرية حمل أوزان مستقلة؛ وتتطابق أعداد الأوزان مع المصادر. وسياسَتا المزج المذكورتان هما PaletteMatch وMaxWeight. تسمح الجهة المصنّعة بما يصل إلى 10 صور مرجعية للأسلوب وتستخدم وضع مطابقة الأسلوب regular لV3. والأسلوب المخصّص المخزّن والمراجع الأسلوبية المباشرة مدخلان بديلان، ويجب أن يتوافق الأسلوب المخصّص مع النموذج المستخدم للتوليد.</p><p>توجّه الألوان المفضّلة ولون الخلفية لوحة الألوان. ويوثّق الدليل ما يصل إلى 10 ألوان RGB، بكل مكوّن من 0 إلى 255. وتتراوح الأوزان النسبية الاختيارية من 0 إلى 1؛ ويجب تقديمها لكل الألوان أو عدم تقديمها لأي منها، ويجب ألّا يتجاوز مجموعها 1. ويتراوح المستوى الفني من 0 لمعالجة ثابتة ونظيفة إلى 5 لتكوينات أكثر حيوية وغرابة. ويصف التوجيه السلبي العناصر غير المرغوبة؛ ويعطّل عنصر مستقل لمنع النص تخطيطات النص المضمّنة. وتتوفر بذرة عشوائية لقابلية إعادة الإنتاج. تمنح هذه العناصر وسائل مختلفة للمشهد وأسلوبه وتخطيطه البصري.</p><h4>الصور النقطية ونسخة SVG مستقلة</h4><p>توثّق Recraft نسختين من V3. ينتج النموذج النقطي WebP من دون فقدان أو PNG، ويلائم التفاصيل الفوتوغرافية والتظليل والرسوم ذات الملمس. وينتج Recraft V3 Vector صيغة SVG: مسارات وأشكال يمكن تكبيرها من دون دقة بكسلات ثابتة. ويلائم الرموز التصويرية ومفاهيم الشعارات والشارات والأعمال المتجهية التفصيلية. وتحويل الصور النقطية إلى متجهية عملية مستقلة عن توليد عمل متجهي مباشرة.</p><p>لكل نسخة هويتها الخاصة. فصورة ذات مظهر متجهي ومخرج SVG فعلي خياران مختلفان. اختر المخرج المقصود عند تجهيز مسار التصميم، بدلًا من اعتبار الاسم المشترك V3 دليلًا على أن كل عملية تعيد نوع الملف نفسه.</p><h4>تحرير الأعمال الموجودة وإنهاؤها</h4><p>تسرد وثائق V3 لدى Recraft التوليد من صورة إلى صورة والترميم داخل المناطق والتوسيع خارج الإطار واستبدال الخلفية أو توليدها. يجمع العمل من صورة إلى صورة صورة موجودة بتوجيه جديد. ويعيد الترميم توليد المنطقة المختارة باستخدام صورة وقناع مطابق؛ ويضيف التوسيع محتوى خارج الإطار الأصلي. وتتعامل عمليات الخلفية مع محيط العنصر.</p><p>تتضمّن الأدوات المصاحبة أيضًا المسح وإزالة الخلفية والتحويل إلى متجهات وطريقتين لرفع الدقة. ويمكن لرفع الدقة الإبداعي إدخال تفاصيل جديدة؛ ويستهدف رفع الدقة الحاد نسخة أكبر وأكثر وضوحًا للمحتوى الموجود. وهذه عمليات مستقلة بمدخلاتها ونتائجها الخاصة، وليست معاني إضافية لاسم النموذج النقطي أو المتجهي.</p><h4>حدود التوجيه والحجم والصورة المصدرية</h4><p>تقبل مواصفات توليد V3 لدى الجهة المصنّعة توجيهًا حتى 1000 حرف و1–6 صور لكل طلب. وتدعم 14 نسبة أبعاد: 1:1 و2:1 و1:2 و3:2 و2:3 و4:3 و3:4 و5:4 و4:5 و6:10 و14:10 و10:14 و16:9 و9:16. وتشمل الأمثلة النقطية الموثّقة 1024x1024 و1820x1024 و1024x1820. ويجب أن تكون الأبعاد النقطية الدقيقة من القائمة المدعومة؛ ويستخدم SVG نسب الأبعاد من دون حجم بكسلات ثابت. وعند إغفال الحجم، يختاره نظام الجهة المصنّعة من التوجيه.</p><p>لعمليات إدخال الصور، تسرد الجهة المصنّعة PNG وJPG وWebP، مع SVG عندما تسمح به العملية المحدّدة. يجب أن تكون الملفات أقل من 20 MB، وألّا تتجاوز 16 MP، وألّا يزيد الضلع الأطول على 4096 بكسل. ويكون الضلع الأقصر 256 بكسل على الأقل، مع استثناء 32 بكسل لرفع الدقة الحاد. وتطابق الأقنعة حجم الصورة وتستخدم الأسود والأبيض الخالصين؛ وللمراجع الأسلوبية حد إجمالي 64 MB.</p><p>لمشروع Ailoot API، حوّل المهمة إلى توجيه صوري مركّز: النص الدقيق وترتيب الأجسام والأسلوب البصري والتكوين المطلوب. يحتاج الملصق ومشهد المنتج وسلسلة الأيقونات إلى توجيهات مختلفة؛ وحافظ على الفروق ذات الصلة بين نسخ V3 وعملياته عند تحديد كيفية استخدام كل نتيجة.</p>",
  "aboutText": "Recraft V3 نموذج لتوليد الصور صُمّم للتصميم الجرافيكي والمشاهد الفوتوغرافية والمرسومة. يصف توجيه مكتوب العنصر والمكان والتكوين؛ والناتج صورة. يطوّر V3 رسم النص والواقعية الفوتوغرافية لدى Recraft، مع الحفاظ على اتساق الأسلوب من الصور النموذجية من دون إعادة تدريب.\n\n### النص جزء من التكوين\n\nيعمل V3 مع النص داخل الصورة، بما فيه النص الأطول والحروف متوسطة الحجم. تصف Recraft مرحلة تخطيط تحدّد الكلمات ومواضعها قبل توليد الصورة. ويمكن إنتاج التخطيط تلقائيًا من التوجيه أو ترتيبه يدويًا في بيئة التصميم لدى Recraft. ويساعد ذلك في ربط عنوان ورسم ونص مساند داخل تكوين واحد. وتوثّق الجهة المصنّعة أيضًا إحداثيات صريحة لتخطيط النص، معبَّرًا عنها نسبةً إلى الصورة لا كشبكة بكسلات ثابتة. يحتوي كل عنصر نصي على كلمة واحدة وأربع نقاط زوايا بإحداثيات مطبَّعة: ‏(0, 0) أعلى اليسار و(1, 1) أسفل اليمين. ويمكن للإحداثيات تجاوز ذلك النطاق، وعندها يُقتطع الشكل. ويجب أن تتبع كلمات التخطيط النصي الصريح قيود المحارف الموثّقة.\n\nلملصق أو غلاف، قدّم الصياغة الدقيقة وصِف تسلسلها الهرمي: السطر المتصدّر ومكانه وكيف تدعمه الصورة. تحقّق من الإملاء والتباعد المرسومين عند اختيار النتيجة.\n\n### الأسلوب والألوان والاتجاه الفني\n\nيتضمّن V3 أساليب فوتوغرافية وتوضيحية وشعارية منسّقة، إضافة إلى مكتبة مستقلة للأساليب المتجهية. Recraft V3 Raw الأسلوب الافتراضي للنموذج النقطي؛ وVector art الافتراضي للنسخة المتجهية. تستهدف Photorealism مظهرًا فوتوغرافيًا، بينما تستوعب Illustration الملامس الفنية والتظليل والانتقالات اللونية الأكثر تعقيدًا. وتفضّل الأساليب المتجهية الأشكال والألوان المحدودة والتعبئات المسطّحة أو التدرّجات البسيطة.\n\nيمكن بناء أساليب مخصّصة من صور مرجعية أو أساليب متوافقة موجودة أو مزيج منها. وتوفّر اتجاهًا بصريًا قابلًا لإعادة الاستخدام عبر سلسلة صور. وتتيح عناصر المزج الموثّقة للمراجع والأساليب المصدرية حمل أوزان مستقلة؛ وتتطابق أعداد الأوزان مع المصادر. وسياسَتا المزج المذكورتان هما PaletteMatch وMaxWeight. تسمح الجهة المصنّعة بما يصل إلى 10 صور مرجعية للأسلوب وتستخدم وضع مطابقة الأسلوب regular لV3. والأسلوب المخصّص المخزّن والمراجع الأسلوبية المباشرة مدخلان بديلان، ويجب أن يتوافق الأسلوب المخصّص مع النموذج المستخدم للتوليد.\n\nتوجّه الألوان المفضّلة ولون الخلفية لوحة الألوان. ويوثّق الدليل ما يصل إلى 10 ألوان RGB، بكل مكوّن من 0 إلى 255. وتتراوح الأوزان النسبية الاختيارية من 0 إلى 1؛ ويجب تقديمها لكل الألوان أو عدم تقديمها لأي منها، ويجب ألّا يتجاوز مجموعها 1. ويتراوح المستوى الفني من 0 لمعالجة ثابتة ونظيفة إلى 5 لتكوينات أكثر حيوية وغرابة. ويصف التوجيه السلبي العناصر غير المرغوبة؛ ويعطّل عنصر مستقل لمنع النص تخطيطات النص المضمّنة. وتتوفر بذرة عشوائية لقابلية إعادة الإنتاج. تمنح هذه العناصر وسائل مختلفة للمشهد وأسلوبه وتخطيطه البصري.\n\n### الصور النقطية ونسخة SVG مستقلة\n\nتوثّق Recraft نسختين من V3. ينتج النموذج النقطي WebP من دون فقدان أو PNG، ويلائم التفاصيل الفوتوغرافية والتظليل والرسوم ذات الملمس. وينتج Recraft V3 Vector صيغة SVG: مسارات وأشكال يمكن تكبيرها من دون دقة بكسلات ثابتة. ويلائم الرموز التصويرية ومفاهيم الشعارات والشارات والأعمال المتجهية التفصيلية. وتحويل الصور النقطية إلى متجهية عملية مستقلة عن توليد عمل متجهي مباشرة.\n\nلكل نسخة هويتها الخاصة. فصورة ذات مظهر متجهي ومخرج SVG فعلي خياران مختلفان. اختر المخرج المقصود عند تجهيز مسار التصميم، بدلًا من اعتبار الاسم المشترك V3 دليلًا على أن كل عملية تعيد نوع الملف نفسه.\n\n### تحرير الأعمال الموجودة وإنهاؤها\n\nتسرد وثائق V3 لدى Recraft التوليد من صورة إلى صورة والترميم داخل المناطق والتوسيع خارج الإطار واستبدال الخلفية أو توليدها. يجمع العمل من صورة إلى صورة صورة موجودة بتوجيه جديد. ويعيد الترميم توليد المنطقة المختارة باستخدام صورة وقناع مطابق؛ ويضيف التوسيع محتوى خارج الإطار الأصلي. وتتعامل عمليات الخلفية مع محيط العنصر.\n\nتتضمّن الأدوات المصاحبة أيضًا المسح وإزالة الخلفية والتحويل إلى متجهات وطريقتين لرفع الدقة. ويمكن لرفع الدقة الإبداعي إدخال تفاصيل جديدة؛ ويستهدف رفع الدقة الحاد نسخة أكبر وأكثر وضوحًا للمحتوى الموجود. وهذه عمليات مستقلة بمدخلاتها ونتائجها الخاصة، وليست معاني إضافية لاسم النموذج النقطي أو المتجهي.\n\n### حدود التوجيه والحجم والصورة المصدرية\n\nتقبل مواصفات توليد V3 لدى الجهة المصنّعة توجيهًا حتى 1000 حرف و1–6 صور لكل طلب. وتدعم 14 نسبة أبعاد: 1:1 و2:1 و1:2 و3:2 و2:3 و4:3 و3:4 و5:4 و4:5 و6:10 و14:10 و10:14 و16:9 و9:16. وتشمل الأمثلة النقطية الموثّقة 1024x1024 و1820x1024 و1024x1820. ويجب أن تكون الأبعاد النقطية الدقيقة من القائمة المدعومة؛ ويستخدم SVG نسب الأبعاد من دون حجم بكسلات ثابت. وعند إغفال الحجم، يختاره نظام الجهة المصنّعة من التوجيه.\n\nلعمليات إدخال الصور، تسرد الجهة المصنّعة PNG وJPG وWebP، مع SVG عندما تسمح به العملية المحدّدة. يجب أن تكون الملفات أقل من 20 MB، وألّا تتجاوز 16 MP، وألّا يزيد الضلع الأطول على 4096 بكسل. ويكون الضلع الأقصر 256 بكسل على الأقل، مع استثناء 32 بكسل لرفع الدقة الحاد. وتطابق الأقنعة حجم الصورة وتستخدم الأسود والأبيض الخالصين؛ وللمراجع الأسلوبية حد إجمالي 64 MB.\n\nلمشروع Ailoot API، حوّل المهمة إلى توجيه صوري مركّز: النص الدقيق وترتيب الأجسام والأسلوب البصري والتكوين المطلوب. يحتاج الملصق ومشهد المنتج وسلسلة الأيقونات إلى توجيهات مختلفة؛ وحافظ على الفروق ذات الصلة بين نسخ V3 وعملياته عند تحديد كيفية استخدام كل نتيجة.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "1b6bf2f7691d04c3da8b515aa80d5b01213c979e19e5c161302a4c457741dfa4",
    "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\">Recraft: Recraft V3</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"إغلاق\">×</button></div><div class=\"idline\"><span>Recraft /</span><code>recraft/recraft-v3</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|recraft%2Frecraft-v3\">الصور</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\">ينشئ Recraft V3 صورًا فوتوغرافية ورسومًا توضيحية وتخطيطات جرافيكية بتكوين يراعي النص وعناصر تحكّم أسلوبية. وتلائم نسخه النقطية وSVG المستقلة الملصقات ومجموعات صور العلامات التجارية والأيقونات والتصاميم التي يجب أن تعمل فيها الصياغة والبنية البصرية معًا.</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>Recraft V3 نموذج لتوليد الصور صُمّم للتصميم الجرافيكي والمشاهد الفوتوغرافية والمرسومة. يصف توجيه مكتوب العنصر والمكان والتكوين؛ والناتج صورة. يطوّر V3 رسم النص والواقعية الفوتوغرافية لدى Recraft، مع الحفاظ على اتساق الأسلوب من الصور النموذجية من دون إعادة تدريب.</p><h4>النص جزء من التكوين</h4><p>يعمل V3 مع النص داخل الصورة، بما فيه النص الأطول والحروف متوسطة الحجم. تصف Recraft مرحلة تخطيط تحدّد الكلمات ومواضعها قبل توليد الصورة. ويمكن إنتاج التخطيط تلقائيًا من التوجيه أو ترتيبه يدويًا في بيئة التصميم لدى Recraft. ويساعد ذلك في ربط عنوان ورسم ونص مساند داخل تكوين واحد. وتوثّق الجهة المصنّعة أيضًا إحداثيات صريحة لتخطيط النص، معبَّرًا عنها نسبةً إلى الصورة لا كشبكة بكسلات ثابتة. يحتوي كل عنصر نصي على كلمة واحدة وأربع نقاط زوايا بإحداثيات مطبَّعة: ‏(0, 0) أعلى اليسار و(1, 1) أسفل اليمين. ويمكن للإحداثيات تجاوز ذلك النطاق، وعندها يُقتطع الشكل. ويجب أن تتبع كلمات التخطيط النصي الصريح قيود المحارف الموثّقة.</p><p>لملصق أو غلاف، قدّم الصياغة الدقيقة وصِف تسلسلها الهرمي: السطر المتصدّر ومكانه وكيف تدعمه الصورة. تحقّق من الإملاء والتباعد المرسومين عند اختيار النتيجة.</p><h4>الأسلوب والألوان والاتجاه الفني</h4><p>يتضمّن V3 أساليب فوتوغرافية وتوضيحية وشعارية منسّقة، إضافة إلى مكتبة مستقلة للأساليب المتجهية. Recraft V3 Raw الأسلوب الافتراضي للنموذج النقطي؛ وVector art الافتراضي للنسخة المتجهية. تستهدف Photorealism مظهرًا فوتوغرافيًا، بينما تستوعب Illustration الملامس الفنية والتظليل والانتقالات اللونية الأكثر تعقيدًا. وتفضّل الأساليب المتجهية الأشكال والألوان المحدودة والتعبئات المسطّحة أو التدرّجات البسيطة.</p><p>يمكن بناء أساليب مخصّصة من صور مرجعية أو أساليب متوافقة موجودة أو مزيج منها. وتوفّر اتجاهًا بصريًا قابلًا لإعادة الاستخدام عبر سلسلة صور. وتتيح عناصر المزج الموثّقة للمراجع والأساليب المصدرية حمل أوزان مستقلة؛ وتتطابق أعداد الأوزان مع المصادر. وسياسَتا المزج المذكورتان هما PaletteMatch وMaxWeight. تسمح الجهة المصنّعة بما يصل إلى 10 صور مرجعية للأسلوب وتستخدم وضع مطابقة الأسلوب regular لV3. والأسلوب المخصّص المخزّن والمراجع الأسلوبية المباشرة مدخلان بديلان، ويجب أن يتوافق الأسلوب المخصّص مع النموذج المستخدم للتوليد.</p><p>توجّه الألوان المفضّلة ولون الخلفية لوحة الألوان. ويوثّق الدليل ما يصل إلى 10 ألوان RGB، بكل مكوّن من 0 إلى 255. وتتراوح الأوزان النسبية الاختيارية من 0 إلى 1؛ ويجب تقديمها لكل الألوان أو عدم تقديمها لأي منها، ويجب ألّا يتجاوز مجموعها 1. ويتراوح المستوى الفني من 0 لمعالجة ثابتة ونظيفة إلى 5 لتكوينات أكثر حيوية وغرابة. ويصف التوجيه السلبي العناصر غير المرغوبة؛ ويعطّل عنصر مستقل لمنع النص تخطيطات النص المضمّنة. وتتوفر بذرة عشوائية لقابلية إعادة الإنتاج. تمنح هذه العناصر وسائل مختلفة للمشهد وأسلوبه وتخطيطه البصري.</p><h4>الصور النقطية ونسخة SVG مستقلة</h4><p>توثّق Recraft نسختين من V3. ينتج النموذج النقطي WebP من دون فقدان أو PNG، ويلائم التفاصيل الفوتوغرافية والتظليل والرسوم ذات الملمس. وينتج Recraft V3 Vector صيغة SVG: مسارات وأشكال يمكن تكبيرها من دون دقة بكسلات ثابتة. ويلائم الرموز التصويرية ومفاهيم الشعارات والشارات والأعمال المتجهية التفصيلية. وتحويل الصور النقطية إلى متجهية عملية مستقلة عن توليد عمل متجهي مباشرة.</p><p>لكل نسخة هويتها الخاصة. فصورة ذات مظهر متجهي ومخرج SVG فعلي خياران مختلفان. اختر المخرج المقصود عند تجهيز مسار التصميم، بدلًا من اعتبار الاسم المشترك V3 دليلًا على أن كل عملية تعيد نوع الملف نفسه.</p><h4>تحرير الأعمال الموجودة وإنهاؤها</h4><p>تسرد وثائق V3 لدى Recraft التوليد من صورة إلى صورة والترميم داخل المناطق والتوسيع خارج الإطار واستبدال الخلفية أو توليدها. يجمع العمل من صورة إلى صورة صورة موجودة بتوجيه جديد. ويعيد الترميم توليد المنطقة المختارة باستخدام صورة وقناع مطابق؛ ويضيف التوسيع محتوى خارج الإطار الأصلي. وتتعامل عمليات الخلفية مع محيط العنصر.</p><p>تتضمّن الأدوات المصاحبة أيضًا المسح وإزالة الخلفية والتحويل إلى متجهات وطريقتين لرفع الدقة. ويمكن لرفع الدقة الإبداعي إدخال تفاصيل جديدة؛ ويستهدف رفع الدقة الحاد نسخة أكبر وأكثر وضوحًا للمحتوى الموجود. وهذه عمليات مستقلة بمدخلاتها ونتائجها الخاصة، وليست معاني إضافية لاسم النموذج النقطي أو المتجهي.</p><h4>حدود التوجيه والحجم والصورة المصدرية</h4><p>تقبل مواصفات توليد V3 لدى الجهة المصنّعة توجيهًا حتى 1000 حرف و1–6 صور لكل طلب. وتدعم 14 نسبة أبعاد: 1:1 و2:1 و1:2 و3:2 و2:3 و4:3 و3:4 و5:4 و4:5 و6:10 و14:10 و10:14 و16:9 و9:16. وتشمل الأمثلة النقطية الموثّقة 1024x1024 و1820x1024 و1024x1820. ويجب أن تكون الأبعاد النقطية الدقيقة من القائمة المدعومة؛ ويستخدم SVG نسب الأبعاد من دون حجم بكسلات ثابت. وعند إغفال الحجم، يختاره نظام الجهة المصنّعة من التوجيه.</p><p>لعمليات إدخال الصور، تسرد الجهة المصنّعة PNG وJPG وWebP، مع SVG عندما تسمح به العملية المحدّدة. يجب أن تكون الملفات أقل من 20 MB، وألّا تتجاوز 16 MP، وألّا يزيد الضلع الأطول على 4096 بكسل. ويكون الضلع الأقصر 256 بكسل على الأقل، مع استثناء 32 بكسل لرفع الدقة الحاد. وتطابق الأقنعة حجم الصورة وتستخدم الأسود والأبيض الخالصين؛ وللمراجع الأسلوبية حد إجمالي 64 MB.</p><p>لمشروع Ailoot API، حوّل المهمة إلى توجيه صوري مركّز: النص الدقيق وترتيب الأجسام والأسلوب البصري والتكوين المطلوب. يحتاج الملصق ومشهد المنتج وسلسلة الأيقونات إلى توجيهات مختلفة؛ وحافظ على الفروق ذات الصلة بين نسخ V3 وعملياته عند تحديد كيفية استخدام كل نتيجة.</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><div><dt>صيغة الإخراج</dt><dd>ملف صورة</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 data-parameter-availability=\"source_interface\"><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>recraft/recraft-v3</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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 data-parameter-availability=\"saved_exact_supplier_endpoint\"><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>الحد الأقصى: ⁦6⁩</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr data-parameter-availability=\"saved_exact_supplier_endpoint\"><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, 16:9, 9:16, auto</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr data-parameter-availability=\"saved_exact_supplier_endpoint\"><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>الحد الأقصى للعناصر: ⁦1⁩</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>تركيبات مواد الإدخال</summary><p class=\"note-s\"><b>تحويل النص إلى صورة</b> · مطلوب: prompt</p></details><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><tr><th data-cell-label=\"المعلمة\" scope=\"row\"><span class=\"card-cell-label\">المعلمة</span><code>optional_controls</code></th><td data-cell-label=\"المواصفات\"><span class=\"card-cell-label\">المواصفات</span>aspect_ratio, n, input_references</td></tr><tr><th data-cell-label=\"المعلمة\" scope=\"row\"><span class=\"card-cell-label\">المعلمة</span><code>exact_supported_parameters</code></th><td data-cell-label=\"المواصفات\"><span class=\"card-cell-label\">المواصفات</span>{&quot;aspect_ratio&quot;:{&quot;type&quot;:&quot;enum&quot;,&quot;values&quot;:[&quot;1:1&quot;,&quot;4:3&quot;,&quot;3:4&quot;,&quot;16:9&quot;,&quot;9:16&quot;,&quot;auto&quot;]},&quot;n&quot;:{&quot;type&quot;:&quot;range&quot;,&quot;min&quot;:1,&quot;max&quot;:6},&quot;input_references&quot;:{&quot;type&quot;:&quot;range&quot;,&quot;min&quot;:0,&quot;max&quot;:1}}</td></tr><tr><th data-cell-label=\"المعلمة\" scope=\"row\"><span class=\"card-cell-label\">المعلمة</span><code>reference_material_rule</code></th><td data-cell-label=\"المواصفات\"><span class=\"card-cell-label\">المواصفات</span>مراجع الصور الفعلية الخاصة بالعميل فقط؛ وتخضع لشروط نقطة النهاية لدى المزوّد.</td></tr></tbody></table></div><p>الأسماء البديلة للطريقة: <code>/v1/images</code></p><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><p class=\"note-s\">استخدم النموذج الدقيق وحقول الإدخال الموثّقة.</p><p class=\"note-s\">احتفظ بالاستجابة كاملة، وكل مخرج فعلي، والمعرّفات الأصلية المُعادة.</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>Ultra</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.08</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.08</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><div data-declared-reference-pricing><h4>تفاصيل التعرفة المرجعية</h4><p class=\"note-s\">لا تغيّر جداول التعرفة المرجعية على مستوى النموذج اختيار الطريقة أو عروض الأسعار أو الرسوم. وتستخدم الرسوم الفعلية تعرفات طريقة Ailoot المحددة.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>إعدادات تسعير الصور</summary><h4>الأسعار حسب الإعدادات</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><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><div><span>الإخراج · صورة المخرجات</span> <b>$0.08</b> <span class=\"price-unit\">لكل صورة</span></div><p class=\"note-s\">تصف البنود المتكافئة الرسم نفسه؛ ولا تضيف رسماً ثانياً.</p></td></tr></tbody></table></div></details></div></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-2534-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2534-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button><button class=\"cg-tab\" id=\"model-code-2534-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2534-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button><button class=\"cg-tab\" id=\"model-code-2534-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2534-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Node.js SDK</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-2534-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2534-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;recraft/recraft-v3&#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 class=\"cg-pane\" id=\"model-code-2534-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2534-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\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;)\n\nrequest={&#39;model&#39;: &#39;recraft/recraft-v3&#39;, &#39;prompt&#39;: &#39;a red panda astronaut floating in space, studio lighting&#39;}\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nresult=client.images.generate(**request)\nPath(&quot;sdk-result.txt&quot;).write_text(str(result),encoding=&quot;utf-8&quot;)\nsave_images([{&quot;b64_json&quot;:getattr(item,&quot;b64_json&quot;,None),&quot;url&quot;:getattr(item,&quot;url&quot;,None)} for item in result.data])\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2534-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2534-tab-2\" hidden><pre data-lang=\"js\"><code>import OpenAI from &quot;openai&quot;;\nimport { readFileSync, writeFileSync } from &quot;node:fs&quot;;\nconst key=process.env.AILOOT_API_KEY;\nif(!key) throw new Error(&quot;Set your actual Ailoot API key&quot;);\nconst client=new OpenAI({baseURL:&quot;https://api.ailoot.ai/v1&quot;,apiKey:key,maxRetries:0});\nconst request={&quot;model&quot;: &quot;recraft/recraft-v3&quot;, &quot;prompt&quot;: &quot;a red panda astronaut floating in space, studio lighting&quot;};\nconst result=await client.images.generate(request);\nwriteFileSync(&quot;sdk-result.json&quot;,JSON.stringify(result,null,2));\nif(!result.data?.length) throw new Error(&quot;No completed images&quot;);\nfor(let index=0;index&lt;result.data.length;index++) {\n  const item=result.data[index];let encoded=item.b64_json,uri=item.url||&quot;&quot;,raw;\n  if(!encoded &amp;&amp; uri.startsWith(&quot;data:image/&quot;)) {\n    const comma=uri.indexOf(&quot;,&quot;);if(comma&lt;0 || !uri.slice(0,comma).includes(&quot;;base64&quot;)) throw new Error(&quot;Unsupported image data URI&quot;);\n    encoded=uri.slice(comma+1);\n  }\n  if(encoded) {\n    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error(&quot;Invalid Base64&quot;);\n    raw=Buffer.from(encoded,&quot;base64&quot;);\n  } else if(uri) {\n    const u=new URL(uri,&quot;https://api.ailoot.ai&quot;);\n    if(u.protocol!==&quot;https:&quot; || u.username || u.password) throw new Error(&quot;Invalid returned URL&quot;);\n    const owned=u.origin===&quot;https://api.ailoot.ai&quot; &amp;&amp; u.pathname.startsWith(&quot;/v1/media/assets/&quot;) &amp;&amp; u.pathname.endsWith(&quot;/content&quot;);\n    const response=await fetch(u,{headers:owned?{Authorization:&quot;Bearer &quot;+key}:{},redirect:&quot;manual&quot;});\n    if(!response.ok) throw new Error(&quot;Image content download failed: &quot;+response.status);\n    raw=Buffer.from(await response.arrayBuffer());\n  } else throw new Error(&quot;Image has neither bytes nor URL&quot;);\n  if(!raw.length) throw new Error(&quot;Empty image result&quot;);\n  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?&quot;png&quot;:raw[0]===255&amp;&amp;raw[1]===216?&quot;jpg&quot;:raw.toString(&quot;ascii&quot;,0,4)===&quot;RIFF&quot;&amp;&amp;raw.toString(&quot;ascii&quot;,8,12)===&quot;WEBP&quot;?&quot;webp&quot;:raw.toString(&quot;utf8&quot;).trimStart().startsWith(&quot;&lt;svg&quot;)||raw.toString(&quot;utf8&quot;).trimStart().startsWith(&quot;&lt;?xml&quot;)?&quot;svg&quot;:&quot;bin&quot;;\n  writeFileSync(`image-${index}.${ext}`,raw);\n}\nconsole.log(&quot;Every returned image saved; sdk-result.json retains complete metadata&quot;);\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><div class=\"card-result-process\" data-all-results><h5>الاحتفاظ بكل النتائج المكتملة</h5><p class=\"note-s\">احفظ كل صورة مكتملة؛ نزّلها من كل URL مُرجع، أو فك ترميز محتواها بصيغة Base64.</p><p class=\"note-s\">احتفظ بكل عنصر بيانات وبالاستخدام كاملاً؛ واحفظ جميع الصور الفعلية المُعادة كأصول مملوكة لك. لا تختلق عناوين URL أو معرّفات.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>عند الحاجة إلى التحقق من الاستجابة الأصلية</h5><p class=\"note-s\">إذا تطلبت نتيجة توليد صورة أو تعديلها التحقق، فاحتفظ بقيمة operation_id/X-Client-Request-ID الأصلية ومعلومات النتيجة المُعادة. استعد النتائج الموجودة والمملوكة لك عبر مكتبة الوسائط باستخدام قيم task_id أو asset_id الفعلية. لا تُعِد إرسال طلب التوليد أو التعديل، ولا تنشئ عنوان URL للاستعلام الدوري من operation_id.</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>integer</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>string</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>base64 string</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>object</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=recraft%2Frecraft-v3&amp;route=Ultra&amp;caller=recraft%2Frecraft-v3&amp;fmt=images\"><code>recraft/recraft-v3</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=recraft%2Frecraft-v3&amp;route=Ultra&amp;caller=recraft%2Frecraft-v3&amp;fmt=images\"><code>recraft/recraft-v3</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "recraft/recraft-v3",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "recraft/recraft-v3",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|recraft%2Frecraft-v3",
      "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 every data item and complete usage; own and save all actual returned images. No invented URLs or IDs.",
            "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": "إذا تطلبت نتيجة توليد صورة أو تعديلها التحقق، فاحتفظ بقيمة operation_id/X-Client-Request-ID الأصلية ومعلومات النتيجة المُعادة. استعد النتائج الموجودة والمملوكة لك عبر مكتبة الوسائط باستخدام قيم task_id أو asset_id الفعلية. لا تُعِد إرسال طلب التوليد أو التعديل، ولا تنشئ عنوان URL للاستعلام الدوري من operation_id."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_image",
                "required": [
                  "prompt"
                ]
              }
            ],
            "outputs": {
              "all_results": "احتفظ بكل عنصر بيانات وبالاستخدام كاملاً؛ واحفظ جميع الصور الفعلية المُعادة كأصول مملوكة لك. لا تختلق عناوين URL أو معرّفات.",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": "base64 string"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "actual validated raster MIME"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "enum": [
                  "recraft/recraft-v3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "maximum": 6,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "enum": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "16:9",
                  "9:16",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "material_rule": "Actual customer HTTP(S) image URL or base64 data URI; no invented reference URL.",
                "maximum_items": 1,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "4:3",
                    "3:4",
                    "16:9",
                    "9:16",
                    "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": 1,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "recraft/recraft-v3"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 6,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "recraft/recraft-v3",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "hints": [
            "استخدم النموذج الدقيق وحقول الإدخال الموثّقة.",
            "احتفظ بالاستجابة كاملة، وكل مخرج فعلي، والمعرّفات الأصلية المُعادة."
          ],
          "input": {
            "content_type": "application/json",
            "exact_supported_parameters": {
              "aspect_ratio": {
                "type": "enum",
                "values": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "16:9",
                  "9:16",
                  "auto"
                ]
              },
              "input_references": {
                "max": 1,
                "min": 0,
                "type": "range"
              },
              "n": {
                "max": 6,
                "min": 1,
                "type": "range"
              }
            },
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "aspect_ratio",
              "n",
              "input_references"
            ],
            "reference_material_rule": "مراجع الصور الفعلية الخاصة بالعميل فقط؛ وتخضع لشروط نقطة النهاية لدى المزوّد.",
            "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": "If an image generation or edit result requires a check, keep the original operation_id/X-Client-Request-ID and returned result information. Recover existing owned results through the media library using actual task_id or asset_id values. Do not resubmit the generation/edit request or construct a polling URL from operation_id."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "method_aliases": [
            "/v1/images"
          ],
          "operation_modes": [
            "text_to_image",
            "reference_guided_image"
          ],
          "output": {
            "all_results": true,
            "family": "image",
            "format": "actual validated raster MIME",
            "result": "every actual owned URL or b64_json"
          }
        },
        "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": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_image_output",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "basis": "هذا التقدير ليس رسومًا إضافية ولا تعرفة ثابتة لعملية التوليد المكتملة.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "تكلفة التوليد التقديرية",
            "units": [
              {
                "amount": "0.08",
                "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.08",
                "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': 'recraft/recraft-v3', '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": "from openai import OpenAI\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\")\n\nrequest={'model': 'recraft/recraft-v3', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.images.generate(**request)\nPath(\"sdk-result.txt\").write_text(str(result),encoding=\"utf-8\")\nsave_images([{\"b64_json\":getattr(item,\"b64_json\",None),\"url\":getattr(item,\"url\",None)} for item in result.data])\n",
            "label": "Python SDK · exact payload/save all outputs",
            "language": "python"
          },
          {
            "code": "import OpenAI from \"openai\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nconst key=process.env.AILOOT_API_KEY;\nif(!key) throw new Error(\"Set your actual Ailoot API key\");\nconst client=new OpenAI({baseURL:\"https://api.ailoot.ai/v1\",apiKey:key,maxRetries:0});\nconst request={\"model\": \"recraft/recraft-v3\", \"prompt\": \"a red panda astronaut floating in space, studio lighting\"};\nconst result=await client.images.generate(request);\nwriteFileSync(\"sdk-result.json\",JSON.stringify(result,null,2));\nif(!result.data?.length) throw new Error(\"No completed images\");\nfor(let index=0;index<result.data.length;index++) {\n  const item=result.data[index];let encoded=item.b64_json,uri=item.url||\"\",raw;\n  if(!encoded && uri.startsWith(\"data:image/\")) {\n    const comma=uri.indexOf(\",\");if(comma<0 || !uri.slice(0,comma).includes(\";base64\")) throw new Error(\"Unsupported image data URI\");\n    encoded=uri.slice(comma+1);\n  }\n  if(encoded) {\n    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error(\"Invalid Base64\");\n    raw=Buffer.from(encoded,\"base64\");\n  } else if(uri) {\n    const u=new URL(uri,\"https://api.ailoot.ai\");\n    if(u.protocol!==\"https:\" || u.username || u.password) throw new Error(\"Invalid returned URL\");\n    const owned=u.origin===\"https://api.ailoot.ai\" && u.pathname.startsWith(\"/v1/media/assets/\") && u.pathname.endsWith(\"/content\");\n    const response=await fetch(u,{headers:owned?{Authorization:\"Bearer \"+key}:{},redirect:\"manual\"});\n    if(!response.ok) throw new Error(\"Image content download failed: \"+response.status);\n    raw=Buffer.from(await response.arrayBuffer());\n  } else throw new Error(\"Image has neither bytes nor URL\");\n  if(!raw.length) throw new Error(\"Empty image result\");\n  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?\"png\":raw[0]===255&&raw[1]===216?\"jpg\":raw.toString(\"ascii\",0,4)===\"RIFF\"&&raw.toString(\"ascii\",8,12)===\"WEBP\"?\"webp\":raw.toString(\"utf8\").trimStart().startsWith(\"<svg\")||raw.toString(\"utf8\").trimStart().startsWith(\"<?xml\")?\"svg\":\"bin\";\n  writeFileSync(`image-${index}.${ext}`,raw);\n}\nconsole.log(\"Every returned image saved; sdk-result.json retains complete metadata\");\n",
            "label": "Node SDK · exact payload/save all outputs",
            "language": "js"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact model and documented input fields.",
          "Keep the complete response, every actual output and original returned IDs."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Картинки",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/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": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_image_output",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "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.08",
                "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.08",
                "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": "recraft/recraft-v3",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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.08",
            "amount_unit": "usd_per_image_output",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_output",
            "label": "image output",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "public_unit_label": "per image output",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "image_output"
          },
          {
            "amount": "0.08",
            "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.08",
            "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": "recraft/recraft-v3",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "9f8d2b189ab07355e57710773ddf9a836ff23925d384b8df3152c5051300a070",
    "input_html_sha256": "a6d29d1c52237ef29d6d88832217032f90f48b1d8ffe22b3090fe85651b4dfbe",
    "private_audit_sha256": "3eb56217c154993167bf5b0bfb50acd1222ed5b50095b89d7f4116e89e314a27",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ar/recraft-recraft-v3/",
    "description": "ينشئ Recraft V3 صورًا فوتوغرافية ورسومًا توضيحية وتخطيطات جرافيكية بتكوين يراعي النص وعناصر تحكّم أسلوبية. وتلائم نسخه النقطية وSVG المستقلة الملصقات ومجموعات صور العلامات التجارية والأيقونات والتصاميم التي يجب أن تعمل فيها الصياغة والبنية البصرية معًا.",
    "locale": "ar",
    "md_url": "https://ailoot.ai/models/ar/recraft-recraft-v3/index.md",
    "title": "Recraft: Recraft V3 — Ailoot",
    "url": "https://ailoot.ai/models/ar/recraft-recraft-v3/"
  },
  "rawModel": {
    "about": "Recraft V3 نموذج لتوليد الصور صُمّم للتصميم الجرافيكي والمشاهد الفوتوغرافية والمرسومة. يصف توجيه مكتوب العنصر والمكان والتكوين؛ والناتج صورة. يطوّر V3 رسم النص والواقعية الفوتوغرافية لدى Recraft، مع الحفاظ على اتساق الأسلوب من الصور النموذجية من دون إعادة تدريب.\n\n### النص جزء من التكوين\n\nيعمل V3 مع النص داخل الصورة، بما فيه النص الأطول والحروف متوسطة الحجم. تصف Recraft مرحلة تخطيط تحدّد الكلمات ومواضعها قبل توليد الصورة. ويمكن إنتاج التخطيط تلقائيًا من التوجيه أو ترتيبه يدويًا في بيئة التصميم لدى Recraft. ويساعد ذلك في ربط عنوان ورسم ونص مساند داخل تكوين واحد. وتوثّق الجهة المصنّعة أيضًا إحداثيات صريحة لتخطيط النص، معبَّرًا عنها نسبةً إلى الصورة لا كشبكة بكسلات ثابتة. يحتوي كل عنصر نصي على كلمة واحدة وأربع نقاط زوايا بإحداثيات مطبَّعة: ‏(0, 0) أعلى اليسار و(1, 1) أسفل اليمين. ويمكن للإحداثيات تجاوز ذلك النطاق، وعندها يُقتطع الشكل. ويجب أن تتبع كلمات التخطيط النصي الصريح قيود المحارف الموثّقة.\n\nلملصق أو غلاف، قدّم الصياغة الدقيقة وصِف تسلسلها الهرمي: السطر المتصدّر ومكانه وكيف تدعمه الصورة. تحقّق من الإملاء والتباعد المرسومين عند اختيار النتيجة.\n\n### الأسلوب والألوان والاتجاه الفني\n\nيتضمّن V3 أساليب فوتوغرافية وتوضيحية وشعارية منسّقة، إضافة إلى مكتبة مستقلة للأساليب المتجهية. Recraft V3 Raw الأسلوب الافتراضي للنموذج النقطي؛ وVector art الافتراضي للنسخة المتجهية. تستهدف Photorealism مظهرًا فوتوغرافيًا، بينما تستوعب Illustration الملامس الفنية والتظليل والانتقالات اللونية الأكثر تعقيدًا. وتفضّل الأساليب المتجهية الأشكال والألوان المحدودة والتعبئات المسطّحة أو التدرّجات البسيطة.\n\nيمكن بناء أساليب مخصّصة من صور مرجعية أو أساليب متوافقة موجودة أو مزيج منها. وتوفّر اتجاهًا بصريًا قابلًا لإعادة الاستخدام عبر سلسلة صور. وتتيح عناصر المزج الموثّقة للمراجع والأساليب المصدرية حمل أوزان مستقلة؛ وتتطابق أعداد الأوزان مع المصادر. وسياسَتا المزج المذكورتان هما PaletteMatch وMaxWeight. تسمح الجهة المصنّعة بما يصل إلى 10 صور مرجعية للأسلوب وتستخدم وضع مطابقة الأسلوب regular لV3. والأسلوب المخصّص المخزّن والمراجع الأسلوبية المباشرة مدخلان بديلان، ويجب أن يتوافق الأسلوب المخصّص مع النموذج المستخدم للتوليد.\n\nتوجّه الألوان المفضّلة ولون الخلفية لوحة الألوان. ويوثّق الدليل ما يصل إلى 10 ألوان RGB، بكل مكوّن من 0 إلى 255. وتتراوح الأوزان النسبية الاختيارية من 0 إلى 1؛ ويجب تقديمها لكل الألوان أو عدم تقديمها لأي منها، ويجب ألّا يتجاوز مجموعها 1. ويتراوح المستوى الفني من 0 لمعالجة ثابتة ونظيفة إلى 5 لتكوينات أكثر حيوية وغرابة. ويصف التوجيه السلبي العناصر غير المرغوبة؛ ويعطّل عنصر مستقل لمنع النص تخطيطات النص المضمّنة. وتتوفر بذرة عشوائية لقابلية إعادة الإنتاج. تمنح هذه العناصر وسائل مختلفة للمشهد وأسلوبه وتخطيطه البصري.\n\n### الصور النقطية ونسخة SVG مستقلة\n\nتوثّق Recraft نسختين من V3. ينتج النموذج النقطي WebP من دون فقدان أو PNG، ويلائم التفاصيل الفوتوغرافية والتظليل والرسوم ذات الملمس. وينتج Recraft V3 Vector صيغة SVG: مسارات وأشكال يمكن تكبيرها من دون دقة بكسلات ثابتة. ويلائم الرموز التصويرية ومفاهيم الشعارات والشارات والأعمال المتجهية التفصيلية. وتحويل الصور النقطية إلى متجهية عملية مستقلة عن توليد عمل متجهي مباشرة.\n\nلكل نسخة هويتها الخاصة. فصورة ذات مظهر متجهي ومخرج SVG فعلي خياران مختلفان. اختر المخرج المقصود عند تجهيز مسار التصميم، بدلًا من اعتبار الاسم المشترك V3 دليلًا على أن كل عملية تعيد نوع الملف نفسه.\n\n### تحرير الأعمال الموجودة وإنهاؤها\n\nتسرد وثائق V3 لدى Recraft التوليد من صورة إلى صورة والترميم داخل المناطق والتوسيع خارج الإطار واستبدال الخلفية أو توليدها. يجمع العمل من صورة إلى صورة صورة موجودة بتوجيه جديد. ويعيد الترميم توليد المنطقة المختارة باستخدام صورة وقناع مطابق؛ ويضيف التوسيع محتوى خارج الإطار الأصلي. وتتعامل عمليات الخلفية مع محيط العنصر.\n\nتتضمّن الأدوات المصاحبة أيضًا المسح وإزالة الخلفية والتحويل إلى متجهات وطريقتين لرفع الدقة. ويمكن لرفع الدقة الإبداعي إدخال تفاصيل جديدة؛ ويستهدف رفع الدقة الحاد نسخة أكبر وأكثر وضوحًا للمحتوى الموجود. وهذه عمليات مستقلة بمدخلاتها ونتائجها الخاصة، وليست معاني إضافية لاسم النموذج النقطي أو المتجهي.\n\n### حدود التوجيه والحجم والصورة المصدرية\n\nتقبل مواصفات توليد V3 لدى الجهة المصنّعة توجيهًا حتى 1000 حرف و1–6 صور لكل طلب. وتدعم 14 نسبة أبعاد: 1:1 و2:1 و1:2 و3:2 و2:3 و4:3 و3:4 و5:4 و4:5 و6:10 و14:10 و10:14 و16:9 و9:16. وتشمل الأمثلة النقطية الموثّقة 1024x1024 و1820x1024 و1024x1820. ويجب أن تكون الأبعاد النقطية الدقيقة من القائمة المدعومة؛ ويستخدم SVG نسب الأبعاد من دون حجم بكسلات ثابت. وعند إغفال الحجم، يختاره نظام الجهة المصنّعة من التوجيه.\n\nلعمليات إدخال الصور، تسرد الجهة المصنّعة PNG وJPG وWebP، مع SVG عندما تسمح به العملية المحدّدة. يجب أن تكون الملفات أقل من 20 MB، وألّا تتجاوز 16 MP، وألّا يزيد الضلع الأطول على 4096 بكسل. ويكون الضلع الأقصر 256 بكسل على الأقل، مع استثناء 32 بكسل لرفع الدقة الحاد. وتطابق الأقنعة حجم الصورة وتستخدم الأسود والأبيض الخالصين؛ وللمراجع الأسلوبية حد إجمالي 64 MB.\n\nلمشروع Ailoot API، حوّل المهمة إلى توجيه صوري مركّز: النص الدقيق وترتيب الأجسام والأسلوب البصري والتكوين المطلوب. يحتاج الملصق ومشهد المنتج وسلسلة الأيقونات إلى توجيهات مختلفة؛ وحافظ على الفروق ذات الصلة بين نسخ V3 وعملياته عند تحديد كيفية استخدام كل نتيجة.",
    "alias_of": null,
    "aliases": [],
    "author": "Recraft",
    "available": null,
    "canonical_model": "recraft/recraft-v3",
    "capabilities": {
      "context_length": 65536,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "image"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.08",
            "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.08",
            "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,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "312e470b4d419e2b5b8275d6",
        "label": "إعدادات تسعير الصور",
        "profiles": [
          {
            "basis": "تصف البنود المتكافئة الرسم نفسه؛ ولا تضيف رسماً ثانياً.",
            "dimensions": {
              "conditions": "لم يُعلَن أي خيار تسعير بديل."
            },
            "label": "صورة المخرجات",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_image",
                "billing_input": false,
                "key": "output_image",
                "label": "Output image",
                "public_unit_label": "per image",
                "quantity": 1,
                "rate_role": "typed_image_reference",
                "side": "out",
                "unit": "image"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "images"
    ],
    "id": "recraft/recraft-v3",
    "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 every data item and complete usage; own and save all actual returned images. No invented URLs or IDs.",
            "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": "إذا تطلبت نتيجة توليد صورة أو تعديلها التحقق، فاحتفظ بقيمة operation_id/X-Client-Request-ID الأصلية ومعلومات النتيجة المُعادة. استعد النتائج الموجودة والمملوكة لك عبر مكتبة الوسائط باستخدام قيم task_id أو asset_id الفعلية. لا تُعِد إرسال طلب التوليد أو التعديل، ولا تنشئ عنوان URL للاستعلام الدوري من operation_id."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_image",
                "required": [
                  "prompt"
                ]
              }
            ],
            "outputs": {
              "all_results": "احتفظ بكل عنصر بيانات وبالاستخدام كاملاً؛ واحفظ جميع الصور الفعلية المُعادة كأصول مملوكة لك. لا تختلق عناوين URL أو معرّفات.",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": "base64 string"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "actual validated raster MIME"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "enum": [
                  "recraft/recraft-v3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "maximum": 6,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "enum": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "16:9",
                  "9:16",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_endpoint",
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "material_rule": "Actual customer HTTP(S) image URL or base64 data URI; no invented reference URL.",
                "maximum_items": 1,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "4:3",
                    "3:4",
                    "16:9",
                    "9:16",
                    "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": 1,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "recraft/recraft-v3"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 6,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "recraft/recraft-v3",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "hints": [
            "استخدم النموذج الدقيق وحقول الإدخال الموثّقة.",
            "احتفظ بالاستجابة كاملة، وكل مخرج فعلي، والمعرّفات الأصلية المُعادة."
          ],
          "input": {
            "content_type": "application/json",
            "exact_supported_parameters": {
              "aspect_ratio": {
                "type": "enum",
                "values": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "16:9",
                  "9:16",
                  "auto"
                ]
              },
              "input_references": {
                "max": 1,
                "min": 0,
                "type": "range"
              },
              "n": {
                "max": 6,
                "min": 1,
                "type": "range"
              }
            },
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "aspect_ratio",
              "n",
              "input_references"
            ],
            "reference_material_rule": "مراجع الصور الفعلية الخاصة بالعميل فقط؛ وتخضع لشروط نقطة النهاية لدى المزوّد.",
            "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": "If an image generation or edit result requires a check, keep the original operation_id/X-Client-Request-ID and returned result information. Recover existing owned results through the media library using actual task_id or asset_id values. Do not resubmit the generation/edit request or construct a polling URL from operation_id."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "method_aliases": [
            "/v1/images"
          ],
          "operation_modes": [
            "text_to_image",
            "reference_guided_image"
          ],
          "output": {
            "all_results": true,
            "family": "image",
            "format": "actual validated raster MIME",
            "result": "every actual owned URL or b64_json"
          }
        },
        "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": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_image_output",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "basis": "هذا التقدير ليس رسومًا إضافية ولا تعرفة ثابتة لعملية التوليد المكتملة.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "تكلفة التوليد التقديرية",
            "units": [
              {
                "amount": "0.08",
                "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.08",
                "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': 'recraft/recraft-v3', '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": "from openai import OpenAI\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\")\n\nrequest={'model': 'recraft/recraft-v3', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.images.generate(**request)\nPath(\"sdk-result.txt\").write_text(str(result),encoding=\"utf-8\")\nsave_images([{\"b64_json\":getattr(item,\"b64_json\",None),\"url\":getattr(item,\"url\",None)} for item in result.data])\n",
            "label": "Python SDK · exact payload/save all outputs",
            "language": "python"
          },
          {
            "code": "import OpenAI from \"openai\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nconst key=process.env.AILOOT_API_KEY;\nif(!key) throw new Error(\"Set your actual Ailoot API key\");\nconst client=new OpenAI({baseURL:\"https://api.ailoot.ai/v1\",apiKey:key,maxRetries:0});\nconst request={\"model\": \"recraft/recraft-v3\", \"prompt\": \"a red panda astronaut floating in space, studio lighting\"};\nconst result=await client.images.generate(request);\nwriteFileSync(\"sdk-result.json\",JSON.stringify(result,null,2));\nif(!result.data?.length) throw new Error(\"No completed images\");\nfor(let index=0;index<result.data.length;index++) {\n  const item=result.data[index];let encoded=item.b64_json,uri=item.url||\"\",raw;\n  if(!encoded && uri.startsWith(\"data:image/\")) {\n    const comma=uri.indexOf(\",\");if(comma<0 || !uri.slice(0,comma).includes(\";base64\")) throw new Error(\"Unsupported image data URI\");\n    encoded=uri.slice(comma+1);\n  }\n  if(encoded) {\n    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error(\"Invalid Base64\");\n    raw=Buffer.from(encoded,\"base64\");\n  } else if(uri) {\n    const u=new URL(uri,\"https://api.ailoot.ai\");\n    if(u.protocol!==\"https:\" || u.username || u.password) throw new Error(\"Invalid returned URL\");\n    const owned=u.origin===\"https://api.ailoot.ai\" && u.pathname.startsWith(\"/v1/media/assets/\") && u.pathname.endsWith(\"/content\");\n    const response=await fetch(u,{headers:owned?{Authorization:\"Bearer \"+key}:{},redirect:\"manual\"});\n    if(!response.ok) throw new Error(\"Image content download failed: \"+response.status);\n    raw=Buffer.from(await response.arrayBuffer());\n  } else throw new Error(\"Image has neither bytes nor URL\");\n  if(!raw.length) throw new Error(\"Empty image result\");\n  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?\"png\":raw[0]===255&&raw[1]===216?\"jpg\":raw.toString(\"ascii\",0,4)===\"RIFF\"&&raw.toString(\"ascii\",8,12)===\"WEBP\"?\"webp\":raw.toString(\"utf8\").trimStart().startsWith(\"<svg\")||raw.toString(\"utf8\").trimStart().startsWith(\"<?xml\")?\"svg\":\"bin\";\n  writeFileSync(`image-${index}.${ext}`,raw);\n}\nconsole.log(\"Every returned image saved; sdk-result.json retains complete metadata\");\n",
            "label": "Node SDK · exact payload/save all outputs",
            "language": "js"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact model and documented input fields.",
          "Keep the complete response, every actual output and original returned IDs."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Картинки",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/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": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_image_output",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "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.08",
                "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.08",
                "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": "recraft/recraft-v3",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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.08",
            "amount_unit": "usd_per_image_output",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_output",
            "label": "image output",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "public_unit_label": "per image output",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "image_output"
          },
          {
            "amount": "0.08",
            "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.08",
            "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": "recraft/recraft-v3",
        "request_model_id": "recraft/recraft-v3",
        "route_label": "Ultra"
      }
    ],
    "name": "Recraft: Recraft V3",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.08,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.08,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "output_family": "raster",
          "per_actual_generated_image": true,
          "quality": "standard",
          "units_per_usd": 1000
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.08",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "output_family": "raster",
              "per_actual_generated_image": true,
              "quality": "standard",
              "units_per_usd": 1000
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "output_family": "raster",
          "per_actual_generated_image": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.08",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "output_family": "raster",
              "per_actual_generated_image": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "identity_variant": "method output vector within recraft-v3 family; not automatic generic public_id assignment",
          "official_maker_model_id": "recraftv3_vector",
          "output_family": "vector",
          "per_actual_generated_image": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.16",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "identity_variant": "method output vector within recraft-v3 family; not automatic generic public_id assignment",
              "official_maker_model_id": "recraftv3_vector",
              "output_family": "vector",
              "per_actual_generated_image": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "output_family": "raster",
          "per_actual_generated_image": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.08",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "output_family": "raster",
              "per_actual_generated_image": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "identity_variant": "method output vector within recraft-v3 family; not automatic generic public_id assignment",
          "official_maker_model_id": "recraftv3_vector",
          "output_family": "vector",
          "per_actual_generated_image": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.16",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "identity_variant": "method output vector within recraft-v3 family; not automatic generic public_id assignment",
              "official_maker_model_id": "recraftv3_vector",
              "output_family": "vector",
              "per_actual_generated_image": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 4,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "output_family": "raster",
          "per_actual_generated_image": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.08",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "output_family": "raster",
              "per_actual_generated_image": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 5,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "identity_variant": "method output vector within recraft-v3 family; not automatic generic public_id assignment",
          "official_maker_model_id": "recraftv3_vector",
          "output_family": "vector",
          "per_actual_generated_image": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.16",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "identity_variant": "method output vector within recraft-v3 family; not automatic generic public_id assignment",
              "official_maker_model_id": "recraftv3_vector",
              "output_family": "vector",
              "per_actual_generated_image": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 6,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "output_family": "raster",
          "per_actual_generated_image": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.08",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "output_family": "raster",
              "per_actual_generated_image": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 7,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "identity_variant": "method output vector within recraft-v3 family; not automatic generic public_id assignment",
          "official_maker_model_id": "recraftv3_vector",
          "output_family": "vector",
          "per_actual_generated_image": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.16",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "identity_variant": "method output vector within recraft-v3 family; not automatic generic public_id assignment",
              "official_maker_model_id": "recraftv3_vector",
              "output_family": "vector",
              "per_actual_generated_image": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 8,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "output_family": "raster",
          "per_actual_generated_image": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.08",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "output_family": "raster",
              "per_actual_generated_image": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 9,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "identity_variant": "method output vector within recraft-v3 family; not automatic generic public_id assignment",
          "official_maker_model_id": "recraftv3_vector",
          "output_family": "vector",
          "per_actual_generated_image": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.16",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "identity_variant": "method output vector within recraft-v3 family; not automatic generic public_id assignment",
              "official_maker_model_id": "recraftv3_vector",
              "output_family": "vector",
              "per_actual_generated_image": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 10,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "adds_to_per_image_base": true,
          "applies_only_where_exact_maker_method_accepts_style_references": true,
          "once_per_request_not_per_output": true,
          "only_when_generating_with_style_reference_creates_style": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.010",
            "amount_unit": "usd_per_request",
            "conditions": {
              "adds_to_per_image_base": true,
              "applies_only_where_exact_maker_method_accepts_style_references": true,
              "once_per_request_not_per_output": true,
              "only_when_generating_with_style_reference_creates_style": true
            },
            "key": "style_creation_surcharge",
            "label": "style creation surcharge",
            "profile_index": 11,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "request"
          }
        ]
      }
    ],
    "public_id": "recraft/recraft-v3",
    "short": "ينشئ Recraft V3 صورًا فوتوغرافية ورسومًا توضيحية وتخطيطات جرافيكية بتكوين يراعي النص وعناصر تحكّم أسلوبية. وتلائم نسخه النقطية وSVG المستقلة الملصقات ومجموعات صور العلامات التجارية والأيقونات والتصاميم التي يجب أن تعمل فيها الصياغة والبنية البصرية معًا."
  },
  "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": "ينشئ Recraft V3 صورًا فوتوغرافية ورسومًا توضيحية وتخطيطات جرافيكية بتكوين يراعي النص وعناصر تحكّم أسلوبية. وتلائم نسخه النقطية وSVG المستقلة الملصقات ومجموعات صور العلامات التجارية والأيقونات والتصاميم التي يجب أن تعمل فيها الصياغة والبنية البصرية معًا.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "df0d2f656aa5c96dab72b4ae9b7176d880f5dbc0dd28ec501b6d50b140923724",
    "renderer_sha256": "081ee0fd5b6b1b60564b02c52d62547e01e922c8c0a16e91a0d055073e76a10e"
  },
  "sourceRevision": "919e8fcc68555e6577ad913a96311349b3f6f531741e1c26dfc82a3a12c0f509"
}
