מודלים

Recraft: Recraft V4.1 Flash

Markdown · JSON

Recraft: Recraft V4.1 Flash

Recraft V4.1 Flash יוצר תמונות רסטר ב־1K מטקסט לצורך איטרציה חזותית מהירה. הוא תומך בצילום, בדיוקנאות, בסצנות מורכבות ובקונספטים ללוגו, עם פלט PNG או WebP ללא אובדן והעדפות צבע מפורשות.

על המודל

התיאור הזה מציג את יכולות המודל. הקלט, הפלט והאפשרויות הזמינים ב-Ailoot מפורטים בהמשך לפי השיטה שנבחרה.

Recraft V4.1 Flash הוא מודל הטקסט־לתמונה של Recraft לאיטרציה מהירה ולעבודה חזותית בנפח גבוה. היצרן מזהה צילום, דיוקנאות, אווירה, סצנות מורכבות, מדיה מעורבת וקונספטים ללוגו כשימושים חזקים. בריף כתוב הופך לתמונת רסטר שאפשר להשוות לכיוונים יצירתיים אחרים לפני פיתוח נכס סופי. Flash הוא דגם מסוים במשפחת V4.1, עם גודל פלט ובקרות נתמכות משלו.

הפלט המקורי הוא בדרגת תמונת הרסטר 1K של Recraft. בחרו את משטח העבודה לפי המיקום המיועד: איור אופקי לכותרת עמוד, דיוקן אנכי או חזות ריבועית לכרטיס תמציתי. פורמטי הפלט הם WebP ללא אובדן ו־PNG.

התחילו את הבריף בנושא המרכזי ובמטרה החזותית, ואז תארו מסגור, סביבה, תאורה ומדיום. לקונספט מוצר, הוראה שימושית היא: ״רדיו קומפקטי בצבע שמנת על שולחן אגוז, מבט קדמי של שלושה רבעים, אור חלון רך, צילום מערכתי רגוע, מרחב ריק נדיב משמאל.״ לאיור, הגדירו את שפת הצורות, הפלטה והיחס בין הרכיבים. הבהירו את הפרטים שמגדירים את הרעיון במקום להוסיף תארים שאינם קשורים. הקצאת ההנחיה המתועדת של Flash היא עד 10,000 תווים, כך שאפשר לתאר סצנה מפורטת כשהמשימה דורשת זאת.

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

Flash מפיק גרפיקת רסטר. קונספט לוגו יכול לעזור לבחור קווי מתאר, אווירה או סידור, בעוד נתיבים הניתנים לעריכה שייכים למודלי Vector בעלי השמות הנפרדים. ל־Flash גם אין וריאנט Pro. קו V4.1 המלא מספק את האפשרויות הנפרדות האלה כאשר עריכה וקטורית או פרטים ברזולוציה גבוהה יותר מרכזיים לתוצר. היצרן מתאר שלב ליטוש מאוחר יותר להעברת טיוטה שנבחרה לתמונה מפורטת יותר; השלב הזה הוא פעולה נפרדת, ולא גודל פלט מקורי אחר של Flash.

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

תוצאה מעשית מ־Flash היא כיוון חזותי נבחר עם בריף ברור, יחס ממדים מתאים וקובץ רסטר שימושי. השוו את הנושא, המסגור, הרקע והפרטים החשובים בגודל שבו התמונה תופיע. שמרו יחד את ההנחיה שהצליחה ואת הקובץ שנבחר כדי שהשלב היצירתי הבא ימשיך בכיוון הנבחר. איטרציה מהירה עוזרת לחקור את העיצוב; פלט וקטורי מקורי, התאמה לסגנון ייחוס והרזולוציה של מהדורת V4.1 אחרת נשארים בחירות מודל נפרדות.

Ailoot Ultra · תמונות POST /v1/images/generations recraft/recraft-v4.1-flash

recraft/recraft-v4.1-flash

Recraft /recraft/recraft-v4.1-flash

התחלה

Recraft V4.1 Flash יוצר תמונות רסטר ב־1K מטקסט לצורך איטרציה חזותית מהירה. הוא תומך בצילום, בדיוקנאות, בסצנות מורכבות ובקונספטים ללוגו, עם פלט PNG או WebP ללא אובדן והעדפות צבע מפורשות.

סוגי קלט נתמכים
טקסט
תוצאות
תמונות

זמין ב-Ailoot · קלט ושיטות

