מודלים

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 תווים, בערך seed אקראי, באחד עד שישה פלטים, בצבעים מועדפים ובצבע רקע רצוי. סגנונות מותאמים תואמים ותמונות ייחוס אופציונליים יכולים להנחות את הטיפול החזותי באמצעות התאמה גמישה או מדויקת. בחרו ייחוס נקי או מערך השייך לעולם חזותי אחד, ואז תנו להנחיה לתאר את הנושא ואת הסצנה החדשים. התאמת צבע בין הייחוס לפלט אינה מובטחת, לכן הבהירו את הפלטה הנדרשת והשוו אליה את התוצאה. ליצירה בסגנון ייחוס, השתמשו באחת עד עשר תמונות 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
לא צוין כאשר נבחר מצב 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 שלה.

יש לשמור כל פריט נתונים ואת נתוני השימוש המלאים; יש להעביר לבעלותכם ולשמור את כל התמונות הממשיות שהוחזרו. אין להמציא כתובות או מזהים.

כשצריך לבדוק את התגובה המקורית

אם תוצאה של יצירת תמונה או עריכתה דורשת בדיקה, שמרו את 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. למכירה מחדש בקשו רישיון משווק.

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

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