דילוג לתוכן
תיעוד Nodaro
תיעודמדריך הרכיביםמודליםתבניותסוכני AI (MCP)מפתחיםאירוח עצמימחקרהשוואות
REST API

שגיאות

לכל שגיאה ב-REST API של Nodaro יש סטטוס HTTP וקוד קבוע במעטפת אחת. מה כל קוד אומר, אחרי אילו שגיאות לנסות שוב ואיך משימה שנכשלה מסבירה למה.

לכל שגיאה ב-API של Nodaro יש סטטוס HTTP ומעטפת JSON אחת עם code קבוע, כך שהלקוח שלכם יכול לפעול לפי הקוד במקום לנתח הודעות. יש שני סוגי כשל: שגיאת בקשה, כשהקריאה עצמה נדחית ושום דבר לא מתחיל, וכשל משימה, כשיצירה שכבר התחילה נכשלת מאוחר יותר, והמשימה מציינת את הסיבה.

מעטפת השגיאה

{ "error": { "code": "rate_limited", "message": "Too many requests. Max 30 per minute." } }
  • השדה code הוא מזהה קבוע. פעלו לפיו.
  • השדה message הוא טקסט לבני אדם. הוא יכול להשתנות, ולכן לעולם אל תבנו בדיקות על הטקסט שלו.
  • חלק מהשגיאות מוסיפות שדות, שמפורטים ליד כל קוד בהמשך. רוב השדות נמצאים בתוך error; השגיאה already_running מציבה את executionId לצד error, ובדיקת מכסה שנכשלה לפני ההרצה שמה את required ואת remaining ברמה העליונה.

נקודת הקצה של אסימוני OAuth היא היוצאת מן הכלל היחידה: היא עונה בפורמט של OAuth, למשל { "error": "invalid_grant", "error_description": "…" }. ראו את הדף אפליקציות OAuth.

אחרי אילו שגיאות לנסות שוב

סטטוסמה לעשות
5xxבדרך כלל זמנית. נסו שוב, והאריכו את ההמתנה אקספוננציאלית לפני כל ניסיון.
429המתינו ונסו שוב, והאריכו את ההמתנה לפני כל ניסיון: למשל 5 שניות, אחר כך 10 ואחר כך 20. כשיש כותרת Retry-After, פעלו לפיה.
402הוסיפו קרדיטים, או בקשו תקציב ממנהל סביבת העבודה, ואז נסו שוב.
4xx אחרתקנו קודם את הבקשה. אותה בקשה תיכשל שוב.

שלוש שגיאות שרת דורשות תשומת לב:

  • ניסיון חוזר אחרי 503 price_not_configured לא יצליח: למודל אין מחיר בפריסה הזו עד שמנהל השרת יקבע לו מחיר.
  • השגיאה 503 provider_unavailable בנתיב האסינכרוני של הקריאה ל-LLM עם פלט מובנה היא שגיאה קבועה בהתקנה ששולחת את הקריאות שלה למודלי שפה ל-nodaro.ai.
  • בפרסום לרשתות חברתיות, 503 publish_retryable פירושו ששום דבר לא פורסם, ואפשר לשלוח את אותה בקשה שוב בבטחה, אבל 500 publish_failed פירושו שהתוצאה לא ידועה, ושליחה חוזרת עלולה לפרסם פעמיים.

קודי שגיאה

400 Bad Request

