النماذج

Recraft: Recraft V4

Markdown · JSON

Recraft: Recraft V4

يولّد Recraft V4 صورًا نقطية 1K مع تركيز على التكوين وعلاقات الألوان والاتجاه الإبداعي التفصيلي. يغطّي الرسوم التوضيحية والمشاهد الواقعية ومفاهيم التصميم الجرافيكي، بمدخلات أسلوبية اختيارية ومسار مستقل للتحويل من صورة إلى صورة.

عن النموذج

يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.

Recraft V4 النموذج النقطي القياسي في جيل V4 لدى Recraft. تركّز الجهة المصنّعة على الحكم التصميمي: تكوين متوازن وعلاقات لونية مترابطة وتفاصيل تدعم القصد البصري. ويمكنه العمل بالرسوم ذات الأسلوب الفني والمشاهد الفوتوغرافية ومفاهيم التصميم الجرافيكي. استخدمه عندما يتطلّب التوجيه صورة تجمع الاختيارات الجمالية ودقة اتباع الوصف، سواء في استكشاف مزاج من اتجاه قصير أو تحديد تخطيط مقصود بالتفصيل.

رمز النموذج المحدّد recraftv4. يسرد مرجع المنتج مخرجات نقطية 1K بصيغة WebP من دون فقدان أو PNG. الصورة المربعة 1024 × 1024 بكسل، و16:9 بأبعاد 1344 × 768، و2:3 بأبعاد 832 × 1280؛ وتستخدم النسب المدعومة الأخرى أبعادها الخاصة. V4 Pro الإصدار النقطي المستقل 2K، بينما يعيد V4 Vector وPro Vector ملفات SVG قابلة للتحرير. اختر نسخة V4 المحدّدة للتسليم المقصود بدلًا من جمع خصائص الإخراج المختلفة هذه.

يميّز دليل الجهة المصنّعة بين التوجيهات التفسيرية المختصرة والاتجاه الإبداعي المنظم. ويمكن لعبارة قصيرة ترك مجال لاستكشاف الشكل والمزاج والتأطير. ويمكن لوصف منظم تسمية العنصر والمكان والوضعية والمادة والعناصر الثانوية والإضاءة والتسلسل البصري. ولرسم سردي، صِف راكب دراجة يعبر جسرًا صغيرًا وأشكالًا جريئة مبسّطة وألوانًا دافئة هادئة وحركة واضحة من اليسار إلى اليمين. وقرارات المحتوى والتكوين هذه أكثر قابلية للتنفيذ من قائمة طويلة من صفات أسلوبية غير مترابطة.

يشمل مجال V4 الرسوم التوضيحية والصور المجسّمة والمرئيات الواقعية. ويوصي الدليل بوصف منطق الرسم للرسوم التوضيحية، والمادة والضوء والكاميرا والعمق لصورة ذات مظهر ثلاثي الأبعاد. وتبقى الأخيرة مرئية نقطية لا شبكة مجسّمة قابلة للتحرير. ولمفهوم ملصق أو تغليف، اذكر الكلمات الأساسية وأماكنها وكيف تتفاعل الصورة والطباعة. تبرز الجهة المصنّعة النص القصير والمتوسط الطول المقروء؛ افحص الصياغة والترتيب الفعليين في الصورة الناتجة قبل استخدامها.

يدعم التوليد توجيهات حتى 10,000 حرف وبذرة عشوائية ومخرجًا واحدًا إلى ستة مخرجات وألوانًا مفضّلة ولون خلفية مطلوبًا. ويمكن لأساليب مخصّصة متوافقة وصور مرجعية اختيارية توجيه المعالجة البصرية عبر مطابقة مرنة أو دقيقة. اختر مرجعًا نظيفًا أو مجموعة تنتمي إلى عالم بصري واحد، ثم اجعل التوجيه يصف العنصر الجديد والمشهد. ولا يُضمن التطابق اللوني بين المرجع والمخرجات، لذا أبقِ الألوان المطلوبة صريحة وقارن النتيجة بها. وللتوليد بأسلوب مرجعي، استخدم من صورة واحدة إلى عشر صور PNG أو JPG أو WebP، بإجمالي لا يتجاوز 64 MB وحجم أقل من 20 MB لكل صورة. ويحتاج كل مرجع إلى ضلع أقصر لا يقل عن 256 بكسل وضلع أطول لا يزيد على 4,096 بكسل ودقة لا تتجاوز 16 ميغابكسل. استخدم هذه المراجع أو أسلوبًا محفوظًا متوافقًا، لا كليهما.

