ערכות
יצירה, עדכון, ייבוא, סידור ומחיקה של הערכות השמורות שלכם ב-REST API, קריאת קטלוג הערכות המובנות הציבורי עם תמונות דוגמה, וניהול המועדפים.
ה-API של הערכות קורא וכותב את הערכות השמורות שלכם, את התיקיות שלהן ואת המועדפים שלכם, וקורא את קטלוג הערכות המובנות של כל סוג רכיב. ערכה היא תצורת רכיב עם שם (למשל מודל, פרומפט, יחס גובה־רוחב ואיכות) שמחילים על רכיב בצעד אחד. השדה data של ערכה הוא תצורת הרכיב שנשמרה: כדי להחיל את הערכה, מזגו אותו לתוך הנתונים של רכיב.
הנתיבים עובדים בכל מהדורה. הם מקבלים אסימון Bearer: אסימון API אישי (ndr_…), אסימון של אפליקציית OAuth או אסימון הסשן שלכם. אסימון של אפליקציית OAuth צריך את presets:read לקריאה ואת assets:write לכתיבה. קטלוג הערכות המובנות, GET /v1/node-presets/factory, לא דורש אסימון בכלל. אסימון אישי שמוגבל לתהליכים מסוימים לא יכול לגשת לערכות שלכם (403 forbidden), אבל קורא את הקטלוג כמו כל אחד. ראו את דף ה-API אימות ואת הדף ערכות, שמסביר מה ערכות עושות בעורך.
נקודות קצה
| שיטה | נתיב | מה היא עושה |
|---|---|---|
GET | /v1/node-presets | הערכות שלכם, מהחדש לישן. אפשר לסנן לפי nodeType. |
GET | /v1/node-presets/factory | קטלוג הערכות המובנות של סוג רכיב אחד. הפרמטר nodeType נדרש. לא צריך אסימון. |
GET | /v1/node-presets/favorites | המזהים של הערכות שסימנתם בכוכב, לסוג רכיב אחד. הפרמטר nodeType נדרש. |
GET | /v1/node-preset-groups | התיקיות והמקטעים של הערכות שלכם. אפשר לסנן לפי nodeType. |
POST | /v1/node-presets | יצירת ערכה. |
PATCH | /v1/node-presets/:id | שינוי השם של ערכה, החלפת הנתונים שלה, העברה שלה או קביעת התמונה שלה. |
DELETE | /v1/node-presets/:id | מחיקת ערכה והסרתה מהמועדפים. |
POST | /v1/node-presets/import | יצירה של עד 500 ערכות בבת אחת. |
POST | /v1/node-presets/reorder | קביעת מיקומים והעברת ערכות בין תיקיות. |
POST | /v1/node-presets/favorites | סימון ערכה בכוכב. |
DELETE | /v1/node-presets/favorites | הסרת כוכב. |
POST | /v1/node-preset-groups | יצירת תיקייה או מקטע. |
PATCH | /v1/node-preset-groups/:id | שינוי השם או המיקום של תיקייה. |
DELETE | /v1/node-preset-groups/:id | מחיקת תיקייה. הערכות שבה יוצאות ממנה, ואף אחת מהן לא נמחקת. |
קריאת הערכות שלכם
הנתיב GET /v1/node-presets מחזיר { data: NodePreset[] }, מהחדש לישן. שלחו nodeType, למשל generate-image, כדי לקבל רק את הערכות של סוג רכיב אחד.
curl "https://app.nodaro.ai/v1/node-presets?nodeType=generate-image" \
-H "Authorization: Bearer $NODARO_API_KEY"import { createClient, StaticTokenAuth } from '@nodaro/sdk'
const client = createClient({
baseUrl: 'https://app.nodaro.ai',
auth: new StaticTokenAuth(process.env.NODARO_API_KEY!),
})
const presets = await client.presets.list('generate-image')
const cinematic = presets.find((p) => p.name === 'Cinematic Portrait')
const groups = await client.presets.listGroups('generate-image'){
"data": [
{
"id": "7e2c4a9f-1b3d-4f6a-8c5e-2d9b7a1f3c4e",
"nodeType": "generate-image",
"name": "Cinematic Portrait",
"description": "Warm key light, shallow depth of field",
"data": {
"provider": "nano-banana-pro",
"aspectRatio": "3:4",
"resolution": "2K",
"prompt": "cinematic portrait, warm key light, 85mm, shallow depth of field"
},
"groupId": null,
"tags": ["portrait"],
"sortOrder": 0,
"minReferences": 0,
"needsImage": false,
"previewUrl": null,
"createdAt": "2026-09-14T08:12:40Z",
"updatedAt": "2026-09-14T08:12:40Z"
}
]
}| שדה | מה יש בו |
|---|---|
id | ה-uuid של הערכה. |
nodeType | סוג הרכיב שהערכה שייכת לו. |
name, description | השם של הערכה ותיאור אופציונלי. |
data | תצורת הרכיב שנשמרה. את זה מחילים. |
groupId | התיקייה שהערכה נמצאת בה, מתוך GET /v1/node-preset-groups, או null. |
tags, sortOrder | התגיות שלכם והמיקום של הערכה ברשימה שלה. |
minReferences | מכמה תמונות ייחוס מחוברות הערכה עובדת. הערך 0 פירושו אף תמונה. |
needsImage | הערך true כש-minReferences הוא 1 לפחות. |
previewUrl | עותק משלה של תמונת הדוגמה שנתתם לערכה, או null. |
createdAt, updatedAt | חותמות זמן. בכתיבה, שלחו את updatedAt בחזרה בתור expectedUpdatedAt. |
תמונות שערכה עובדת מהן
הריצו ערכה שה-minReferences שלה גדול מ-0 כשמחוברות אליה תמונות ייחוס במספר הזה. בלעדיהן, הפרומפט של הערכה מתאר תמונה שלא קיימת. כשמשתמשים ב-presetId ב-POST /v1/generate-image, שלחו את התמונות ב-referenceImageUrls.
הערכות שבתיקיות גיליון ייחוס, שחקנים ועקביות, עריכה לפי שם, פרטיות פנים, עריכות, שינויי פורטרט ונושא מסוגנן צריכות תמונה אחת, והערכה רשת שחקנים מלאה צריכה שתיים. כך גם כל תבנית פרומפט שמשתמשת ב-{image:N}: מספר התמונות שלה הוא ה-N הגבוה ביותר. ערכה משלכם נספרת באותה דרך, לפי {image:N} ו-{image:N:label} בפרומפט שלה, בטקסט לפני ואחרי הפרומפט ובפרומפט השלילי.
קריאת קטלוג הערכות המובנות
הנתיב GET /v1/node-presets/factory?nodeType=generate-image מחזיר { data: [...] }, הערכות שמגיעות עם Nodaro לסוג הרכיב הזה. כל רשומה היא { id, name, description?, group?, groupKind?, section?, platforms?, data, minReferences, needsImage, previewUrl, previewSrcSet? }. מזהה של ערכה מובנית הוא מהצורה <node-type>/<name>, למשל generate-image/character-board או generate-video/orbit-360.
הקטלוג לא דורש אסימון. הוא זהה לכולם ואין בו נתוני משתמשים, ולכן אפליקציית לקוח יכולה להציג אותו למבקרים שלא התחברו, ולבקש מהם להתחבר רק כשהם יוצרים משהו. התגובה נשלחת עם Cache-Control: public, max-age=300, ואסימון לא תקין או שפג תוקפו שנשלח עם הבקשה לא נלקח בחשבון.
ה-previewUrl של ערכה מובנית הוא תמונת דוגמה בשרת שפניתם אליו, במבנה https://<host>/preset-previews/<nodeType>/<slug>.<hash>.webp, או null כל עוד אין לערכה תמונה. שם הקובץ משתנה בכל פעם שהתמונה משתנה, ולכן אפשר לשמור כתובת במטמון לתמיד.
# The presets that need a photo, and their example pictures. No token needed.
curl -s "https://app.nodaro.ai/v1/node-presets/factory?nodeType=generate-image" \
| jq '.data[] | select(.needsImage) | {id, minReferences, previewUrl}'const { data } = await client.presets.listFactory('generate-video')
const orbit = data.find((p) => p.id === 'generate-video/orbit-360')איפה ערכה מובנית מתויקת
groupהוא התיקייה, כגון"YouTube","Shorts · TikTok","Social & Ads","Business","Life & Events","Layout"או"Text".section, כשהוא קיים, הוא כותרת משנה בתוך התיקייה: נושא של יוטיוב, כגון"Finance & Crypto", או"Instagram feed".platforms, כשהוא קיים, הוא הפלטפורמות שבהן התוצאה מיועדת להתפרסם, מהמתאימה ביותר והלאה:["TikTok", "Reels", "Shorts"],["LinkedIn"]או["Print", "Etsy"].
בערכה בלי כותרת משנה או בלי פלטפורמה, כגון ערכת מראה, ערכת פריסה או ערכה מתיקייה של אולפן, השדה חסר. קבצו וסננו לפי section ו-platforms רק כשהם קיימים.
גדלי התמונות
לתמונה של ערכה מובנית יש שני גדלים: תמונת האריח ב-previewUrl, ברוחב 512 פיקסלים, ותמונה למסך מלא ברוחב של עד 1024 פיקסלים, תחת /preset-previews/1024/…. השדה previewSrcSet מציין את שתיהן עם הרוחב שלהן בפועל, מוכן ל-<img srcset>, כך שהדפדפן בוחר לפי המקום שיש לו:
<img src="{previewUrl}" srcset="{previewSrcSet}" sizes="(min-width: 900px) 80vw, 100vw" alt="{name}">השדה previewSrcSet מופיע רק בערכה ששני הקבצים קיימים בה, ואף פעם לא בערכה משלכם. הרשימה ב-MCP משמיטה אותו.
החלת ערכה
כדי ליצור תמונה אחת עם ערכה, שלחו את המזהה שלה בתור presetId ב-POST /v1/generate-image. השרת מחיל את הערכה כמו שהעורך מחיל אותה על רכיב יצירת תמונה, והשדות שאתם שולחים גוברים עליה. ראו בדף ה-API החלת ערכה ברכיב יצירת תמונה.
כדי להחיל ערכה בתהליך, מזגו את ה-data שלה לתוך הנתונים של הרכיב כשאתם יוצרים או מעדכנים את התהליך. ערכים שאתם קובעים ברכיב אחרי המיזוג גוברים.
const node = {
id: 'portrait-1',
type: 'generate-image',
data: { ...cinematic.data, prompt: 'a lighthouse keeper at dawn' },
}ערכה יכולה לכלול גם promptPrefix ו-promptSuffix: טקסט שמתווסף לפני הפרומפט ואחריו כשהרכיב רץ. ראו את הדף טקסט לפני ואחרי הפרומפט.
דרך MCP, מצאו ערכה עם הכלי list_node_presets וקבלו אותה עם הכלי get_node_preset, או שלחו את ה-presetId שלה ישירות לכלי יצירה כגון generate_image. השרת מחיל אז את הערכה, עוטף את הפרומפט שלכם בטקסט שהערכה מוסיפה לפניו ואחריו, ונותן לכל שדה שאתם שולחים במפורש לגבור עליה. ראו את מדריך כלי ה-MCP.
מועדפים
המועדפים מציגים את הערכות שסימנתם בכוכב בראש רשימת הערכות בעורך. מזהה במועדפים הוא מזהה של ערכה מובנית או ה-uuid של ערכה שלכם. באסימון של אפליקציית OAuth, הקריאה דורשת presets:read, והכתיבה דורשת assets:write.
| שיטה | נתיב | שאילתה או גוף | מה חוזר |
|---|---|---|---|
GET | /v1/node-presets/favorites | nodeType (נדרש) | { data: string[] }, מהחדש לישן |
POST | /v1/node-presets/favorites | גוף הבקשה { nodeType, presetId } | { data: { success: true } }. הוספה כפולה למועדפים לא משנה כלום. |
DELETE | /v1/node-presets/favorites | nodeType ו-presetId (שניהם נדרשים) | { data: { success: true } }. הסרה כפולה מהמועדפים לא משנה כלום. |
מזהים של ערכות מובנות כוללים /, ולכן קודדו את presetId בקידוד URL במחרוזת השאילתה של DELETE:
curl -X DELETE "https://app.nodaro.ai/v1/node-presets/favorites?nodeType=generate-image&presetId=generate-image%2Fcharacter-board" \
-H "Authorization: Bearer $NODARO_API_KEY"יצירה ועריכה של ערכות
| שיטה | נתיב | גוף או שאילתה | מה היא עושה |
|---|---|---|---|
POST | /v1/node-presets | { nodeType, name, description?, data, groupId?, tags?, sortOrder?, previewUrl? } | יצירת ערכה. התגובה היא 201 עם הערכה. |
PATCH | /v1/node-presets/:id | כל אחד מ-name, description, data, groupId, tags, sortOrder ו-previewUrl, ועוד expectedUpdatedAt אופציונלי | עדכון השדות שאתם שולחים. הערך previewUrl: null מסיר את התמונה. |
DELETE | /v1/node-presets/:id | פרמטר שאילתה אופציונלי expectedUpdatedAt | מחיקת ערכה והסרתה מהמועדפים. |
POST | /v1/node-presets/import | { presets: [{ nodeType, name, description?, data, previewUrl? }] }, עד 500 | יצירה של ערכות רבות בבת אחת. מחזירה { data: { imported } }. |
POST | /v1/node-presets/reorder | { groups?: [{ id, sortOrder }], presets?: [{ id, groupId?, sortOrder }] } | קביעת מיקומים והעברת ערכות בין תיקיות. מחזירה { data: { ok: true } }. |
POST | /v1/node-preset-groups | { nodeType, name, kind?, sortOrder? } | יצירת folder (ברירת המחדל, תיקייה שאפשר לקפל) או section (כותרת שלא מתקפלת). |
PATCH | /v1/node-preset-groups/:id | { name?, sortOrder? } | שינוי השם או המיקום של תיקייה. |
DELETE | /v1/node-preset-groups/:id | אין | מחיקת תיקייה. הערכות שבה יוצאות ממנה. |
# Save a preset of your own, with one of your images as its picture
curl -s -X POST "https://app.nodaro.ai/v1/node-presets" \
-H "Authorization: Bearer $NODARO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"nodeType": "generate-image", "name": "Studio portrait", "data": {"provider": "gpt-image-2", "aspectRatio": "3:4", "prompt": "{image:1:person}, studio portrait, soft key light"}, "previewUrl": "https://cdn.nodaro.ai/images/<jobId>.png"}'
# Rename it, refusing if it changed since you read it
curl -s -X PATCH "https://app.nodaro.ai/v1/node-presets/<presetId>" \
-H "Authorization: Bearer $NODARO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Studio portrait (warm)", "expectedUpdatedAt": "<updatedAt>"}'const preset = await client.presets.create({
nodeType: 'generate-image',
name: 'Studio portrait',
data: { provider: 'gpt-image-2', aspectRatio: '3:4', prompt: '{image:1:person}, studio portrait' },
})
preset.needsImage // true: the prompt names {image:1}
await client.presets.addFavorite({ nodeType: 'generate-image', presetId: preset.id })ב-CLI זמינות אותן פעולות כתיבה: הפקודות nodaro presets create, update, delete, import, export, favorites, favorite, unfavorite ו-nodaro presets groups עם create, update ו-delete. דרך MCP, הכלים save_node_preset, delete_node_preset ו-favorite_node_preset מנהלים ערכות.
כללים לכתיבה
- השמות ייחודיים לכל סוג רכיב, בלי הבדל בין אותיות גדולות לקטנות. נתיבי היצירה והעדכון מחזירים
409 name_taken. ייבוא שומר את שתי הערכות, ונותן לחדשה את השם… (imported 2)(יובא 2). - הגודל של
dataהוא 64 KB לכל היותר. מפתחות של זמן ריצה, כגון תוצאות, מזהי משימות והתווית של הרכיב, מוסרים. על ערכה מיובאת שלא נשאר בה כלום מדלגים. groupIdחייב להיות אחת מהתיקיות שלכם, אחרת הכתיבה נדחית עם400 invalid_group.previewUrlחייב להיות אחת מהתמונות שלכם ב-Nodaro: העלאה או תוצאה של יצירה שהסתיימה, בפורמט png, jpg, webp, gif או avif. הקובץ חייב להיות קיים כבר, ולכן קבעו את השדה אחרי שהמשימה שיוצרת את התמונה הסתיימה. כל ערך אחר נדחה עם400 validation_error, עם שם השדה, למשלpresets[3].previewUrlבייבוא.- הערכה שומרת עותק משלה של התמונה. ה-
previewUrlשבתגובה הוא הכתובת של העותק, לא הכתובת ששלחתם, ולכן מחיקת המקור מהספרייה שלכם אף פעם לא שוברת את הערכה. expectedUpdatedAtגורם לכך שעדכון או מחיקה נדחים עם409 conflictאם הערכה השתנתה מאז שקראתם אותה. קבלו אותה מחדש לפני שאתם מנסים שוב.- ערכה או תיקייה שלא שייכות לכם, או מזהה שהוא לא uuid: התשובה היא
404 not_found. - בכל חשבון יכולות להיות עד 5,000 ערכות, 500 תיקיות ו-2,000 מועדפים. מעבר לזה, יצירה, ייבוא או הוספה למועדפים נדחים עם
409 limit_reachedולא כותבים כלום. ייבוא שלא נכנס במלואו לא מייבא אף ערכה. - סידור מחדש אחד מזיז עד 500 ערכות ו-100 תיקיות כשהוא נשלח ממפתח API או מאפליקציית OAuth. סידור גדול יותר נדחה עם
400 validation_error: שלחו את השאר בקריאה נוספת. - פעולות הכתיבה מוגבלות ל-60 בדקה לכל סט של פרטי גישה, והייבואים ל-10 בדקה. מעבר לזה, הנתיב מחזיר
429 rate_limit_exceeded.
ערכות רינדור של Recast
אותה ספרייה שומרת הגדרות יצירה של Recast תחת מרחב השמות recast-render. מרחב השמות הזה הוא לא סוג רכיב: כל ערכה בו שומרת סט שלם של הגדרות רינדור של Recast, כדי שתוכלו להשתמש בהן שוב. הערכות המובנות הן לקריאה בלבד, והערכות שלכם נשארות פרטיות לכם בכל מכשיר.
ה-data של ערכת recast-render הוא תמונת מצב מלאה, עם מבנה קשיח:
{
"schemaVersion": 1,
"provider": "seedance-2-5",
"resolution": "480p",
"segmentSec": "max",
"renderMethod": "extend",
"anchorMode": "upfront",
"citeStyle": "bare",
"promptTiming": true,
"textOnly": false,
"interactive": true,
"anchorGates": false,
"musicGates": true,
"musicSource": "generated"
}| שדה | ערכים מותרים |
|---|---|
segmentSec | max, scenes-max (ארוך) או scenes (קצר). |
resolution | 480p, 720p, 1080p או 4k. |
renderMethod | extend או keyframes. |
anchorMode | upfront, progressive או none. |
citeStyle | bare או rich. |
musicSource | generated, original או upload. |
promptTiming, textOnly, interactive, anchorGates, musicGates | true או false. |
כותבים אותן באותם נתיבים כמו כל ערכה. הן לא צריכות תמונות ואין להן תמונת דוגמה (minReferences: 0, previewUrl: null). שדות לא מוכרים וגרסאות סכמה לא מוכרות נדחים ביצירה, בעדכון ובייבוא. תמונת המצב אף פעם לא כוללת מדיית מקור, ייחוסים של הליהוק, פרומפטים, רצועות שהועלו, אישורי זכויות או תוצאות. החלת ערכה משנה את ההגדרות ומרעננת את אומדן המחיר; היא אף פעם לא מתחילה יצירה. בחירה במוזיקה המקורית או במוזיקה שהועלתה משתמשת במדיה של פרויקט היעד עצמו. לפני שאתם יוצרים, בדקו מה המודל שבחרתם יודע לעשות כרגע.
שגיאות
| סטטוס | קוד | משמעות |
|---|---|---|
400 | validation_error | השדה nodeType חסר במקום שבו הוא נדרש, או ששדה לא תקין. |
400 | invalid_group | השדה groupId הוא לא אחת מהתיקיות שלכם. |
401 | unauthorized | האסימון חסר, לא תקין או מבוטל. |
403 | forbidden | אסימון אישי שמוגבל לתהליכים מסוימים ביקש את הערכות שלכם. |
403 | insufficient_scope | לאסימון של אפליקציית OAuth אין presets:read לקריאה, או assets:write לכתיבה. |
404 | not_found | הערכה או התיקייה לא שייכות לכם, או שהמזהה הוא לא uuid. |
409 | name_taken | כבר יש לכם ערכה בשם הזה לסוג הרכיב הזה. |
409 | conflict | הערכה השתנתה מאז expectedUpdatedAt. קבלו אותה מחדש. |
409 | limit_reached | החשבון הגיע למגבלה של הערכות, התיקיות או המועדפים שלו. |
429 | rate_limit_exceeded | יותר מ-60 פעולות כתיבה בדקה, או יותר מ-10 ייבואים בדקה. |
שאלות נפוצות
האם אפשר ליצור או לערוך ערכות עם אסימון API?
כן. אסימון API אישי, או אסימון של אפליקציית OAuth עם ההרשאה assets:write, יכולים ליצור, לעדכן, למחוק, לייבא ולסדר מחדש ערכות, ולנהל תיקיות ומועדפים.
האם צריך אסימון כדי לקרוא את קטלוג הערכות המובנות?
לא. הנתיב GET /v1/node-presets/factory ציבורי. אין בו נתוני משתמשים, ולכן אפליקציה יכולה להציג את הקטלוג, עם תמונות הדוגמה, למבקרים שלא התחברו.
איך מחילים ערכה מקוד?
כדי להחיל ערכה מקוד, שלחו את השדה presetId ב-POST /v1/generate-image, והשרת מחיל את הערכה כמו שהעורך מחיל אותה. בתהליך, מזגו את האובייקט data של הערכה לתוך השדה data של הרכיב.
מה המשמעות של minReferences בערכה?
השדה minReferences של ערכה הוא מספר תמונות הייחוס המחוברות שהערכה עובדת מהן, והשדה needsImage הוא true כשהמספר הזה הוא לפחות אחד. הריצו ערכה כזו כשמחוברות אליה תמונות ייחוס במספר הזה.
אילו הרשאות OAuth צריכים נתיבי הערכות?
בנתיבי הערכות, קריאה של הערכות שלכם דורשת presets:read, וכתיבה דורשת assets:write. קטלוג הערכות המובנות לא דורש הרשאה. אסימוני API אישיים ואסימוני סשן לא צריכים הרשאות.
דפים קשורים
ערכות
טקסט לפני ואחרי הפרומפט
רכיבים
ה-API של Recast
מדריך כלי ה-MCP
עודכן לאחרונה