קודמשמעות
validation_errorגוף בקשה פגום, UUID שגוי, שדה לא תקין או cursor פגום. עם reason: "llm_model_unpriced": מודל LLM שעדיין אין לו מחיר. ראו את הסעיף מודל שעדיין אין לו מחיר.
limit_reachedכבר יש לכם 10 אסימוני API, פעילים או לא. מחקו אחד קודם.
invalid_workflowערך ב-workflowIds של אסימון הוא לא תהליך במרחב האישי שלכם.
token_workspace_mismatchאסימון שמשויך לסביבת עבודה אחת נשלח עם כותרת X-Nodaro-Workspace שמציינת סביבה אחרת.
locked_fieldהרצה ניסתה לשנות לאן רכיב שפונה לשירות חיצוני שולח נתונים, או מאיפה הוא מביא אותם. ראו בדף ה-API מה הרצה לא יכולה לשנות.
image_requiredPOST /v1/generate-video בלי פריים פתיחה, במודל שלא יכול ליצור וידאו מטקסט. ההודעה מציינת אם ייחוסים יעבדו במקום זאת.
sequence_execution_requiredההרצה כוללת רכיבים של הפקת Studio, שצריך ליצור דרך ה-API של הפקות Studio.
not_workspace_scopedשיניתם את visibility בתהליך שלא נמצא בסביבת עבודה.
advanced_mode_unsupportedadvancedMode: true במודל שאי אפשר להריץ ישירות אצל הספק שלו.
advanced_mode_unavailableadvancedMode: true כשהספק של המודל עצמו לא יכול לקבל בקשות. לא נגבים קרדיטים. כבו את המצב המתקדם כדי להריץ את המודל. אותו קוד יכול להגיע גם כ-502 באמצע קריאה. במקרה כזה הקרדיטים מוחזרים, אלא אם הספק חייב על הניסיון.
quote_unsupportedPOST /v1/quote לסוג רכיב שהפלטפורמה לא יכולה לתת לו אומדן מחיר. ההודעה מפרטת את הסוגים שאפשר לקבל להם אומדן. ראו בדף ה-API אומדני מחיר להרצה.
continuation_subset_requiredcontinueFromExecutionId בלי nodeIds או continueMode. ראו בדף ה-API המשך הרצה.
continuation_workflow_mismatchההרצה שמצוינת ב-continueFromExecutionId הריצה תהליך אחר.
continuation_version_mismatchההרצה שמצוינת ב-continueFromExecutionId הריצה גרסת אפליקציה שפורסמה של התהליך.
render_final_node_not_foundrenderFinal.renderNodeId לא מציין אף רכיב של התהליך.
render_final_not_a_renderrenderFinal.renderNodeId מציין רכיב שהוא לא רינדור של רכיב החלת רשימת עריכה.

401 Unauthorized

קודמשמעות
unauthorizedהאסימון חסר, לא תקין, פג תוקפו או בוטל.

402 Payment Required

הקודים האלה מגיעים מ-Nodaro Cloud ומפריסות שיש בהן חיוב.

קודשדות נוספיםמשמעות
insufficient_creditsrequired, balanceלחשבון נגמרו הקרדיטים. בפריסה עם חשבון חיוב אחד, פירוש השגיאה הוא שמאגר הקרדיטים של הפריסה ריק: השגיאה כוללת אז את required, אבל אף פעם לא את balance, ורק חשבון החיוב יכול להוסיף קרדיטים.
insufficient_app_creditsהרצה של אפליקציה שפורסמה: לחשבון נגמרו הקרדיטים.
budget_exceededעבודה שסביבת עבודה משלמת עליה: התקציב של סביבת העבודה לא מכסה את ההרצה. בקשו תוספת ממנהל סביבת העבודה.
member_cap_exceededעבודה שסביבת עבודה משלמת עליה: הגעתם לתקרת ההוצאה האישית שלכם בסביבת העבודה הזו.
user_allowance_exceededrequired, remainingפריסה עם חשבון חיוב אחד שאוכפת מכסה לכל משתמש: המכסה שלכם לא מספיקה להרצה. רק חשבון החיוב יכול להגדיל אותה.
instance_cap_reachedאסימון OAuth של התקנה מחוברת באירוח עצמי: ההתקנה הוציאה את כל התקרה החודשית שלה בחשבון שחיבר אותה. הגדילו את התקרה או הסירו אותה תחת מופעים מחוברים.

403 Forbidden