تجمع عملية صورة إلى صورة الموثّقة صورة موجودة وتوجيهًا، مع قوة من 0 إلى 1 تحدّد مدى ابتعاد المخرج الجديد عن المصدر. ولا تقبل عناصر أسلوب V4 في تلك العملية. ويستبعد مرجع التوليد الحالي أيضًا أسماء الأساليب المنسّقة وnegative_prompt وtext_layout وartistic_level وno_text. جهّز وصفًا إيجابيًا للنتيجة المطلوبة وقيّم الصورة ضمن تكوينها المستهدف. يوفّر V4 القياسي تفسيرًا تصميميًا نقطيًا متخصّصًا، بإصدار وصيغة وحجم إخراج محدّدة. وللتحويل من صورة إلى صورة، قدّم PNG أو JPG أو WebP أو SVG بحجم أقل من 20 MB، ودقة لا تتجاوز 16 ميغابكسل، وكلا الضلعين بين 256 و4,096 بكسل.

Ailoot Ultra · الصور POST /v1/images/generations recraft/recraft-v4

recraft/recraft-v4

Recraft /recraft/recraft-v4

البداية

يولّد Recraft V4 صورًا نقطية 1K مع تركيز على التكوين وعلاقات الألوان والاتجاه الإبداعي التفصيلي. يغطّي الرسوم التوضيحية والمشاهد الواقعية ومفاهيم التصميم الجرافيكي، بمدخلات أسلوبية اختيارية ومسار مستقل للتحويل من صورة إلى صورة.

المدخلات المقبولة
النص · الصور
النتائج
الصور

متاح في Ailoot · المدخلات والطرائق

Ailoot Ultra · الصور POST /v1/images/generations
الإدخال
text, image
الإخراج
image
صيغة الإخراج
ملف صورة
الحقلالنوعالمتطلبالقيم والحدودالقيمة الافتراضية
الحقلmodelالنوعstringالمتطلبمطلوبالقيم والحدود
recraft/recraft-v4
القيمة الافتراضية—
الحقلpromptالنوعstringالمتطلبمطلوبالقيم والحدود
الحد الأدنى للطول: ⁦1⁩
القيمة الافتراضية—
الحقلnالنوعintegerالمتطلباختياريالقيم والحدود
الحد الأدنى: ⁦1⁩
الحد الأقصى: ⁦6⁩
القيمة الافتراضية—
الحقلaspect_ratioالنوعstringالمتطلباختياريالقيم والحدود
1:1, 4:3, 3:4, 16:9, 9:16, auto
القيمة الافتراضية—
الحقلinput_referencesالنوعarrayالمتطلباختياريالقيم والحدود
الحد الأدنى للعناصر: ⁦0⁩
الحد الأقصى للعناصر: ⁦1⁩
القيمة الافتراضية—
تركيبات مواد الإدخال

تحويل النص إلى صورة · مطلوب: prompt

reference_guided_image · مطلوب: prompt, actual image reference

معلمات الطريقة ودورة حياتها
المعلمةالمواصفات
المعلمةcontent_typeالمواصفاتapplication/json
المعلمةrequiredالمواصفاتmodel, prompt
المعلمةmaterial_typesالمواصفاتtext, image
المعلمةoptional_controlsالمواصفاتn, aspect_ratio, input_references
المعلمةnالمواصفات{"minimum":1,"maximum":6}
المعلمةreference_imagesالمواصفات{"minimum":0,"maximum":1,"source":"المحتوى الفعلي الذي يقدّمه العميل"}
المعلمةprovider_specific_optionsالمواصفاتفقط style/controls/text_layout ضمن قائمة السماح الدقيقة المحفوظة لنقطة النهاية؛ لا تُختلَق بنى.

