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 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 · תמונות
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}/contentGET /v1/media/assetsGET /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
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