קודשדות נוספיםמשמעות
forbiddenהאסימון מוגבל לתהליכים מסוימים והבקשה מחוצה להם, או שהנתיב דורש סשן מחובר. ראו בדף ה-API הגבלת אסימון לתהליכים מסוימים ונתיבים שדורשים סשן מחובר.
access_blockedב-Nodaro Cloud ובמהדורת Business, מנהל מערכת חסם את החשבון. כל פרטי הגישה של החשבון נדחים: הסשן, אסימוני ה-API ואסימוני ה-OAuth. התזמונים והטריגרים שלו נעצרים, והאפליקציות שהוא פרסם מחזירות 404 not_found. אם אתם חושבים שזו טעות, פנו לתמיכה.
insufficient_scopemissingScopeלאסימון OAuth אין הרשאה שהנתיב דורש. שלחו את המשתמש שוב דרך מסך ההסכמה, עם ההרשאה הרחבה יותר.
in_app_onlyהנתיב קיים רק בשביל אפליקציית הווב של Nodaro, כמו ה-Copilot.
node_not_availableהפריסה הזו לא מציעה לחשבון שלכם את הרכיב, או את האפשרות שבחרתם בו. ההודעה מציינת מה לא זמין. לא נגבים קרדיטים.
model_not_availableה-provider ששלחתם מציין מודל שהפריסה הזו לא מציעה. בחרו מודל אחר. לא נגבים קרדיטים.
model_disabledב-Nodaro Cloud בלבד. מנהל כיבה את המודל הזה. לא משוריינים ולא נגבים קרדיטים. קניית קרדיטים לא תעזור: בחרו מודל אחר, או נסו שוב כשהמודל יופעל מחדש.
edition_requiredrequired_editionהנתיב דורש מהדורה גבוהה יותר: להסתעפות של פייפליין cloud, ולניהול אסימוני API business.
not_a_memberהכותרת X-Nodaro-Workspace מציינת סביבת עבודה שאתם לא חברים פעילים בה.
member_suspendedהחברות שלכם בסביבת העבודה מושעית.
personal_space_disabledהארגון שלכם מאפשר לכם ליצור עבודה רק בתוך סביבת עבודה. שלחו את כותרת סביבת העבודה.
project_create_not_allowedרק המנהלים של סביבת העבודה יכולים ליצור פרויקטים.
workspace_archivedכתיבה לסביבת עבודה שבארכיון, כגון שיתוף תהליך. יצירת עבודה שם נדחית במקום זאת עם 409.
not_permittedאין לכם הרשאה להעביר את התהליך, או להעביר אותו לשם.
sso_requiredהפריסה מגבילה את ההתחברות לספק הזהות שלה, והחשבון של הסשן הזה לא נוצר דרכו. אסימונים לא מושפעים.
subscription_requiredחשבון בתשלום לפי שימוש הוציא קרדיטים בעורך בדפדפן. קרדיטי תשלום לפי שימוש עובדים ב-API, ב-SDK, ב-CLI וב-MCP, ולכן קריאות עם אסימון אף פעם לא מקבלות את הקוד הזה.
api_tokens_payer_onlyבפריסה עם חשבון חיוב אחד, רק החשבון הזה יכול ליצור אסימוני API.
payer_balance_jwt_onlyבפריסה כזו, חשבון החיוב קרא את היתרה של המאגר עם אסימון. רק הסשן שלו בדפדפן רשאי לעשות זאת.
payer_requiredמשהו שהוא לא הסשן של חשבון החיוב בדפדפן קרא לנתיב חיוב של הפריסה.
rights_confirmation_required, rights_authorization_required ושאר הקודים rights_confirmation_*לייבוא של קישור אין אישור מתאים של זכויות תוכן. לא הורדו קבצים. ראו בדף ה-API זכויות תוכן.
import_source_disabledהפריסה לא מאפשרת ייבוא מהאתר של הקישור.
imports_blockedייבוא קישורים חסום בחשבון, או שהחשבון סגור, לפי מדיניות המפרים החוזרים של הפריסה. ההודעה מציינת עד מתי. ראו בדף ה-API מפרים חוזרים.