الأسماء البديلة للطريقة: /v1/images

دورة الحياة: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · قيمة task_id الفعلية المُعادة أو سجل مكتبة الوسائط

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

يحافظ المثال الذي يتضمن موجّهاً نصياً فقط على البنية الرسمية ImageGenerationRequest.

احتفظ بكل صورة مُعادة وبالاستجابة كاملة؛ كمية المخرجات هي الكمية الفعلية وليست العدد n المطلوب.

الباقات

كيفية احتساب الرسوم النهائية

تقدّر التعرفات المعروضة التكلفة قبل التوليد. تُحسب الرسوم النهائية من التكلفة المسجّلة لعملية التوليد الأصلية. مدة المخرجات المقاسة والكميات المتوقعة ليست الكمية النهائية الخاضعة للفوترة.

مراجع التسعير لا تضيف خيارات للطلب. المعلمات المدعومة مذكورة للطريقة المحددة.

الوضع السريع
غير محدد عند اختيار الوضع السريع
الوضع المرن
غير محدد عند اختيار وضع flex
أقصى جهد للاستدلال
غير محدد عندما يُطبَّق الضبط الافتراضي default مع أقصى جهد للاستدلال

تعرفات تقديرية للمقارنة

الأسعار حسب الإعدادات

طابق كل رسم مع الشروط المعروضة. طبّق تعرفة واحدة لكل مجموعة من الإعدادات البديلة.

الإعداداتجدول التعرفةالكمية المتوقعةوحدة الفوترةالرسوم
الإعداداتالتعرفات الأساسية للرموزجدول التعرفةالتعرفة الأساسيةالكمية المتوقعة—وحدة الفوترة—الرسوم
الإدخال · رموز الإدخال · تقدير للمقارنة فقط — / 1K من الرموز
الإخراج · رموز الإخراج · تقدير للمقارنة فقط — / 1K من الرموز
الإدخال · قراءة ذاكرة التخزين المؤقت · تقدير للمقارنة فقط — / 1K من الرموز
الإدخال · الكتابة إلى ذاكرة التخزين المؤقت · تقدير للمقارنة فقط — / 1K من الرموز
الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة · تقدير للمقارنة فقط — / 1K من الرموز
الإعداداتUltraجدول التعرفة—الكمية المتوقعة—وحدة الفوترةلكل صورة مُخرجةالرسوم
الإخراج · صورة ناتجة · تقدير للمقارنة فقط $0.08 لكل صورة مُخرجة
الإعداداتتكلفة التوليد التقديريةجدول التعرفة—الكمية المتوقعةتقدير لتوليد واحدوحدة الفوترة—الرسوم
الإخراج · تكلفة التوليد التقديرية · تقدير للمقارنة فقط $0.08 تقدير قبل الإنشاء

هذا التقدير ليس رسومًا إضافية ولا تعرفة ثابتة لعملية التوليد المكتملة.

تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. كيفية عمل حجز المبلغ وتسوية الرسوم →

تفاصيل التعرفة المرجعية

لا تغيّر جداول التعرفة المرجعية على مستوى النموذج اختيار الطريقة أو عروض الأسعار أو الرسوم. وتستخدم الرسوم الفعلية تعرفات طريقة Ailoot المحددة.

إعدادات تسعير الصور

الأسعار حسب الإعدادات

الإعداداتشروط الفوترةالرسوم
الإعداداتصورة المخرجاتشروط الفوترةلم يُعلَن أي خيار تسعير بديل.الرسوم
الإخراج · صورة المخرجات $0.08 لكل صورة

تصف البنود المتكافئة الرسم نفسه؛ ولا تضيف رسماً ثانياً.

أمثلة للطلبات

Ailoot Ultra · الصور

curlPython SDKNode.js SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'recraft/recraft-v4', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        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"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        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"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

