Recraft: Recraft V4 Pro
Recraft V4 Pro יוצר תמונות רסטר ב־2K לקומפוזיציות מפורטות, לפוטוריאליזם, לאיור ולעבודה יצירתית המיועדת לדפוס. הוא מהדורת V4 ברזולוציה הגבוהה יותר, עם בריפים טקסטואליים, קלטי סגנון אופציונליים ותהליך תמונה־לתמונה נפרד.
על המודל
התיאור הזה מציג את יכולות המודל. הקלט, הפלט והאפשרויות הזמינים ב-Ailoot מפורטים בהמשך לפי השיטה שנבחרה.
Recraft V4 Pro הוא מודל הרסטר ברזולוציה הגבוהה יותר במשפחת V4 של Recraft. V4 מתמקד בשיקול דעת חזותי, בקומפוזיציה מאוזנת, בצבע מגובש ובפרשנות זהירה לכיוון יצירתי. היצרן מייעד את Pro לפרטים עדינים יותר, לסצנות מורכבות ריאליסטיות יותר ולחזות הפקה משמעותית. השתמשו בו לאיור מפורט, לתמונה מערכתית, לקונספט כרזה או לנכס אחר שמרוויח מתוצאת רסטר גדולה יותר. הוא נשאר נפרד ממודל V4.1 המאוחר יותר ומפלט ה־SVG של V4 Pro Vector.
קוד היצרן המדויק הוא recraftv4_pro. הפלט המתועד הוא רסטר ב־2K בפורמט WebP ללא אובדן או PNG: 2048 × 2048 פיקסלים לריבוע, 2688 × 1536 ל־16:9 ו־1664 × 2560 ל־2:3. ליחסים נתמכים אחרים יש ממדים משלהם. בחרו יחס ממדים לפריסה המיועדת או גודל מותר מדויק; גודל פיקסלים שרירותי אינו חלק מחוזה היצירה המתועד. ל־V4 הרגיל יש פלט רסטר קטן יותר ב־1K, ואילו למודלים וקטוריים אין רזולוציית פיקסלים קבועה.
V4 יכול לפרש הנחיה קצרה לצורך חקר או הנחיה מובנית לתוצאה מבוקרת. לכיוון אמנותי מסוים, מדריך היצרן מתקדם מנושא וסביבה אל מסגור, מאפיינים, יחסים מרחביים, תאורה, עומק ואווירה. לתמונת מוצר מערכתית, בקשו צילום אנכי דרמטי של כיסא פיסולי, משטחי מתכת מוברשת, תאורת צד, רקע כהה שקט ומרחב מעל העצם לכותרת. ציון היחסים האלה מבהיר את הקומפוזיציה הרצויה יותר מבקשה כללית לתמונה יוקרתית.
הטווח היצירתי של המשפחה כולל איור סיפורי, סצנות פוטוריאליסטיות וחזות בעלת נפח עם רמזים לחומר ולתאורה. תוצאה שנראית תלת־ממדית היא עדיין תמונה, ולא סצנה תלת־ממדית הניתנת לעריכה. לכרזה גרפית, הגדירו את השכבות החזותיות ואת האינטראקציה ביניהן: רקע, איור או צילום, היררכיית כותרות וטקסט תומך. V4 מיועד לביטויים קצרים ובינוניים קריאים, אך יש לבדוק את האיות ואת ההיררכיה המוגמרים במקום להסיק אותם משם המודל.
תיעוד היצירה הנוכחי מתיר הנחיות של עד 10,000 תווים, אחד עד שישה פלטים, ערך seed אקראי ובקרות צבע מועדף וצבע רקע. סגנונות מותאמים אופציונליים או תמונות ייחוס תואמות יכולים להנחות את המראה בהתאמה גמישה או מדויקת. המודל אינו מקבל את בקרות V3 הישנות negative_prompt, סגנונות שנבחרו מראש, text_layout, artistic_level או no_text. תארו את התמונה הסופית הרצויה בהנחיה החיובית והבהירו את דרישות הנושא, הפריסה והצבע. ליצירה בסגנון ייחוס, השתמשו באחת עד עשר תמונות PNG, JPG או WebP, לא יותר מ־64 MB בסך הכול ופחות מ־20 MB לכל אחת. לכל ייחוס דרושה צלע קצרה של לפחות 256 פיקסלים, צלע ארוכה שאינה עולה על 4,096 פיקסלים ורזולוציה שאינה עולה על 16 מגה־פיקסלים. השתמשו בייחוסים האלה או בסגנון שמור תואם, ולא בשניהם יחד.
Recraft מתעדת פעולת תמונה־לתמונה נפרדת ל־V4. היא משלבת תמונה קיימת והנחיה עם עוצמה בין 0 ל־1 לשליטה במידת השינוי, ואינה מקבלת בקרות סגנון מותאם של V4 בפעולה הזו. הכינו את המקור במסגרת מגבלות קלט התמונה של היצרן וציינו את המאפיינים שצריכים לעבור לתוצאה החדשה. לנכס סופי גדול יותר, בדקו פרטים עדינים, חיתוך וכיתוב בגודל המיועד. פרטי הרסטר הנוספים של Pro תומכים בבדיקה הזו, והתמונה נשארת פרשנות שנוצרה לבריף היצירתי שסופק. לתמונה־לתמונה, ספקו PNG, JPG, WebP או SVG בגודל קטן מ־20 MB, לא יותר מ־16 מגה־פיקסלים, עם שתי צלעות בין 256 ל־4,096 פיקסלים.
Ailoot Ultra · תמונות POST /v1/images/generations recraft/recraft-v4-pro
recraft/recraft-v4-proהתחלה
Recraft V4 Pro יוצר תמונות רסטר ב־2K לקומפוזיציות מפורטות, לפוטוריאליזם, לאיור ולעבודה יצירתית המיועדת לדפוס. הוא מהדורת V4 ברזולוציה הגבוהה יותר, עם בריפים טקסטואליים, קלטי סגנון אופציונליים ותהליך תמונה־לתמונה נפרד.
- סוגי קלט נתמכים
- טקסט · תמונות
- תוצאות
- תמונות
זמין ב-Ailoot · קלט ושיטות
Ailoot Ultra · תמונות POST /v1/images/generations
- סוגי קלט
text,image- סוגי פלט
image- פורמט פלט
- קובץ תמונה
| שדה | סוג | דרישה | ערכים ומגבלות | ברירת מחדל |
|---|---|---|---|---|
שדהmodel | סוגstring | דרישהחובה | ערכים ומגבלות recraft/recraft-v4-pro | ברירת מחדל— |
שדה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
פרמטרים ומחזור חיים של השיטה
| פרמטר | מפרט |
|---|---|
פרמטרcontent_type | מפרטapplication/json |
פרמטרrequired | מפרטmodel, prompt |
פרמטרmaterial_types | מפרטtext, image |
פרמטרoptional_controls | מפרטaspect_ratio, n, input_references |
פרמטרexact_supported_parameters | מפרט{"aspect_ratio":{"type":"enum","values":["1:1","4:3","3:4","16:9","9:16","auto"]},"n":{"type":"range","min":1,"max":6},"input_references":{"type":"range","min":0,"max":1}} |
פרמטרreference_material_rule | מפרטרק תמונות עזר ממשיות של הלקוח; חלים עליהן התנאים של נקודת הקצה אצל הספק. |
כינויים לשיטה: /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}
יש להשתמש במודל המדויק ובשדות הקלט המתועדים.
יש לשמור את התגובה המלאה, כל פלט ממשי ואת המזהים המקוריים שהוחזרו.
תעריפים
אופן חישוב החיוב הסופי
התעריפים המוצגים מספקים אומדן לעלות לפני היצירה. החיוב הסופי מחושב לפי העלות שנרשמה עבור היצירה המקורית. משך הפלט שנמדד והכמויות החזויות אינם הכמות הסופית לחיוב.
מידע תעריפים אינו מוסיף אפשרויות לבקשה. הפרמטרים הנתמכים מפורטים בשיטה שנבחרה.
- מצב מהיר
- לא צוין כאשר נבחר מצב מהיר
- מצב Flex
- לא צוין כאשר נבחר מצב flex
- מאמץ חשיבה מרבי
- לא צוין כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)
תעריפים משוערים להשוואה
מחירים לפי תצורה
התאימו כל חיוב לתנאים המוצגים. השתמשו בתעריף אחד לכל קבוצה של תצורות חלופיות.
| תצורה | טבלת תעריפים | כמות חזויה | יחידת חיוב | חיוב |
|---|---|---|---|---|
| תצורהתעריפי בסיס לטוקנים | טבלת תעריפיםתעריף בסיס | כמות חזויה— | יחידת חיוב— | חיוב קלט · טוקני קלט · אומדן להשוואה בלבד — / 1K טוקנים פלט · טוקני פלט · אומדן להשוואה בלבד — / 1K טוקנים קלט · קריאה מהמטמון · אומדן להשוואה בלבד — / 1K טוקנים קלט · כתיבה למטמון · אומדן להשוואה בלבד — / 1K טוקנים קלט · כתיבה למטמון, 1 שעה · אומדן להשוואה בלבד — / 1K טוקנים |
| תצורהUltra | טבלת תעריפים— | כמות חזויה— | יחידת חיובלכל תמונה בפלט | חיוב פלט · פלט תמונה · אומדן להשוואה בלבד $0.5 לכל תמונה בפלט |
| תצורהעלות יצירה משוערת | טבלת תעריפים— | כמות חזויהאומדן ליצירה אחת | יחידת חיוב— | חיוב פלט · עלות יצירה משוערת · אומדן להשוואה בלבד $0.5 אומדן לפני היצירה אומדן זה אינו חיוב נוסף או תעריף קבוע עבור היצירה שהושלמה. |
לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. איך פועלים שריון הסכום והסדרת החיוב →
פרטי תעריף הייחוס
טבלאות הייחוס ברמת המודל אינן משנות את בחירת השיטה, הצעות המחיר או החיובים. החיובים בפועל משתמשים בתעריפי שיטת Ailoot שנבחרה.
תצורות תמחור תמונות
מחירים לפי תצורה
| תצורה | תנאי חיוב | חיוב |
|---|---|---|
| תצורהתמונת פלט | תנאי חיובלא הוצהרה חלופת תמחור. | חיוב פלט · תמונת פלט $0.5 לכל תמונה רישומים מקבילים מתארים את אותו חיוב; הם אינם מוסיפים עמלה שנייה. |
דוגמאות לבקשות
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-pro', '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-pro', '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-pro", "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 שלה.
יש לשמור כל פריט נתונים ואת נתוני השימוש המלאים; יש להעביר לבעלותכם ולשמור את כל התמונות הממשיות שהוחזרו. אין להמציא כתובות או מזהים.
כשצריך לבדוק את התגובה המקורית
אם תוצאה של יצירת תמונה או עריכתה דורשת בדיקה, שמרו את 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 |
כינויים
כינויים למודל
Ailoot Ultra recraft/recraft-v4-pro
כינויים לנתיבי שיטות
/v1/images
מזהי מודלים קשורים IDs
FAQ · Recraft: Recraft V4 Pro
- אילו קלטים ותוצאות זמינים?
POST /v1/images/generations·recraft/recraft-v4-pro:text,image→image- באילו שדות הבקשה משתמשת?
POST /v1/images/generations·recraft/recraft-v4-pro:model,prompt,n,aspect_ratio,input_references- אילו מגבלות חלות?
POST /v1/images/generations·recraft/recraft-v4-pro:n.minimum:1;n.maximum:6