404 Not Found

קודמשמעות
not_foundהמשאב לא קיים, או שאין לכם גישה אליו. שני המקרים מקבלים בכוונה אותה תשובה, כדי שמזהה אף פעם לא יגלה אם משהו קיים.
workspace_not_foundעבודה שסביבת עבודה משלמת עליה מציינת סביבת עבודה שלא קיימת.
continuation_not_foundההרצה שמצוינת ב-continueFromExecutionId לא קיימת או לא שייכת לכם.

409 Conflict

קודשדות נוספיםמשמעות
already_runningexecutionIdלתהליך כבר יש הרצה פעילה, או שניסיון חוזר של הרצת האפליקציה ממתין. במקום זאת, בדקו את הסטטוס של ההרצה הזו מדי כמה שניות.
continuation_not_completedההרצה שמצוינת ב-continueFromExecutionId עדיין רצה, נכשלה או בוטלה. בלי continueMode אפשר להמשיך רק הרצה שהושלמה.
continuation_not_failedעם "continueMode": "from-failed": ההרצה לא נכשלה.
continuation_supersededexecutionId, supersededByעם "continueMode": "from-failed": הרצת המשך חדשה יותר של ההרצה נכשלה, ולכן המשיכו אותה, או שהרצת ההמשך הזו כבר השלימה את כל מה שנשאר. ראו בדף ה-API המשך הרצה שנכשלה.
continuation_preview_pendingexecutionId, renderNodeIds, reviewNodeIds, nextעם "continueMode": "from-failed": הרצת ההמשך החדשה ביותר נעצרה לבדיקה ברכיב תצוגה מקדימה. קודם שלחו את next כגוף הבקשה של הרצה.
continuation_subset_requiredעם "continueMode": "from-failed": לא נשאר מה להמשיך. בניסיון חוזר של הרצת אפליקציה: כל השלבים הושלמו.
app_run_version_changedappVersion, runVersionניסיון חוזר של הרצת אפליקציה שנעשתה בגרסה אחרת של האפליקציה. התחילו את ההרצה מההתחלה.
app_run_version_unavailableניסיון חוזר של הרצת אפליקציה שהגרסה שלה כבר לא זמינה. התחילו את ההרצה מההתחלה.
workflow_conflictcurrentVersion, currentUpdatedAt, currentRecordהתהליך השתנה מאז הגרסה ששלחתם. מזגו את השינויים שלכם לתוך currentRecord ושמרו שוב.
job_cancelledבקשת LLM סינכרונית שמחויבת לפי השימוש, שהמשימה שלה בוטלה אחרי שהקרדיטים שלה שוריינו, אבל לפני שהקריאה שלה נשלחה. ראו את הסעיף בקשות LLM שמחויבות לפי השימוש.
idempotency_key_reused—הרצה של רכיב הידוק פרק או הרצת ההמשך שלה (POST /v1/tighten-episode, POST /v1/tighten-episode/continue): ה-Idempotency-Key כבר שייך לאחת המשימות שלכם מסוג אחר, כגון יצירת תמונה. שום דבר לא נוצר ולא נגבים קרדיטים. שלחו מפתח חדש. מפתח ששייך להרצה של אותו רכיב מחזיר את ההרצה הזו, עם 202 ו-"deduped": true.
workspace_archivedניסיתם ליצור עבודה בסביבת עבודה שבארכיון או להעביר אליה עבודה.
workspace_has_no_default_projectבקשת יצירה בסביבת עבודה לא ציינה פרויקט, ולסביבת העבודה אין פרויקט ברירת מחדל. ציינו פרויקט.
move_blockedהעבודה נוצרה במסגרת מטלה, ואי אפשר להעביר אותה.
production_capability_requiredשמירה כללית של תהליך השפיעה על הפקת Studio, שדורשת API משלה.
retained_image_in_useמחיקה הייתה מסירה תמונות מוגנות, או שלהפקה עדיין יש משימות שמשתמשות בהן. קודם סיימו או בטלו את המשימות האלה.
content_heldהקובץ נשמר כראיה לתלונה, ולכן אי אפשר למחוק אותו כרגע. ראו בדף ה-API תוכן מוגבל.

