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 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 · الصور
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}/contentGET /v1/media/assetsGET /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
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