{
  "aboutHtml": "<p>Mochi 1 הוא מודל הטקסט-לווידאו של Genmo להפיכת תיאור סצנה כתוב לדימויים בתנועה. היצרן מדגיש תנועה וציות לפרומפט, עם מיקוד חזותי בתוכן פוטוריאליסטי. השתמשו בתיאור שוט מוחשי כדי לתאר את הנושא, הסביבה והפעולה שצריכים להיראות ברצף המוגמר.</p><p>כתבו את הפעולה כדבר שהצופה יכול לעקוב אחריו. יד המרימה לימון מקערה, אופניים החולפים ליד קיר מואר בשמש או ציפור הנוחתת על ענף מעניקים כל אחד אירוע ברור עם מצב פתיחה ומצב סיום. ציינו איזה נושא מוביל את הסצנה, מה משתנה במהלך השוט ואיזה פרט צריך להישאר ברור בזמן התנועה.</p><p>בחרו את נקודת המבט והסביבה כך שיתמכו בפעולה הזאת. מבט מקרוב יכול להדגיש אצבעות הנוגעות באובייקט, ואילו מבט רחב יותר יכול לבסס את הקשר בין אדם למיקום. כללו פרטי חומר, תאורה ורקע כשהם משפיעים על התוצאה הנראית. השאירו את התיאור ממוקד מספיק כדי שהתנועה החשובה לא תתחרה בכמה אירועים לא קשורים.</p><p>המהדורה של Mochi 1 שפרסם היצרן מתעדת יצירת וידאו מובנית ב-480p ומתארת התמקדות בפוטוריאליזם. תכננו סצנה שהפרטים המכריעים בה נשארים ברורים בקנה המידה הזה. דפוסים חזותיים עדינים, פנים קטנות ומרוחקות ואותיות מדויקות דורשות בדיקה נפרדת בפלט בפועל; סצנה כוללת משכנעת אינה מוכיחה שכל מאפיין קטן נשמר לאורך התנועה.</p><p>Genmo מזהה עיקום או עיוות כבעיה אפשרית בתנועה קיצונית ומציינת שהמהדורה מתאימה פחות לסגנונות אנימציה. בתיאור עתיר פעולה, בדקו את הנושא לאורך כל הרצף, במיוחד כשהוא מסתובב, משנה כיוון או עובר מאחורי אובייקט אחר. בחרו בקליפ שהתנועה הנראית שלו מתאימה בצורה הטובה ביותר לאירוע המיועד, ולאחר מכן התמקדו בעיוות מסוים בתיקון היצירתי הבא.</p><p>מימוש הייחוס של היצרן חושף בקרות כגון seed, מספר פריימים, צעדי הסקה והכוונה, לצד הפרומפט. אלה מתארים את תהליך העבודה של מודל הייחוס; הבקרות שמספקת שיטה מתארחת מסוימת מפורטות לצד אותה שיטה. שמרו את ההגדרות ששימשו בפועל לצד הקליפ שנוצר, כדי שהשוואה לא תסתמך על ברירת מחדל משוערת או על פרמטר ממימוש אחר.</p><p>השתמשו בחומר המצולם שהושלם כשוט להמחשת רעיון, כרכיב סצנה מציאותי או כקליפ מקור לעריכה נוספת. צפו ברצף כולו כדי לבדוק את הסדר וההשלמה של הפעולה המבוקשת, את המשכיות הנושא ואת התועלת של המבט הסופי. פריים פתיחה מוצלח הוא רק חלק אחד משוט בתנועה שאפשר להשתמש בו.</p><p>שמרו את הווידאו בפועל ואת התיאור הכתוב שלו. כשהתוצאה מחמיצה את המטרה, זהו אם הבעיה היא תיאור הסצנה, פרט מוסתר של הנושא, פעולה פתאומית או בחירת מסגור לא מתאימה. שנו את החלק הרלוונטי בפרומפט תוך שמירת הנושא והסביבה המוצלחים. השוו את התיקון לאותה מטרה חזותית, באמצעות הקליפ המלא ולא תמונה ממוזערת, כדי להחליט אם הוא משרת את העריכה המיועדת.</p>",
  "aboutText": "Mochi 1 הוא מודל הטקסט-לווידאו של Genmo להפיכת תיאור סצנה כתוב לדימויים בתנועה. היצרן מדגיש תנועה וציות לפרומפט, עם מיקוד חזותי בתוכן פוטוריאליסטי. השתמשו בתיאור שוט מוחשי כדי לתאר את הנושא, הסביבה והפעולה שצריכים להיראות ברצף המוגמר.\n\nכתבו את הפעולה כדבר שהצופה יכול לעקוב אחריו. יד המרימה לימון מקערה, אופניים החולפים ליד קיר מואר בשמש או ציפור הנוחתת על ענף מעניקים כל אחד אירוע ברור עם מצב פתיחה ומצב סיום. ציינו איזה נושא מוביל את הסצנה, מה משתנה במהלך השוט ואיזה פרט צריך להישאר ברור בזמן התנועה.\n\nבחרו את נקודת המבט והסביבה כך שיתמכו בפעולה הזאת. מבט מקרוב יכול להדגיש אצבעות הנוגעות באובייקט, ואילו מבט רחב יותר יכול לבסס את הקשר בין אדם למיקום. כללו פרטי חומר, תאורה ורקע כשהם משפיעים על התוצאה הנראית. השאירו את התיאור ממוקד מספיק כדי שהתנועה החשובה לא תתחרה בכמה אירועים לא קשורים.\n\nהמהדורה של Mochi 1 שפרסם היצרן מתעדת יצירת וידאו מובנית ב-480p ומתארת התמקדות בפוטוריאליזם. תכננו סצנה שהפרטים המכריעים בה נשארים ברורים בקנה המידה הזה. דפוסים חזותיים עדינים, פנים קטנות ומרוחקות ואותיות מדויקות דורשות בדיקה נפרדת בפלט בפועל; סצנה כוללת משכנעת אינה מוכיחה שכל מאפיין קטן נשמר לאורך התנועה.\n\nGenmo מזהה עיקום או עיוות כבעיה אפשרית בתנועה קיצונית ומציינת שהמהדורה מתאימה פחות לסגנונות אנימציה. בתיאור עתיר פעולה, בדקו את הנושא לאורך כל הרצף, במיוחד כשהוא מסתובב, משנה כיוון או עובר מאחורי אובייקט אחר. בחרו בקליפ שהתנועה הנראית שלו מתאימה בצורה הטובה ביותר לאירוע המיועד, ולאחר מכן התמקדו בעיוות מסוים בתיקון היצירתי הבא.\n\nמימוש הייחוס של היצרן חושף בקרות כגון seed, מספר פריימים, צעדי הסקה והכוונה, לצד הפרומפט. אלה מתארים את תהליך העבודה של מודל הייחוס; הבקרות שמספקת שיטה מתארחת מסוימת מפורטות לצד אותה שיטה. שמרו את ההגדרות ששימשו בפועל לצד הקליפ שנוצר, כדי שהשוואה לא תסתמך על ברירת מחדל משוערת או על פרמטר ממימוש אחר.\n\nהשתמשו בחומר המצולם שהושלם כשוט להמחשת רעיון, כרכיב סצנה מציאותי או כקליפ מקור לעריכה נוספת. צפו ברצף כולו כדי לבדוק את הסדר וההשלמה של הפעולה המבוקשת, את המשכיות הנושא ואת התועלת של המבט הסופי. פריים פתיחה מוצלח הוא רק חלק אחד משוט בתנועה שאפשר להשתמש בו.\n\nשמרו את הווידאו בפועל ואת התיאור הכתוב שלו. כשהתוצאה מחמיצה את המטרה, זהו אם הבעיה היא תיאור הסצנה, פרט מוסתר של הנושא, פעולה פתאומית או בחירת מסגור לא מתאימה. שנו את החלק הרלוונטי בפרומפט תוך שמירת הנושא והסביבה המוצלחים. השוו את התיקון לאותה מטרה חזותית, באמצעות הקליפ המלא ולא תמונה ממוזערת, כדי להחליט אם הוא משרת את העריכה המיועדת.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "a069af8c886b0709e2cbaef66fba922b5521f4f5641a86db3934523904b380da",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "he",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Genmo: Mochi 1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"סגירה\">×</button></div><div class=\"idline\"><span>Genmo /</span><code>genmo-mochi-v1</code><button type=\"button\" id=\"copy-id\">העתקת ID</button></div><nav class=\"card-jump-nav\" aria-label=\"חלקי כרטיס המודל\"><button type=\"button\" data-card-jump=\"overview\">התחלה</button><button type=\"button\" data-card-jump=\"methods\">קלט ושיטות</button><button type=\"button\" data-card-jump=\"pricing\">תעריפים</button><button type=\"button\" data-card-jump=\"examples\">דוגמאות</button><button type=\"button\" data-card-jump=\"results\">תוצאות</button><button type=\"button\" data-card-jump=\"aliases\">כינויים</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"שיטות API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|genmo-mochi-v1\">וידאו</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">התחלה</h3><p class=\"mdesc-full\">Mochi 1 הוא מודל הטקסט-לווידאו של Genmo, המתמקד בדימויים מציאותיים, בתנועה נראית ובציות לפרומפט של סצנה. הכינו תיאור שוט מוחשי ובדקו את הרצף המוגמר מבחינת פעולה, מסגור ועקביות לאורך הזמן.</p><dl class=\"card-io\" data-card-io><div><dt>סוגי קלט נתמכים</dt><dd>טקסט</dd></div><div><dt>תוצאות</dt><dd>וידאו</dd></div></dl><details class=\"card-about\"><summary>על המודל</summary><p class=\"note-s\" data-model-method-boundary>התיאור הזה מציג את יכולות המודל. הקלט, הפלט והאפשרויות הזמינים ב-Ailoot מפורטים בהמשך לפי השיטה שנבחרה.</p><div class=\"mabout\" id=\"m-about\"><p>Mochi 1 הוא מודל הטקסט-לווידאו של Genmo להפיכת תיאור סצנה כתוב לדימויים בתנועה. היצרן מדגיש תנועה וציות לפרומפט, עם מיקוד חזותי בתוכן פוטוריאליסטי. השתמשו בתיאור שוט מוחשי כדי לתאר את הנושא, הסביבה והפעולה שצריכים להיראות ברצף המוגמר.</p><p>כתבו את הפעולה כדבר שהצופה יכול לעקוב אחריו. יד המרימה לימון מקערה, אופניים החולפים ליד קיר מואר בשמש או ציפור הנוחתת על ענף מעניקים כל אחד אירוע ברור עם מצב פתיחה ומצב סיום. ציינו איזה נושא מוביל את הסצנה, מה משתנה במהלך השוט ואיזה פרט צריך להישאר ברור בזמן התנועה.</p><p>בחרו את נקודת המבט והסביבה כך שיתמכו בפעולה הזאת. מבט מקרוב יכול להדגיש אצבעות הנוגעות באובייקט, ואילו מבט רחב יותר יכול לבסס את הקשר בין אדם למיקום. כללו פרטי חומר, תאורה ורקע כשהם משפיעים על התוצאה הנראית. השאירו את התיאור ממוקד מספיק כדי שהתנועה החשובה לא תתחרה בכמה אירועים לא קשורים.</p><p>המהדורה של Mochi 1 שפרסם היצרן מתעדת יצירת וידאו מובנית ב-480p ומתארת התמקדות בפוטוריאליזם. תכננו סצנה שהפרטים המכריעים בה נשארים ברורים בקנה המידה הזה. דפוסים חזותיים עדינים, פנים קטנות ומרוחקות ואותיות מדויקות דורשות בדיקה נפרדת בפלט בפועל; סצנה כוללת משכנעת אינה מוכיחה שכל מאפיין קטן נשמר לאורך התנועה.</p><p>Genmo מזהה עיקום או עיוות כבעיה אפשרית בתנועה קיצונית ומציינת שהמהדורה מתאימה פחות לסגנונות אנימציה. בתיאור עתיר פעולה, בדקו את הנושא לאורך כל הרצף, במיוחד כשהוא מסתובב, משנה כיוון או עובר מאחורי אובייקט אחר. בחרו בקליפ שהתנועה הנראית שלו מתאימה בצורה הטובה ביותר לאירוע המיועד, ולאחר מכן התמקדו בעיוות מסוים בתיקון היצירתי הבא.</p><p>מימוש הייחוס של היצרן חושף בקרות כגון seed, מספר פריימים, צעדי הסקה והכוונה, לצד הפרומפט. אלה מתארים את תהליך העבודה של מודל הייחוס; הבקרות שמספקת שיטה מתארחת מסוימת מפורטות לצד אותה שיטה. שמרו את ההגדרות ששימשו בפועל לצד הקליפ שנוצר, כדי שהשוואה לא תסתמך על ברירת מחדל משוערת או על פרמטר ממימוש אחר.</p><p>השתמשו בחומר המצולם שהושלם כשוט להמחשת רעיון, כרכיב סצנה מציאותי או כקליפ מקור לעריכה נוספת. צפו ברצף כולו כדי לבדוק את הסדר וההשלמה של הפעולה המבוקשת, את המשכיות הנושא ואת התועלת של המבט הסופי. פריים פתיחה מוצלח הוא רק חלק אחד משוט בתנועה שאפשר להשתמש בו.</p><p>שמרו את הווידאו בפועל ואת התיאור הכתוב שלו. כשהתוצאה מחמיצה את המטרה, זהו אם הבעיה היא תיאור הסצנה, פרט מוסתר של הנושא, פעולה פתאומית או בחירת מסגור לא מתאימה. שנו את החלק הרלוונטי בפרומפט תוך שמירת הנושא והסביבה המוצלחים. השוו את התיקון לאותה מטרה חזותית, באמצעות הקליפ המלא ולא תמונה ממוזערת, כדי להחליט אם הוא משרת את העריכה המיועדת.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">זמין ב-Ailoot · קלט ושיטות</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · וידאו</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>סוגי קלט</dt><dd><code>text</code></dd></div><div><dt>סוגי פלט</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>שדה</th><th>סוג</th><th>דרישה</th><th>ערכים ומגבלות</th><th>ברירת מחדל</th></tr></thead><tbody><tr><th data-cell-label=\"שדה\" scope=\"row\"><span class=\"card-cell-label\">שדה</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"סוג\" data-field-type><span class=\"card-cell-label\">סוג</span><code>string</code></td><td data-cell-label=\"דרישה\"><span class=\"card-cell-label\">דרישה</span>חובה</td><td data-cell-label=\"ערכים ומגבלות\"><span class=\"card-cell-label\">ערכים ומגבלות</span><div>genmo-mochi-v1</div><div>תנאים: יש להשתמש בבורר המודלים המדויק של Ailoot.</div></td><td data-cell-label=\"ברירת מחדל\" data-default=\"unspecified\"><span class=\"card-cell-label\">ברירת מחדל</span>—</td></tr><tr><th data-cell-label=\"שדה\" scope=\"row\"><span class=\"card-cell-label\">שדה</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"סוג\" data-field-type><span class=\"card-cell-label\">סוג</span><code>string</code></td><td data-cell-label=\"דרישה\"><span class=\"card-cell-label\">דרישה</span>חובה</td><td data-cell-label=\"ערכים ומגבלות\"><span class=\"card-cell-label\">ערכים ומגבלות</span><div>תנאים: תארו את הסצנה ואת התנועה.</div></td><td data-cell-label=\"ברירת מחדל\" data-default=\"unspecified\"><span class=\"card-cell-label\">ברירת מחדל</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>פרמטרים ומחזור חיים של השיטה</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>פרמטר</th><th>מפרט</th></tr></thead><tbody><tr><th data-cell-label=\"פרמטר\" scope=\"row\"><span class=\"card-cell-label\">פרמטר</span><code>content_type</code></th><td data-cell-label=\"מפרט\"><span class=\"card-cell-label\">מפרט</span>application/json</td></tr><tr><th data-cell-label=\"פרמטר\" scope=\"row\"><span class=\"card-cell-label\">פרמטר</span><code>required</code></th><td data-cell-label=\"מפרט\"><span class=\"card-cell-label\">מפרט</span>model, prompt</td></tr><tr><th data-cell-label=\"פרמטר\" scope=\"row\"><span class=\"card-cell-label\">פרמטר</span><code>optional</code></th><td data-cell-label=\"מפרט\"><span class=\"card-cell-label\">מפרט</span></td></tr><tr><th data-cell-label=\"פרמטר\" scope=\"row\"><span class=\"card-cell-label\">פרמטר</span><code>material_types</code></th><td data-cell-label=\"מפרט\"><span class=\"card-cell-label\">מפרט</span>text</td></tr><tr><th data-cell-label=\"פרמטר\" scope=\"row\"><span class=\"card-cell-label\">פרמטר</span><code>conditions</code></th><td data-cell-label=\"מפרט\"><span class=\"card-cell-label\">מפרט</span>יש להשתמש בבורר המודלים המדויק של Ailoot., תארו את הסצנה ואת התנועה.</td></tr></tbody></table></div><p>כינויים לשיטה: <code>/v1/videos/generations</code></p><p>מחזור חיים: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">תעריפים</h3><div class=\"card-result-process\" data-billing-basis><h5>אופן חישוב החיוב הסופי</h5><p class=\"note-s\">התעריפים המוצגים מספקים אומדן לעלות לפני היצירה. החיוב הסופי מחושב לפי העלות שנרשמה עבור היצירה המקורית. משך הפלט שנמדד והכמויות החזויות אינם הכמות הסופית לחיוב.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>מידע תעריפים אינו מוסיף אפשרויות לבקשה. הפרמטרים הנתמכים מפורטים בשיטה שנבחרה.</p><dl data-price-conditions><dt>מצב מהיר</dt><dd>לא צוין <span class=\"note-s\">כאשר נבחר מצב מהיר</span></dd><dt>מצב Flex</dt><dd>לא צוין <span class=\"note-s\">כאשר נבחר מצב flex</span></dd><dt>מאמץ חשיבה מרבי</dt><dd>לא צוין <span class=\"note-s\">כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>תעריפים משוערים להשוואה</h4><h4>מחירים לפי תצורה</h4><p class=\"note-s\">התאימו כל חיוב לתנאים המוצגים. השתמשו בתעריף אחד לכל קבוצה של תצורות חלופיות.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>תצורה</th><th>טבלת תעריפים</th><th>כמות חזויה</th><th>כמות החיוב</th><th>חיוב</th></tr></thead><tbody><tr><th data-cell-label=\"תצורה\" scope=\"row\"><span class=\"card-cell-label\">תצורה</span>תעריפי בסיס לטוקנים</th><td data-cell-label=\"טבלת תעריפים\"><span class=\"card-cell-label\">טבלת תעריפים</span>תעריף בסיס</td><td data-cell-label=\"כמות חזויה\"><span class=\"card-cell-label\">כמות חזויה</span>—</td><td data-cell-label=\"כמות החיוב\"><span class=\"card-cell-label\">כמות החיוב</span>—</td><td data-cell-label=\"חיוב\"><span class=\"card-cell-label\">חיוב</span><div><span>קלט · טוקני קלט · אומדן להשוואה בלבד</span> <b>—</b> <span class=\"price-unit\">/ 1K טוקנים</span></div><div><span>פלט · טוקני פלט · אומדן להשוואה בלבד</span> <b>—</b> <span class=\"price-unit\">/ 1K טוקנים</span></div><div><span>קלט · קריאה מהמטמון · אומדן להשוואה בלבד</span> <b>—</b> <span class=\"price-unit\">/ 1K טוקנים</span></div><div><span>קלט · כתיבה למטמון · אומדן להשוואה בלבד</span> <b>—</b> <span class=\"price-unit\">/ 1K טוקנים</span></div><div><span>קלט · כתיבה למטמון, 1 שעה · אומדן להשוואה בלבד</span> <b>—</b> <span class=\"price-unit\">/ 1K טוקנים</span></div></td></tr><tr><th data-cell-label=\"תצורה\" scope=\"row\"><span class=\"card-cell-label\">תצורה</span>לכל בקשה</th><td data-cell-label=\"טבלת תעריפים\"><span class=\"card-cell-label\">טבלת תעריפים</span>—</td><td data-cell-label=\"כמות חזויה\"><span class=\"card-cell-label\">כמות חזויה</span>—</td><td data-cell-label=\"כמות החיוב\"><span class=\"card-cell-label\">כמות החיוב</span>בקשה אחת</td><td data-cell-label=\"חיוב\"><span class=\"card-cell-label\">חיוב</span><div><span>קלט · אומדן להשוואה בלבד</span> <b>$1</b> <span class=\"price-unit\">לכל בקשה</span></div></td></tr><tr><th data-cell-label=\"תצורה\" scope=\"row\"><span class=\"card-cell-label\">תצורה</span>עלות יצירה משוערת</th><td data-cell-label=\"טבלת תעריפים\"><span class=\"card-cell-label\">טבלת תעריפים</span>—</td><td data-cell-label=\"כמות חזויה\"><span class=\"card-cell-label\">כמות חזויה</span>אומדן ליצירה אחת</td><td data-cell-label=\"כמות החיוב\"><span class=\"card-cell-label\">כמות החיוב</span>—</td><td data-cell-label=\"חיוב\"><span class=\"card-cell-label\">חיוב</span><div><span>פלט · עלות יצירה משוערת · אומדן להשוואה בלבד</span> <b>$1</b> <span class=\"price-unit\">אומדן לפני היצירה</span></div><p class=\"note-s\">אומדן זה אינו חיוב נוסף או תעריף קבוע עבור היצירה שהושלמה.</p></td></tr></tbody></table></div></div><p class=\"note-s\">לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. <a href=\"/docs/he/billing/reserve/\">איך פועלים שריון הסכום והסדרת החיוב →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">דוגמאות לבקשות</h3><h4>Ailoot Ultra · וידאו</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"אפשרויות קוד\"><button class=\"cg-tab\" id=\"model-code-2796-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2796-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · צרו פעם אחת ושמרו את אישור הפעולה</button><button class=\"cg-tab\" id=\"model-code-2796-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2796-panel-1\" aria-selected=\"false\" tabindex=\"-1\">קראו את המשימה המקורית</button><button class=\"cg-tab\" id=\"model-code-2796-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2796-panel-2\" aria-selected=\"false\" tabindex=\"-1\">שמרו כל נכס שהושלם ונמצא בבעלותכם</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"העתקת הקוד\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2796-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2796-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON&#39;\n{\n  &quot;model&quot;: &quot;genmo-mochi-v1&quot;,\n  &quot;prompt&quot;: &quot;A cat is walking on grass.&quot;\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n# Create once; retain id, polling_url, original task identifiers and every header.\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2796-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2796-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_STATUS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r[&quot;polling_url&quot;])\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or p.username or p.password:\n    raise SystemExit(&quot;Unexpected returned polling URL; preserve the response&quot;)\nsubprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-D&quot;,&quot;status-headers.txt&quot;,&quot;-o&quot;,&quot;status.json&quot;],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2796-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2796-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nroles={}\ndef visit(v,path=&quot;&quot;):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+&quot;/&quot;+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+&quot;/&quot;+str(i))\n    elif isinstance(v,str):\n        u=urljoin(&quot;https://api.ailoot.ai&quot;,v); p=urlsplit(u)\n        if p.scheme==&quot;https&quot; and p.netloc==&quot;api.ailoot.ai&quot; and not p.username and not p.password and p.path.startswith(&quot;/v1/media/assets/&quot;) and p.path.endswith(&quot;/content&quot;):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(&quot;No completed owned assets; retain the original status&quot;)\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f&quot;asset-{i}.bin&quot;)\n    subprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-o&quot;,str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(&quot;Empty asset; retain original status and metadata&quot;)\n    ext=&quot;glb&quot; if raw[:4]==b&quot;glTF&quot; else &quot;png&quot; if raw[:8]==b&quot;\\x89PNG\\r\\n\\x1a\\n&quot; else &quot;jpg&quot; if raw[:3]==b&quot;\\xff\\xd8\\xff&quot; else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;mp4&quot; if raw[4:8]==b&quot;ftyp&quot; else &quot;bin&quot;\n    name=f&quot;asset-{i}.{ext}&quot;\n    if target.name!=name: target.rename(name)\n    manifest.append({&quot;file&quot;:name,&quot;response_paths&quot;:paths,&quot;bytes&quot;:len(raw)})\nPath(&quot;asset-manifest.json&quot;).write_text(json.dumps(manifest,indent=2))\nprint(&quot;Saved&quot;,len(manifest),&quot;unique owned assets; every response role retained&quot;)\nPY_ASSETS\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">קבלה ושמירה של תוצאות</h3><h4>Ailoot Ultra · וידאו</h4><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>שמירת כל התוצאות שהושלמו</h5><p class=\"note-s\">שמרו כל וידאו שהושלם או קובץ שהוחזר; אחזרו כל נכס מכל URL שהוחזר בפועל.</p><p class=\"note-s\">יש לשמור את התגובה המלאה ואת הכותרות, המזהים המקוריים, כל פלט ממשי ואת כל שדות השימוש והחיוב. יש לשמור כל נכס ייחודי שבבעלותכם ואת כל התפקידים המפנים אליו.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>כשצריך לבדוק את התגובה המקורית</h5><p class=\"note-s\">יש לשמור את מזהה המשימה הציבורי או מזהה הפעולה שהוחזרו ואת כל הכותרות. יש לקרוא רק את המשימה המקורית; unknown או result_pending_check אינם מתירים יצירה נוספת.</p></div><details class=\"card-about\" data-output-fields><summary>שדות התגובה</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>שדה</th><th>סוג</th></tr></thead><tbody><tr><th data-cell-label=\"שדה\" scope=\"row\"><span class=\"card-cell-label\">שדה</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"סוג\" data-field-type><span class=\"card-cell-label\">סוג</span>string</td></tr><tr><th data-cell-label=\"שדה\" scope=\"row\"><span class=\"card-cell-label\">שדה</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"סוג\" data-field-type><span class=\"card-cell-label\">סוג</span>string</td></tr><tr><th data-cell-label=\"שדה\" scope=\"row\"><span class=\"card-cell-label\">שדה</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"סוג\" data-field-type><span class=\"card-cell-label\">סוג</span>string</td></tr><tr><th data-cell-label=\"שדה\" scope=\"row\"><span class=\"card-cell-label\">שדה</span><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"סוג\" data-field-type><span class=\"card-cell-label\">סוג</span>string</td></tr><tr><th data-cell-label=\"שדה\" scope=\"row\"><span class=\"card-cell-label\">שדה</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"סוג\" data-field-type><span class=\"card-cell-label\">סוג</span>string</td></tr><tr><th data-cell-label=\"שדה\" scope=\"row\"><span class=\"card-cell-label\">שדה</span><code class=\"card-field-name\">video_url</code></th><td data-cell-label=\"סוג\" data-field-type><span class=\"card-cell-label\">סוג</span>string</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">כינויים</h3><h4>כינויים למודל</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=genmo-mochi-v1&amp;route=Ultra&amp;caller=genmo-mochi-v1&amp;fmt=videos\"><code>genmo-mochi-v1</code></a></span></p><h4>כינויים לנתיבי שיטות</h4><p class=\"note-s\"><code>/v1/videos/generations</code></p><h4>מזהי מודלים קשורים IDs</h4><p class=\"note-s\"><a href=\"#m=genmo-mochi-v1&amp;route=Ultra&amp;caller=genmo-mochi-v1&amp;fmt=videos\"><code>genmo-mochi-v1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "genmo-mochi-v1",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "genmo-mochi-v1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|genmo-mochi-v1",
      "ordinal": 0,
      "rawMethod": {
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "התעריפים המוצגים מספקים אומדן לעלות לפני היצירה. החיוב הסופי מחושב לפי העלות שנרשמה עבור היצירה המקורית. משך הפלט שנמדד והכמויות החזויות אינם הכמות הסופית לחיוב.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "completed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed"
              ],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "pending",
                "processing"
              ],
              "state_field": "status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "יש לשמור את מזהה המשימה הציבורי או מזהה הפעולה שהוחזרו ואת כל הכותרות. יש לקרוא רק את המשימה המקורית; unknown או result_pending_check אינם מתירים יצירה נוספת.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "יש לשמור את התגובה המלאה ואת הכותרות, המזהים המקוריים, כל פלט ממשי ואת כל שדות השימוש והחיוב. יש לשמור כל נכס ייחודי שבבעלותכם ואת כל התפקידים המפנים אליו.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "task_id",
                  "type": "string"
                },
                {
                  "name": "status",
                  "type": "string"
                },
                {
                  "name": "video_url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "יש להשתמש בבורר המודלים המדויק של Ailoot.",
                "default_known": false,
                "enum": [
                  "genmo-mochi-v1"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "תארו את הסצנה ואת התנועה.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "model": {
                  "enum": [
                    "genmo-mochi-v1"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "genmo-mochi-v1",
                "prompt": "A cat is walking on grass."
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "יש להשתמש בבורר המודלים המדויק של Ailoot.",
              "תארו את הסצנה ואת התנועה."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "completed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed"
            ],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "pending",
              "processing"
            ],
            "state_field": "status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "task_id",
                "type": "string"
              },
              {
                "name": "status",
                "type": "string"
              },
              {
                "name": "video_url",
                "type": "string"
              }
            ],
            "maximum_outputs": null
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "1",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          },
          {
            "basis": "אומדן זה אינו חיוב נוסף או תעריף קבוע עבור היצירה שהושלמה.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "עלות יצירה משוערת",
            "units": [
              {
                "amount": "1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "1",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"genmo-mochi-v1\",\n  \"prompt\": \"A cat is walking on grass.\"\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n# Create once; retain id, polling_url, original task identifiers and every header.\n",
            "label": "curl · create once and retain receipt",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "וידאו",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "1",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "1",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "genmo-mochi-v1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "per_request",
            "label": "per request",
            "native_amount_usd_per_unit": "1",
            "native_quantity": 1,
            "public_unit_label": "per request",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "per_request"
          },
          {
            "amount": "1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "1",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "genmo-mochi-v1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "aa449f04a313febb1134072f095faa1a2b9badc2a288a82dd616a5b34e23be78",
    "input_html_sha256": "89f63f03f1c31f4d1667c211ae82ec0e4639f0e2225064611e9b9bd9c3d4a0c6",
    "private_audit_sha256": "1f9771f70400c3ccfe1c79e357fd109586ab10f93338ac2745cbeb922c420d03",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/he/genmo-mochi-v1/",
    "description": "Mochi 1 הוא מודל הטקסט-לווידאו של Genmo, המתמקד בדימויים מציאותיים, בתנועה נראית ובציות לפרומפט של סצנה. הכינו תיאור שוט מוחשי ובדקו את הרצף המוגמר מבחינת פעולה, מסגור ועקביות לאורך הזמן.",
    "locale": "he",
    "md_url": "https://ailoot.ai/models/he/genmo-mochi-v1/index.md",
    "title": "Genmo: Mochi 1 — Ailoot",
    "url": "https://ailoot.ai/models/he/genmo-mochi-v1/"
  },
  "rawModel": {
    "about": "Mochi 1 הוא מודל הטקסט-לווידאו של Genmo להפיכת תיאור סצנה כתוב לדימויים בתנועה. היצרן מדגיש תנועה וציות לפרומפט, עם מיקוד חזותי בתוכן פוטוריאליסטי. השתמשו בתיאור שוט מוחשי כדי לתאר את הנושא, הסביבה והפעולה שצריכים להיראות ברצף המוגמר.\n\nכתבו את הפעולה כדבר שהצופה יכול לעקוב אחריו. יד המרימה לימון מקערה, אופניים החולפים ליד קיר מואר בשמש או ציפור הנוחתת על ענף מעניקים כל אחד אירוע ברור עם מצב פתיחה ומצב סיום. ציינו איזה נושא מוביל את הסצנה, מה משתנה במהלך השוט ואיזה פרט צריך להישאר ברור בזמן התנועה.\n\nבחרו את נקודת המבט והסביבה כך שיתמכו בפעולה הזאת. מבט מקרוב יכול להדגיש אצבעות הנוגעות באובייקט, ואילו מבט רחב יותר יכול לבסס את הקשר בין אדם למיקום. כללו פרטי חומר, תאורה ורקע כשהם משפיעים על התוצאה הנראית. השאירו את התיאור ממוקד מספיק כדי שהתנועה החשובה לא תתחרה בכמה אירועים לא קשורים.\n\nהמהדורה של Mochi 1 שפרסם היצרן מתעדת יצירת וידאו מובנית ב-480p ומתארת התמקדות בפוטוריאליזם. תכננו סצנה שהפרטים המכריעים בה נשארים ברורים בקנה המידה הזה. דפוסים חזותיים עדינים, פנים קטנות ומרוחקות ואותיות מדויקות דורשות בדיקה נפרדת בפלט בפועל; סצנה כוללת משכנעת אינה מוכיחה שכל מאפיין קטן נשמר לאורך התנועה.\n\nGenmo מזהה עיקום או עיוות כבעיה אפשרית בתנועה קיצונית ומציינת שהמהדורה מתאימה פחות לסגנונות אנימציה. בתיאור עתיר פעולה, בדקו את הנושא לאורך כל הרצף, במיוחד כשהוא מסתובב, משנה כיוון או עובר מאחורי אובייקט אחר. בחרו בקליפ שהתנועה הנראית שלו מתאימה בצורה הטובה ביותר לאירוע המיועד, ולאחר מכן התמקדו בעיוות מסוים בתיקון היצירתי הבא.\n\nמימוש הייחוס של היצרן חושף בקרות כגון seed, מספר פריימים, צעדי הסקה והכוונה, לצד הפרומפט. אלה מתארים את תהליך העבודה של מודל הייחוס; הבקרות שמספקת שיטה מתארחת מסוימת מפורטות לצד אותה שיטה. שמרו את ההגדרות ששימשו בפועל לצד הקליפ שנוצר, כדי שהשוואה לא תסתמך על ברירת מחדל משוערת או על פרמטר ממימוש אחר.\n\nהשתמשו בחומר המצולם שהושלם כשוט להמחשת רעיון, כרכיב סצנה מציאותי או כקליפ מקור לעריכה נוספת. צפו ברצף כולו כדי לבדוק את הסדר וההשלמה של הפעולה המבוקשת, את המשכיות הנושא ואת התועלת של המבט הסופי. פריים פתיחה מוצלח הוא רק חלק אחד משוט בתנועה שאפשר להשתמש בו.\n\nשמרו את הווידאו בפועל ואת התיאור הכתוב שלו. כשהתוצאה מחמיצה את המטרה, זהו אם הבעיה היא תיאור הסצנה, פרט מוסתר של הנושא, פעולה פתאומית או בחירת מסגור לא מתאימה. שנו את החלק הרלוונטי בפרומפט תוך שמירת הנושא והסביבה המוצלחים. השוו את התיקון לאותה מטרה חזותית, באמצעות הקליפ המלא ולא תמונה ממוזערת, כדי להחליט אם הוא משרת את העריכה המיועדת.",
    "about_sha256": "c5b0bfaf5a2fe843577fc9cb6e3c30ff411f4081cc865e6638884b39f0cc14e1",
    "alias_of": null,
    "aliases": [],
    "author": "Genmo",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "1",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "התמחור המלא של התצורה מופיע בפרטים."
      }
    ],
    "ctx": null,
    "display_name": "Genmo: Mochi 1",
    "formats": [
      "videos"
    ],
    "id": "genmo-mochi-v1",
    "input": [
      "text"
    ],
    "kind": "video",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "התעריפים המוצגים מספקים אומדן לעלות לפני היצירה. החיוב הסופי מחושב לפי העלות שנרשמה עבור היצירה המקורית. משך הפלט שנמדד והכמויות החזויות אינם הכמות הסופית לחיוב.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "completed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed"
              ],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "pending",
                "processing"
              ],
              "state_field": "status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "יש לשמור את מזהה המשימה הציבורי או מזהה הפעולה שהוחזרו ואת כל הכותרות. יש לקרוא רק את המשימה המקורית; unknown או result_pending_check אינם מתירים יצירה נוספת.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "יש לשמור את התגובה המלאה ואת הכותרות, המזהים המקוריים, כל פלט ממשי ואת כל שדות השימוש והחיוב. יש לשמור כל נכס ייחודי שבבעלותכם ואת כל התפקידים המפנים אליו.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "task_id",
                  "type": "string"
                },
                {
                  "name": "status",
                  "type": "string"
                },
                {
                  "name": "video_url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "יש להשתמש בבורר המודלים המדויק של Ailoot.",
                "default_known": false,
                "enum": [
                  "genmo-mochi-v1"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "תארו את הסצנה ואת התנועה.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "model": {
                  "enum": [
                    "genmo-mochi-v1"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "genmo-mochi-v1",
                "prompt": "A cat is walking on grass."
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "יש להשתמש בבורר המודלים המדויק של Ailoot.",
              "תארו את הסצנה ואת התנועה."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "completed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed"
            ],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "pending",
              "processing"
            ],
            "state_field": "status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "task_id",
                "type": "string"
              },
              {
                "name": "status",
                "type": "string"
              },
              {
                "name": "video_url",
                "type": "string"
              }
            ],
            "maximum_outputs": null
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "1",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          },
          {
            "basis": "אומדן זה אינו חיוב נוסף או תעריף קבוע עבור היצירה שהושלמה.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "עלות יצירה משוערת",
            "units": [
              {
                "amount": "1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "1",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"genmo-mochi-v1\",\n  \"prompt\": \"A cat is walking on grass.\"\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n# Create once; retain id, polling_url, original task identifiers and every header.\n",
            "label": "curl · create once and retain receipt",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "וידאו",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "billing_quantity": "one request"
            },
            "label": "Per request",
            "units": [
              {
                "amount": "1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "per_request",
                "label": "per request",
                "native_amount_usd_per_unit": "1",
                "native_quantity": 1,
                "public_unit_label": "per request",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "per_request"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "1",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "genmo-mochi-v1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "per_request",
            "label": "per request",
            "native_amount_usd_per_unit": "1",
            "native_quantity": 1,
            "public_unit_label": "per request",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "per_request"
          },
          {
            "amount": "1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "1",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "genmo-mochi-v1",
        "request_model_id": "genmo-mochi-v1",
        "route_label": "Ultra"
      }
    ],
    "name": "Genmo: Mochi 1",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 1,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 1,
      "varies": false
    },
    "short": "Mochi 1 הוא מודל הטקסט-לווידאו של Genmo, המתמקד בדימויים מציאותיים, בתנועה נראית ובציות לפרומפט של סצנה. הכינו תיאור שוט מוחשי ובדקו את הרצף המוגמר מבחינת פעולה, מסגור ועקביות לאורך הזמן.",
    "short_sha256": "82724280b83fc8a89d1b46c6cf60883145ea0680af1106f9ce0da9d71707862e"
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Mochi 1 הוא מודל הטקסט-לווידאו של Genmo, המתמקד בדימויים מציאותיים, בתנועה נראית ובציות לפרומפט של סצנה. הכינו תיאור שוט מוחשי ובדקו את הרצף המוגמר מבחינת פעולה, מסגור ועקביות לאורך הזמן.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "bfee664fb8cd7ca569f9665986606aa97ca023db6e70a4da5a3cc9da20db62c5",
    "renderer_sha256": "c36bd89b8b0dac234af52bf68530df83530b908ec7a9f2e1de2483fe236ae910"
  },
  "sourceRevision": "a98c8249d04f1af35881827616615d5cdf3b2f768a2f981f844da382cc00b863"
}