413, 422, 429 ו-451

סטטוסקודמשמעות
413החשבון שלכם חרג ממגבלת האחסון שלו. ה-SDK זורק StorageExceededError.
422job_blockedמדיניות המשימות של הפריסה דחתה את היצירה לפני שהיא רצה. לא נוצרה משימה ולא נגבו קרדיטים. הציגו למשתמש שלכם את message כמו שהוא, ואל תנסו שוב את אותה בקשה.
422upload_blockedמדיניות ההעלאות של הפריסה דחתה קובץ לפני שהוא נשמר. הציגו את message כמו שהוא.
422offsets_not_appliedPOST /v1/edit-plan קיבל שדה offsets גולמי. קודם כתבו כל היסט במקור שלו, כ-sources[].offsetMs. ראו את הדף תוכנית עריכה.
422master_offsetPOST /v1/edit-plan קיבל היסט ששונה מ-0 במקור המאסטר, או במקור שממנו נוצר התמלול. לא נגבים קרדיטים.
429rate_limitedמגבלת הקצב שחלה על כל אסימון API אישי.
429rate_limit_exceededכל מגבלה אחרת: לכל כתובת, לכל נתיב, או מספר ההרצות היומי של אפליקציה שפורסמה.
429too_many_downloadsכבר יש לכם 4 ייבואי וידאו שרצים.
451content_restrictedב-GET /v1/download או ב-GET /v1/image-proxy התבקש קובץ ש-Nodaro הגביל. ראו בדף ה-API תוכן מוגבל.

השגיאות job_blocked ו-upload_blocked מופיעות רק בפריסות שרושמות מדיניות כזו. על קודי 429, ראו את דף ה-API מגבלות קצב.

500 ו-503

סטטוסקודמשמעות
500internal_errorשגיאת שרת, או כשל של שירות שהשרת תלוי בו. נסו שוב, והאריכו את ההמתנה לפני כל ניסיון.
502advanced_mode_unavailableהספק של המודל עצמו דחה קריאת LLM במצב מתקדם באמצע הקריאה. הקרדיטים המשוריינים מוחזרים, אלא אם הספק חייב על הניסיון. כבו את המצב המתקדם כדי להריץ את המודל.
503job_start_failedבקשת LLM סינכרונית שמחויבת לפי השימוש לא הצליחה לרשום שהקריאה שלה מתחילה. ראו את הסעיף בקשות LLM שמחויבות לפי השימוש.
503price_not_configuredלמודל המבוקש אין מחיר בפריסה הזו, ולכן השרת מסרב במקום לחייב בטעות. ניסיון חוזר לא יעזור.
503rate_limit_unavailableנתיב שמוציא קרדיטים לא הצליח לבדוק את מגבלת הקצב שלו. נסו שוב מאוחר יותר.
503provider_unavailableהספק של המודל לא זמין.
503billing_unavailableדיווח השימוש לא זמין במופע הזה, או שהחיוב לא זמין לרגע בניסיון חוזר של הרצת אפליקציה בסביבת עבודה. נסו שוב בעוד רגע.

בקשות LLM שמחויבות לפי השימוש

קריאה למודל שפה מחויבת לפי הטוקנים שהיא משתמשת בהם, ולכן הקרדיטים שלה משוריינים לפני שהקריאה מתחילה. בקשה סינכרונית מהסוג הזה, כגון רכיב יצירת טקסט, אשף הפרומפטים או POST /v1/llm/structured, יכולה להחזיר עוד שני קודים:

  • 409 job_cancelled. המשימה בוטלה אחרי שהקרדיטים שלה שוריינו, אבל לפני שהקריאה שלה נשלחה. הקריאה אף פעם לא נשלחת, והקרדיטים המשוריינים מוחזרים. אל תנסו שוב את הבקשה כמו שהיא: המשימה בוטלה בכוונה.
  • 503 job_start_failed. השרת לא הצליח לרשום שהקריאה מתחילה, ולכן הוא לא שלח אותה. הקרדיטים המשוריינים מוחזרים. שלחו את הבקשה שוב.

