מודלים

Recraft: Recraft V4 Pro

Markdown · JSON

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 /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 · תמונות

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-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}/content
  • GET /v1/media/assets
  • GET /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

recraft/recraft-v4-pro

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

פרטים נוספים

חברו Ailoot ל- Claude Code, OpenCode, Hermes או ליישום שלכם.

החברה ופורטפוליו הפרויקטים שלה

החברה ופורטפוליו הפרויקטים שלה: מיליוני לקוחות; מכירות בהיקף של מיליארדים מדי חודש.

קנו אסימונים בהנחה.

הנחת מנוי לעבודה קבועה. קודי הנחה עד 50% על רכישת אסימונים.

מנוי
בחרו מסלול עם הנחה לבקשות הקבועות שלכם.
קוד הנחה עד 50%
הזינו קוד ברכישה. המחיר יחושב מחדש לפי המבצע הפעיל.
הוצאות בהיסטוריה
המודל, האסימונים והסכום נשמרים לכל בקשה.

בחירת מנוי · מחירי מודלים

חברו API למוצר שאתם מוכרים.

SaaS, יישומים ובוטים לפי ההצעה והסכם הרישוי של Ailoot. למכירה מחדש בקשו רישיון משווק.

יישום מסחרי
שלבו יצירת טקסט, תמונות, וידאו ושמע בתכונות בתשלום של השירות שלכם.
רישיון למכירה מחדש
שלחו תיאור פרויקט ואופן מתן גישה. בקשו תנאי שימוש ומכירה מחדש בכתב.
מסמכים באתר
ההצעה, הסכם הרישוי ומדיניות עיבוד הנתונים זמינים לפני החיבור.

בקשת רישיון למכירה מחדש · ההצעה והסכם הרישוי