request={'model': 'recraft/recraft-v4', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "recraft/recraft-v4", "prompt": "a red panda astronaut floating in space, studio lighting"};
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  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";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");

استلام النتائج وحفظها

Ailoot Ultra · الصور

نزّل كل صورة مُرجعة أو احفظ محتواها بصيغة Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
الاحتفاظ بكل النتائج المكتملة

احفظ كل صورة مكتملة؛ نزّلها من كل URL مُرجع، أو فك ترميز محتواها بصيغة Base64.

احتفظ بكل عنصر بيانات وبالاستخدام كاملاً؛ واحفظ جميع الصور الفعلية المُعادة كأصول مملوكة لك. لا تختلق عناوين URL أو معرّفات.

عند الحاجة إلى التحقق من الاستجابة الأصلية

إذا تطلبت نتيجة توليد صورة أو تعديلها التحقق، فاحتفظ بقيمة operation_id/X-Client-Request-ID الأصلية ومعلومات النتيجة المُعادة. استعد النتائج الموجودة والمملوكة لك عبر مكتبة الوسائط باستخدام قيم task_id أو asset_id الفعلية. لا تُعِد إرسال طلب التوليد أو التعديل، ولا تنشئ عنوان URL للاستعلام الدوري من operation_id.

حقول الاستجابة
الحقلالنوع
الحقلcreatedالنوعinteger
الحقلdata[].urlالنوعstring
الحقلdata[].b64_jsonالنوعbase64 string
الحقلusageالنوعobject
الأخطاء والخطوات التالية
الاستجابةالشرطالخطوة التالية
الاستجابة⁦400⁩ · invalid_request_errorالشرطحقول مطلوبة أو تمثيل مادة أو قيمة معلمة غير صحيحةالخطوة التاليةصحّح الحقول المحددة قبل طلب إنشاء جديد.
الاستجابةserver_errorالشرطتشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحققالخطوة التاليةاحتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء.

الأسماء البديلة

الأسماء البديلة للنموذج

Ailoot Ultra recraft/recraft-v4

الأسماء البديلة لمسارات الطرائق

/v1/images

معرّفات النماذج ذات الصلة IDs

recraft/recraft-v4

FAQ · Recraft: Recraft V4
ما المدخلات والنتائج المتاحة؟

POST /v1/images/generations · recraft/recraft-v4: text, image → image

ما الحقول التي يستخدمها الطلب؟

POST /v1/images/generations · recraft/recraft-v4: model, prompt, n, aspect_ratio, input_references

ما الحدود المطبقة؟

POST /v1/images/generations · recraft/recraft-v4: n.minimum: 1; n.maximum: 6

المزيد من التفاصيل

اربط Ailoot بخدمة Claude Code أوOpenCode أوHermes أوتطبيقك.

الشركة ومحفظة مشاريعها

الشركة ومحفظة مشاريعها: ملايين العملاء؛ مبيعات بالمليارات شهريًا.

اشتر الرموز بخصم.

خصم اشتراك للعمل المنتظم. الرموز الترويجية حتى 50% على شراء الرموز.

الاشتراك
اختر خطة بخصم لطلباتك المنتظمة.
رمز خصم حتى 50%
أدخل الرمز عند الشراء. يعاد حساب السعر وفق العرض الساري.
المصروفات في السجل
يحفظ النموذج والرموز والمبلغ لكل طلب.

اختر اشتراكا · اعرض أسعار النماذج

اربط API بالمنتج الذي تبيعه.

SaaS والتطبيقات والبوتات وفق العرض واتفاقية ترخيص Ailoot. لإعادة البيع، اطلب ترخيص موزع.

تطبيق تجاري
أضف توليد النص والصور والفيديو والصوت إلى ميزات خدمتك المدفوعة.
ترخيص إعادة البيع
أرسل وصف المشروع وطريقة توفير الوصول. اطلب شروط استخدام وإعادة بيع مكتوبة.
المستندات على الموقع
العرض واتفاقية الترخيص وسياسة معالجة البيانات متاحة قبل الربط.

اطلب ترخيص إعادة بيع · العرض واتفاقية الترخيص