מודל שעדיין אין לו מחיר

על רכיב LLM משלמים לפי המודל, בתעריף של השירות שמריץ אותו. מודל שאין לו תעריף בשירות הזה לא יכול לרוץ. כל נתיב שהיה מתמחר אותו או מריץ אותו מחזיר 400:

{
  "error": {
    "code": "validation_error",
    "reason": "llm_model_unpriced",
    "modelId": "<model>",
    "message": "The model \"<model>\" has no price yet, so it cannot be run. Choose another model."
  }
}
  • אומדנים: הנתיבים POST /v1/credits/estimate-workflow, GET /v1/credits/model-cost, POST /v1/component/estimate-credits, POST /v1/workflows/:id/render-final/estimate ונתיב ה-/estimate של כל רכיב תרחיש שימוש. הנתיב POST /v1/credits/model-costs עונה במקום זאת לכל מפתח בנפרד: הוא מציין את המפתח ב-errors, עם רשומה ב-errorCodes.
  • פרסום: הנתיבים POST /v1/apps/publish ו-POST /v1/templates/publish מסרבים לפני שמשהו נכתב. בפרסום מחדש, הגרסה הנוכחית נשארת פעילה.
  • הרצות: הנתיבים POST /v1/workflows/:id/run, POST /v1/app/:slug/run, POST /v1/app/:slug/runs/:runId/resume, POST /v1/component/execute, POST /v1/api/run, POST /v1/present/:token/run ונתיבי ההרצה וההמשך של כל רכיב תרחיש שימוש. הבדיקה נעשית לפני שההרצה נוצרת, כשערכי הקלט ששלחתם כבר מוחלים. אף רכיב לא רץ, ולכן לא נגבים קרדיטים. כלי ה-MCP run_app, run_workflow ו-run_component מגיעים לאותם נתיבים.
  • טריגרים: קריאה ל-Webhook נדחית עם אותו 400. כשטריגר תזמון, טריגר טלגרם או טריגר של תוסף אמורים להתחיל הרצה, מדלגים עליה. כל טריגר משאיר בהיסטוריה של התהליך רשומת הרצה אחת שנכשלה, עם error_message: "llm_model_unpriced", ופעמים נוספות שהטריגר אמור להתחיל הרצה לא מוסיפות עוד רשומות.
  • בתוך ההרצה: השרת בודק שוב כשהרצה מתחילה, לפני שרכיב כלשהו רץ. הבדיקה כוללת את תת־התהליכים ואת הרכיבים השמורים שההרצה מריצה. הרצה שנדחית כאן מסתיימת בסטטוס failed, עם ההודעה שלמעלה כ-error_message שלה. כשהמודל נמצא בתוך תת־תהליך, נוסף להודעה Found inside Sub-workflow node <id>. (נמצא בתוך רכיב תת־תהליך עם המזהה הזה), וכשהוא נמצא בתוך רכיב שמור, נוסף Found inside Component node <id>. (נמצא בתוך הרכיב השמור עם המזהה הזה).

שני נתיבים לקריאה בלבד עדיין מתארים את התהליך. הנתיב GET /v1/present/:token משמיט את estimatedCost ומחזיר estimatedCostUnpriced: { reason, modelId, message }. הנתיב GET /v1/api/schema משמיט את estimatedCredits ומחזיר estimatedCreditsUnpriced באותו מבנה.

כשמשימה נכשלת מאוחר יותר