Ailoot Ultra · תמונות POST /v1/images/generations
סוגי קלט
text
סוגי פלט
image
פורמט פלט
קובץ תמונה
מספר פלטים
⁦1⁩ פלט
שדהסוגדרישהערכים ומגבלותברירת מחדל
שדהmodelסוגstringדרישהחובהערכים ומגבלות
recraft/recraft-v4.1-flash
ברירת מחדל—
שדהpromptסוגstringדרישהחובהערכים ומגבלות
אורך מזערי: ⁦1⁩
תנאים: הנחיה לא ריקה בקידוד UTF8. אין להמציא מגבלת תווים כללית של היצרן.
ברירת מחדל—
שדהnסוגintegerדרישהרשותערכים ומגבלות
⁦1⁩
ברירת מחדל⁦1⁩
שדהresponse_formatסוגstringדרישהרשותערכים ומגבלות
url, b64_json
ברירת מחדל—
שדהstreamסוגbooleanדרישהרשותערכים ומגבלות
false
ברירת מחדלfalse
שילובים של חומרי קלט

מטקסט לתמונה · נדרש: prompt

פרמטרים ומחזור חיים של השיטה
פרמטרמפרט
פרמטרcontent_typeמפרטapplication/json
פרמטרrequiredמפרטmodel, prompt
פרמטרmaterial_typesמפרטtext
פרמטרoptionalמפרטn, response_format, stream
פרמטרnמפרט1
פרמטרstreamמפרטfalse
פרמטרresponse_formatמפרטurl, b64_json
פרמטרreference_imagesמפרטfalse
פרמטרeditמפרטfalse
פרמטרoutput_format_optionalמפרט
פרמטרresolution_controlמפרטnull
פרמטרaspect_ratio_controlמפרטnull
פרמטרother_fieldsמפרטנדחה, למעט ניתוב ספק פנימי מדויק ומקובע

מחזור חיים: 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}

יצירת תמונה אחת מהנחיה.

יש לשמור כל פריט נתונים; url/b64_json הם קידודים של התוצאה.

תעריפים

אופן חישוב החיוב הסופי

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

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

מצב מהיר
לא צוין כאשר נבחר מצב מהיר
מצב Flex
לא צוין כאשר נבחר מצב flex
מאמץ חשיבה מרבי
לא צוין כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)

תעריפים משוערים להשוואה

מחירים לפי תצורה

התאימו כל חיוב לתנאים המוצגים. השתמשו בתעריף אחד לכל קבוצה של תצורות חלופיות.

תצורהטבלת תעריפיםכמות חזויהיחידת חיובחיוב
תצורהתעריפי בסיס לטוקניםטבלת תעריפיםתעריף בסיסכמות חזויה—יחידת חיוב—חיוב
קלט · טוקני קלט · אומדן להשוואה בלבד — / 1K טוקנים
פלט · טוקני פלט · אומדן להשוואה בלבד — / 1K טוקנים
קלט · קריאה מהמטמון · אומדן להשוואה בלבד — / 1K טוקנים
קלט · כתיבה למטמון · אומדן להשוואה בלבד — / 1K טוקנים
קלט · כתיבה למטמון, 1 שעה · אומדן להשוואה בלבד — / 1K טוקנים
תצורהUltraטבלת תעריפים—כמות חזויה—יחידת חיובלכל תמונה בפלטחיוב
פלט · פלט תמונה · אומדן להשוואה בלבד $0.014 לכל תמונה בפלט
תצורהעלות יצירה משוערתטבלת תעריפים—כמות חזויהאומדן ליצירה אחתיחידת חיוב—חיוב
פלט · עלות יצירה משוערת · אומדן להשוואה בלבד $0.014 אומדן לפני היצירה

אומדן זה אינו חיוב נוסף או תעריף קבוע עבור היצירה שהושלמה.

לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. איך פועלים שריון הסכום והסדרת החיוב →

פרטי תעריף הייחוס

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

תצורות תמחור תמונות

מחירים לפי תצורה

תצורהתנאי חיובחיוב
תצורהתמונת פלטתנאי חיובלא הוצהרה חלופת תמחור.חיוב
פלט · תמונת פלט $0.014 לכל תמונה

רישומים מקבילים מתארים את אותו חיוב; הם אינם מוסיפים עמלה שנייה.

דוגמאות לבקשות

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=json.loads('{"model": "recraft/recraft-v4.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"}')

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.1-flash', 'prompt': 'A lighthouse on a cliff, watercolor', 'n': 1, 'response_format': 'b64_json'}
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.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"};
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 שלה.

שמרו כל פריט נתונים. פענחו כל b64_json או הורידו את התוכן מכל URL חתום שהוחזר. בחרו סיומת קובץ לפי סוג ה־MIME/הבתים בפועל.

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

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

כינויים לנתיבי שיטות

השתמשו בנתיבי השיטות המוצגים למעלה.

מזהי מודלים קשורים IDs

recraft/recraft-v4.1-flash

FAQ · Recraft: Recraft V4.1 Flash
אילו קלטים ותוצאות זמינים?

POST /v1/images/generations · recraft/recraft-v4.1-flash: text → image

באילו שדות הבקשה משתמשת?

POST /v1/images/generations · recraft/recraft-v4.1-flash: model, prompt, n, response_format, stream

פרטים נוספים

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

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

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

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

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

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

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

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

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

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

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