גם בקשה שהצליחה יכולה ליצור משימה שנכשלת. במקרה כזה יש במשימה error_message, ובחמישה סוגי כשל גם error_hint מובנה:

  • הערך { "kind": "safety-block", "class": "copyright" | "likeness" | "safety", "retried": boolean, "suggestedProvider"?: string, "subject"?: "input_video" | "input_image" | "prompt" | "audio" } כשמסנן הבטיחות של מודל חסם את הבקשה. הערך subject: "input_video" פירושו שהספק דחה את סרטון הקלט של המשימה עצמו, ולכן שלחו קליפ אחר. הערך subject: "input_image", תמיד עם class: "copyright", פירושו שהספק דחה את אחת מתמונות הקלט של המשימה, כי ייתכן שהיא מוגנת בזכויות יוצרים: שלחו תמונה אחרת, כי ניסוח מחדש של הפרומפט לא יעזור. הערך subject: "prompt" פירושו שבהודעה של הספק עצמו מצוין הפרומפט, ולכן שנו את הפרומפט. הערך subject: "audio" פירושו שההודעה של הספק עצמו מייחסת את הבעיה לאודיו שנוצר, ולא לתמונה. התייחסו ל-subject שאתם לא מכירים כאילו הוא לא קיים.
  • הערך { "kind": "policy-block", "policyId": string, "reason": string, "hookPoint": "request" | "result" } כשהמדיניות של פריסה דחתה אותה.
  • הערך { "kind": "credits", "code": string } כשהקרדיטים של המשימה נגמרו באמצע, למשל insufficient_credits או מגבלה של סביבת עבודה כגון budget_exceeded.
  • הערך { "kind": "input-refused", "subject": "input_video" } כשהספק דחה את סרטון הקלט של המשימה בלי לציין סוג של מדיניות תוכן. לא מוצע מודל אחר. שלחו קליפ אחר.
  • הערך { "kind": "request-refused", "subject"?: "input_video" } כשהספק דחה את הבקשה כפי שנשלחה, וציין בה בעיה: הגדרה, פורמט או גודל של קובץ, או אורך הפרומפט. אותה בקשה תידחה שוב, ולכן שנו את תמונות הקלט, את הסרטון, את הפרומפט או את ההגדרות. הערך subject: "input_video" מופיע כשההודעה של הספק מציינת את סרטון הקלט כבעיה, למשל את האורך או הגודל שלו, או שלא נמצאה בו דמות, ולכן שלחו קליפ אחר. זו לא חסימה של מדיניות תוכן.

בשלושת הסוגים הראשונים הקרדיטים מוחזרים, והשדה credit_status במשימה מראה זאת. קריאת LLM שמחויבת לפי השימוש ונכשלה היא החריג: על שימוש שהספק חייב עליו משלמים. ראו בדף ה-API למה משימה נכשלה כדי לדעת מה פירוש כל שדה ומתי לנסות מודל אחר.

שגיאות ב-SDK

החבילה @nodaro/sdk זורקת שגיאה עם טיפוס על כל תגובה שנכשלה. תפסו קודם את המחלקה הספציפית ביותר:

מחלקהסטטוסשדות נוספים
UnauthorizedError401
ForbiddenError403missingScope כשהקוד הוא insufficient_scope
ModelUnavailableError403תת־מחלקה של ForbiddenError עבור model_not_available ו-model_disabled: המודל נדחה, לא מי שקרא
NotFoundError404
InsufficientCreditsError402required, available. השדה code הוא קוד ה-402 של הדחייה עצמה.
CreditCapExceededError402תת־מחלקה של InsufficientCreditsError עבור budget_exceeded, member_cap_exceeded ו-user_allowance_exceeded: תקרה שמישהו אחר קבע
StorageExceededError413reason: הערך storage_limit_exceeded כשהאחסון מלא, והערך file_too_large כשקובץ אחד חורג מהמגבלה
WorkflowConflictError409currentVersion, currentUpdatedAt, currentRecord. המחלקה משמשת גם להתנגשות production_busy של Studio.
AlreadyRunningError409executionId: ההרצה שכבר מתבצעת, עבור already_running
AppRunVersionChangedError409runVersion, appVersion, עבור app_run_version_changed
RateLimitedError429
JobBlockedError422
StudioOpError4xxopIndex: איזו פעולה באצווה של Studio נדחתה
NodaroErrorכל סטטוסמחלקת הבסיס: code, status, message ו-details, השדות האחרים של המעטפת
import {
  NodaroError,
  ForbiddenError,
  InsufficientCreditsError,
  RateLimitedError,
} from '@nodaro/sdk'

try {
  await client.workflows.run(workflowId)
} catch (err) {
  if (err instanceof InsufficientCreditsError) {
    showPaywall({ required: err.required, available: err.available })
  } else if (err instanceof ForbiddenError && err.missingScope) {
    requestConsent([err.missingScope])
  } else if (err instanceof RateLimitedError) {
    await new Promise((r) => setTimeout(r, 5_000))
  } else if (err instanceof NodaroError) {
    console.error(`API error ${err.status} (${err.code}): ${err.message}`)
  } else {
    throw err // a network failure, not an API error
  }
}

פונקציות העזר לתשאול מוסיפות שגיאות משלהן, כגון JobFailedError ו-JobTimeoutError. ראו בדף ה-API הרצת רכיב יחיד.

שגיאות ב-CLI

קוד יציאהמשמעות
0הצלחה.
1שגיאת הרשאה, משאב שלא נמצא, ארגומנט שגוי או שגיאת רשת.
2--watch הסתיים וההרצה נכשלה.
3--watch נעצר כי המשימה ממתינה לבדיקה. זה לא כשל: בדקו שוב מאוחר יותר.
130--watch הסתיים וההרצה בוטלה.

עם --json, ה-CLI מדפיס את המטען ויוצא כרגיל, במקום להשתמש בקודים 2, 3 ו-130, ולכן בדקו את .status בעצמכם.

שאלות נפוצות

איך נראית שגיאה ב-API של Nodaro?

לכל שגיאה יש סטטוס HTTP, והגוף שלה הוא ‎{ "error": { "code": "…", "message": "…" } }‎. הקוד קבוע, ולכן פעלו לפיו. ההודעה מיועדת לבני אדם ויכולה להשתנות.

אחרי אילו שגיאות ב-API של Nodaro כדאי לנסות שוב?

נסו שוב אחרי שגיאות 5xx ואחרי 429, והאריכו את ההמתנה אקספוננציאלית לפני כל ניסיון, למשל 5, 10 ו-20 שניות. אל תשלחו שוב בקשה שקיבלה שגיאת 4xx בלי לשנות אותה, כי אותה בקשה תיכשל שוב. בין שגיאות השרת, השגיאה 503 price_not_configured היא היוצאת מן הכלל.

מה פירוש 402 insufficient_credits?

בחשבון אין מספיק קרדיטים כדי להתחיל את ההרצה. השגיאה כוללת את השדה required, מספר הקרדיטים שההרצה צריכה, ובדרך כלל גם את השדה balance. הוסיפו קרדיטים ב-Nodaro Cloud, ואז שלחו את הבקשה שוב.

מהו השדה error_hint במשימה שנכשלה?

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

מה פירוש השגיאה llm_model_unpriced?

התהליך או הבקשה מציינים מודל LLM שעדיין אין לו מחיר בשירות שבו הוא אמור לרוץ, ולכן אי אפשר להריץ אותו. התשובה היא 400 validation_error, עם השדה reason בערך llm_model_unpriced ועם השדה modelId. בחרו מודל אחר. לא נגבים קרדיטים.

למה נתיב מחזיר 403 in_app_only?

הנתיב קיים רק בשביל הסשן של אפליקציית הווב של Nodaro, למשל ה-Copilot או פרטי הגישה השמורים לרכיב פלט Webhook. אסימוני API ואסימוני OAuth לא יכולים לקרוא לו. השתמשו במקום זאת בנקודות הקצה של התהליכים, ב-SDK או ב-MCP.

עודכן לאחרונה

בדף הזה