К содержимому
CG
—
← Студии CG

Как создать свою студию

Студия — ваш собственный ИИ-инструмент на моделях CG: форма на входе, цепочка генераций внутри, готовый результат на выходе. Код писать не нужно: студию собирает наш агент в чате, ваш ассистент через MCP или вы сами одним JSON-файлом. Создать может любой пользователь CG; лучшие студии попадают в общий каталог.

Основа

Что такое студия

Студия описана одним документом — манифестом. В нём четыре части, и каждая отвечает на простой вопрос.

  • Что студия делает pipelines

    Цепочки шагов-генераций: текст, картинка, видео, звук. Шаги передают друг другу результаты.

  • Что студия хранит collections

    Свои данные: серии, кампании, выпуски. У каждого пользователя — свои записи.

  • Что видит человек screens

    Экраны из готовых блоков: форма, галерея, лента шагов, результат.

  • Что запускает работу actions

    Кнопки. Любой запуск сначала показывает цену, и человек её подтверждает.

Студия ничего не исполняет сама: у неё нет своего кода, стилей и запросов в интернет. Каждый шаг — обычная генерация CG со сметой, резервом денег, статусом и возвратом при ошибке. Готовая студия открывается по адресу getcg.ai/a/<slug> — на сайте и в приложении.

Быстрый старт

Три способа создать студию

Выберите удобный. Во всех трёх — одни и те же проверки, бесплатный тестовый прогон и смета перед живым запуском.

Самый простой путь — без настройки и без JSON. Агент App Creator спросит, что непонятно, соберёт студию и сам исправит ошибки проверки.

  1. Войдите на getcg.ai (вход по почте или Google) и откройте «Студии».
  2. В поле наверху опишите студию своими словами: что на входе, что на выходе, что хранить. Можно нажать одну из готовых идей.
  3. Ответьте на вопросы агента. Он покажет промпты и экраны и прогонит студию бесплатно — без генераций.
  4. Нажмите «Открыть черновик студии» — студия откроется у вас. Живой запуск — только после сметы и вашего подтверждения.
Собери студию «Рецепт в ролик».
На входе: название блюда, список ингредиентов и фото готового блюда (по желанию).
Что делает: пишет рецепт из 4 шагов, рисует кадр на каждый шаг, оживляет кадры в вертикальные клипы по 5 секунд.
Перед кадрами дай мне поправить рецепт. Сохраняй рецепты в библиотеку.

Первая студия

Самая маленькая студия

Один шаг: постер по описанию. Этот манифест проходит проверку как есть — скопируйте и отдайте агенту, ассистенту или в templates_studio_create.

{
  "manifest_version": 2,
  "kind": "app",
  "profile": "studio",
  "slug": "quick-poster",
  "category": "marketing",
  "lang": "ru",
  "name": {"ru": "Быстрый постер", "en": "Quick poster"},
  "pipelines": {
    "make": {
      "inputs": {
        "idea": {"type": "text", "label": {"ru": "Что на постере"}, "required": true, "max_length": 300}
      },
      "steps": [
        {
          "id": "poster",
          "kind": "image",
          "prompt": "Poster: {{idea}}. Bold composition, clean typography space",
          "params": {"aspect_ratio": {"const": "3:4"}},
          "tiers": {"standard": {"model": {"id": "nano-banana-2"}}}
        }
      ]
    }
  },
  "screens": [
    {
      "id": "main",
      "title": {"ru": "Постер"},
      "blocks": [
        {"type": "form", "source": "pipeline:make", "actions": ["go"]},
        {"type": "result", "source": "pipeline:make"}
      ]
    }
  ],
  "actions": [{"id": "go", "label": {"ru": "Сделать"}, "run": "make", "confirm_quote": true}]
}

Обязательная шапка любой студии: manifest_version: 2, kind: "app", profile: "studio", slug (адрес /a/<slug>), category, lang и name. Тексты для людей — объекты {"ru": …, "en": …}: язык lang обязателен, второй — по желанию.

Входы

Что заполняет человек

Входы — поля формы перед запуском. Задаются у каждой цепочки: pipelines.<имя>.inputs.

  • text, long_text — строка и длинный текст (max_length).
  • enum — выбор из вариантов (options, виджеты chips, cards, grid…). У варианта есть fragment — готовый кусок промпта: человек выбирает «Аниме», а модель получает описание стиля через {{style.fragment}}.
  • number, boolean — число и да/нет.
  • image, video, audio — файлы (min/max — сколько, до 10): фото героев, товар, голос.
  • model — модель выбирает сам человек.

Общие поля: label, help, required, default, placeholder и visible_if — условие, при котором поле видно.

Цепочки и шаги

Что студия делает

Порядок задаёт не список, а needs: шаг стартует, когда закончились все шаги, которых он ждёт. Независимые шаги идут параллельно.

Вид шагаЧто делаетПараметры
llmТекст или JSON: сценарий, план, подписи
  • max_output_tokens — 1–32000
  • temperature — 0–1
imageКартинка: кадр, постер, обложка
  • resolution — 1K, 1.5K, 2K, 3K, 4K
  • aspect_ratio — 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 3:2, 2:3, 4:5, 5:4
  • quality — draft, standard, pro, max
videoВидео: клип из кадра или по описанию
  • duration_s — 1–600
  • resolution — 480p, 720p, 1080p
  • aspect_ratio — 16:9, 9:16, 1:1, 4:3, 3:4, 21:9
  • audio — да / нет
audioЗвук: озвучка (tts) или музыка
  • mode — tts, music
  • voice — строка
  • language — строка
  • duration_s — 1–600

Скоро: tool, montage — пока такой шаг отвечает STEP_KIND_NOT_AVAILABLE.

  • Модель — в tiers: уровень standard обязателен, draft и premium — по желанию. Модель берётся из каталога CG по id (например, nano-banana-2, seedance-2-0, claude-haiku-4-5); человек её не выбирает, если вы не дали вход model.
  • Промпт — шаблон: {{вход}}, фильтры {{name | upper}}, условия {{#if …}}, списки {{#each …}}. Значения человека вставляются как текст и никогда не исполняются. Сервер заранее считает худший промпт — все входы максимальной длины — и не даст сохранить слишком длинный.
  • Результат прошлого шага — привязка {"step_output": {"step": "script", "path": "/title"}}. В промпт он попадает через vars: одно значение — до 2 000 символов.
  • JSON от текстовой модели — output_schema у llm-шага: следующие шаги читают его по полям, а ответ не по схеме останавливает шаг.
  • foreach — шаг по каждому элементу списка: кадр на каждую сцену, клип на каждый кадр. * в пути — текущий элемент. Задайте maxItems: смета считает по верхней границе, без неё — 50 элементов.
  • Остановки — checkpoints: edit даёт поправить текст шага, approve — продолжить или отменить. Ставьте их перед дорогим шагом: правка сценария стоит копейки, пересъёмка видео — нет.

Данные

Коллекции: что студия хранит

Коллекция — список записей у каждого пользователя студии: серии, кампании, выпуски.

  • schema — поля записи; поле {"type": "object", "format": "media"} хранит картинку, видео или звук.
  • title_field — поле-название, max_items — сколько записей у одного пользователя, retention_days — сколько дней хранить.
  • writes у шага кладёт его результат в поле записи: {"writes": {"collection": "episodes", "field": "frames"}}. Один запуск — одна запись.

Экраны и кнопки

Что видит человек

Экран — блоки сверху вниз. Блоки — только из реестра: своего HTML и CSS у студии нет, поэтому она одинаково выглядит на сайте и в приложении.

БлокЧто показываетИсточникПоля bindКнопки
formФорма входов цепочки — по ней запускают студиюpipeline—да
galleryСетка картинок и видеоcollection, pipelinemedia, title, captionда
listЗаписи строкамиcollection, pipelinetitle, subtitle, mediaда
boardКарточки по колонкам одного поляcollectiontitle, column, mediaда
calendarЗаписи по датамcollectiontitle, dateда
cardОдна запись целикомcollection, pipelinetitle, body, mediaда
timelineШаги и сцены запуска по порядкуpipeline, collectiontitle, media, timeнет
chatДиалог, который заполняет входыpipeline—да
resultРезультаты последнего запускаpipelinemedia, titleда
  • source — pipeline:<имя> или collection:<имя>; bind — какое поле показывать: {"media": "frames", "title": "title"}.
  • Кнопка запускает цепочку: {"id": "make", "run": "make_episode", "confirm_quote": true}. confirm_quote: true обязателен — без сметы запустить нельзя.
  • permissions — что студия может читать от имени человека: assets.read, assets.list, assets.get, elements.get, elements.search, templates.get, templates.list.

Деньги

Смета, запуск и тестовый прогон

Один путь денег, как во всём CG: смета → резерв → генерации → списание или возврат.

  • Тестовый прогон бесплатный. templates_studio_test_run проходит всю цепочку без моделей и денег: каждый шаг отдаёт заглушку нужного типа. Так проверяют, что шаги читают друг друга, а экраны заполняются.
  • Смета до запуска. Считает каждый шаг по худшему промпту и по верхней границе foreach. Если список вышел короче — лишнее не списывается.
  • Запуск — только по подтверждённой смете. Если цена выросла или кончились деньги, запуск встаёт на паузу и продолжается после новой сметы или пополнения.
  • Не удалось — вернём. Деньги за несостоявшиеся генерации возвращаются. Платит тот, кто запускает студию, по ценам моделей CG.

Заработок авторов на запусках своих студий запланирован, но пока не включён: сейчас человек платит только за генерации.

Публикация

Кто увидит вашу студию

Новая студия — ваш приватный черновик. Дальше решаете вы.

  • Только вы (private) и ваша команда (workspace) — сразу, без проверки.
  • Все, в каталоге (public) — после проверки модератором CG. Нужны обложка и пример результата: запустите студию, выберите удачный результат и задайте их (templates_versions_set_presentation), затем templates_publish.
  • Запуск идёт по снимку опубликованной версии: правка черновика не ломает тех, кто уже пользуется студией.

Примеры

Готовые студии: откройте и переделайте

Официальные студии CG — живые образцы. Откройте, посмотрите, как они устроены, и скопируйте к себе (templates_fork).

  • Сериал Студия

    сценарий серии → кадр на сцену → клип на кадр, постер параллельно, правка сценария и одобрение кадров

  • Каталог в рекламу

    коллекция кампаний, foreach по товарам, картинка → видео, формат через map

  • Серия комиксов

    панели по сценарию, обложка параллельно, герой как референс

  • Подкаст в клипы

    сцены из текста, кадры и клипы, озвучка параллельно

Как устроена «Сериал Студия»: входы series, plot, genre, style, heroes; шаги script → frames → clips → poster; остановки edit после script, approve после frames. Два шага, которые делают из сценария видео, — как они есть в студии:

[
  {
    "id": "frames",
    "kind": "image",
    "title": {
      "en": "Scenes",
      "ru": "Кадры сцен"
    },
    "needs": [
      "script"
    ],
    "foreach": {
      "step_output": {
        "step": "script",
        "path": "/scenes"
      }
    },
    "vars": {
      "visual": {
        "step_output": {
          "step": "script",
          "path": "/scenes/*/visual"
        }
      }
    },
    "prompt": "Vertical 9:16 frame of a short drama series. {{visual}}. {{style.fragment}}, {{genre.fragment}}, consistent character design, no text, no subtitles",
    "slots": {
      "reference_image": [
        {
          "input": "heroes"
        }
      ]
    },
    "params": {
      "aspect_ratio": {
        "const": "9:16"
      }
    },
    "tiers": {
      "standard": {
        "model": {
          "id": "nano-banana-2"
        }
      }
    },
    "writes": {
      "collection": "episodes",
      "field": "frames"
    }
  },
  {
    "id": "clips",
    "kind": "video",
    "title": {
      "en": "Clips",
      "ru": "Ролики сцен"
    },
    "needs": [
      "frames"
    ],
    "foreach": {
      "step_output": {
        "step": "frames",
        "path": ""
      }
    },
    "vars": {
      "shot": {
        "step_output": {
          "step": "script",
          "path": "/scenes/*/shot"
        }
      }
    },
    "prompt": "{{shot}}. Vertical short drama shot, natural acting, {{style.fragment}}",
    "slots": {
      "first_frame": {
        "step_output": {
          "step": "frames",
          "path": "/*"
        }
      }
    },
    "params": {
      "duration_s": {
        "const": 5
      },
      "aspect_ratio": {
        "const": "9:16"
      },
      "audio": {
        "const": true
      }
    },
    "tiers": {
      "standard": {
        "model": {
          "id": "seedance-2-0"
        },
        "params": {
          "resolution": "720p"
        }
      }
    },
    "writes": {
      "collection": "episodes",
      "field": "clips"
    }
  }
]

frames рисует кадр на каждую сцену сценария, clips идёт по кадрам: для N-го кадра /* — этот кадр, а /scenes/*/shot — описание N-й сцены.

Справочник

Пределы и коды проверки

Собрано из кода сервера — всегда совпадает с тем, что проверяет CG. Полная JSON Schema манифеста — в ответе templates_studio_schema_get.

ЧтоПределКлюч
Размер манифеста, байт262 144manifest_bytes
Цепочек в студии10pipelines
Шагов в цепочке30steps_per_pipeline
Вложенность схем (output_schema, коллекции)4schema_depth
Элементов в foreach50max_fanout_default
Генераций на один запуск цепочки200max_jobs_default
Символов одного значения из vars в промпте2 000var_chars
Наценка автора, % (пока не начисляется)50author_markup_pct
Символов промпта llm-шага20 000llm_prompt_chars
Размер записи коллекции, байт262 144record_bytes

Частые ошибки

  • UNKNOWN_FIELD — Неизвестный ключ — в path точное место. Частая причина — опечатка или поле из другого места манифеста.
  • FORMULA_UNKNOWN_SLOT — Формула читает {{имя}}, которого нет ни среди входов цепочки, ни в vars шага.
  • STEP_NOT_ANCESTOR — step_output читает шаг, которого этот шаг не ждёт. Добавьте его в needs (прямо или через другие шаги).
  • STEP_OUTPUT_TYPE_MISMATCH — Тип выхода не подходит месту: в кадр — одна картинка, в reference_image — картинка или список, в vars — текст, число, да/нет или список таких.
  • FOREACH_UNBOUNDED — У списка нет maxItems: смета считает 50 элементов. Задайте maxItems, чтобы смета была честной.
  • PROMPT_TOO_LONG — Худший промпт (все входы и vars максимальной длины) длиннее предела. Сократите текст или max_length входов.
  • PARAM_REQUIRED — Видео-шагу нужен duration_s — в params или в каждом уровне tiers.
  • MODEL_NOT_FOUND — Такой модели нет в каталоге или она недоступна.
  • CAPS_UNSUPPORTED — Модель не умеет одну из возможных конфигураций шага (параметры, слоты, длина). В params.rule — какое правило нарушено. Сузьте параметры или выберите другую модель.
  • CONFIRM_QUOTE_REQUIRED — У кнопки должно быть confirm_quote: true: каждый запуск сначала показывает смету.

Все коды проверки

Показано 90 из 90

  • ACTION_UNKNOWNошибка — не даёт запуститьПоля

    Блок называет кнопку, которой нет в actions. Добавьте кнопку или исправьте id.

  • BINDING_MULTI_ENUMошибка — не даёт запуститьПоля

    Вход с множественным выбором нельзя использовать в параметре или условии. Сделайте выбор одиночным.

  • BINDING_TOO_DEEPошибка — не даёт запуститьПоля

    Привязки if/then/else вложены глубже 3 уровней. Упростите условие.

  • BLOCK_PROP_UNKNOWNошибка — не даёт запуститьПоля

    В bind блока свойство, которого у этого блока нет. Список свойств — в реестре блоков.

  • BLOCK_SOURCE_INVALIDошибка — не даёт запуститьПоля

    Блок не принимает источник такого вида. Пишите collection:<имя> или pipeline:<имя> — как разрешает блок.

  • BLOCK_UNKNOWNошибка — не даёт запуститьПоля

    Такого блока нет в реестре. Экран собирается только из блоков реестра.

  • CAPS_UNSUPPORTEDошибка — не даёт запуститьМодели каталога

    Модель не умеет одну из возможных конфигураций шага (параметры, слоты, длина). В params.rule — какое правило нарушено. Сузьте параметры или выберите другую модель.

  • CATALOG_UNAVAILABLEподсказкаМодели каталога

    Каталог моделей не ответил, проверка S3 повторится позже. Исправлять ничего не нужно.

  • CHAIN_TOO_LARGEошибка — не даёт запуститьГраф шагов

    Запуск цепочки может создать больше задач, чем разрешено (TPL_STUDIO_MAX_JOBS, по умолчанию 200): сумма верхних границ всех шагов. Уменьшите maxItems списков или число шагов.

  • CHAIN_TOO_LONGошибка — не даёт запуститьГраф шагов

    В цепочке больше 30 шагов. Разбейте её на несколько цепочек.

  • CHECKPOINT_EDIT_NOT_LLMошибка — не даёт запуститьГраф шагов

    Остановка edit возможна только после llm-шага: править можно только текст или JSON. Для медиа используйте approve.

  • COLLECTION_UNKNOWNошибка — не даёт запуститьПоля

    writes или source называет коллекцию, которой нет в collections.

  • CONFIG_SPACE_TOO_LARGEошибка — не даёт запуститьМодели каталога

    Входы дают слишком много сочетаний параметров, проверить их все нельзя. Сократите варианты выбора.

  • CONFIRM_QUOTE_REQUIREDошибка — не даёт запуститьПоля

    У кнопки должно быть confirm_quote: true: каждый запуск сначала показывает смету.

  • CONST_MEDIA_INVALIDошибка — не даёт запуститьПоля

    Постоянное медиа в слоте задаётся ссылкой https.

  • CONST_MEDIA_NOT_ALLOWEDошибка — не даёт запуститьПоля

    Для публикации unlisted/public медиа-константы, превью и обложка должны быть результатами ваших запусков (job_output), а не ссылками. Замените ссылку на результат запуска.

  • DENYLIST_MATCHподсказкаПоля

    Текст совпал с правилом модерации. Сохранить можно, но публикацию проверит оператор.

  • DUPLICATE_STEP_IDошибка — не даёт запуститьГраф шагов

    Два шага цепочки с одним id. Id шагов уникальны внутри цепочки.

  • EACH_NESTEDошибка — не даёт запуститьПоля

    Формула: блоки {{#each}} нельзя вкладывать друг в друга.

  • EACH_NOT_LISTошибка — не даёт запуститьПоля

    Формула: {{#each}} работает только со списком.

  • FAKE_MARKER_IN_FORMULAошибка — не даёт запуститьПоля

    В тексте служебный маркер [[…]] имитатора. Уберите его.

  • FALLBACK_CAPS_UNSUPPORTEDошибка — не даёт запуститьМодели каталога

    Запасная модель не умеет всех конфигураций своего уровня. Уберите её или выберите другую.

  • FALLBACKS_WITH_MODEL_INPUTошибка — не даёт запуститьПоля

    Запасные модели (fallbacks) работают только с фиксированной моделью, не с выбором пользователя.

  • FEATURE_DISABLEDошибка — не даёт запуститьПоля

    Возможность выключена на сервере (например, видео-входы — TPL_VIDEO_INPUTS_ENABLED).

  • FEATURE_NOT_AVAILABLEошибка — не даёт запуститьРазбор JSON

    Поле запланировано, но ещё не работает: triggers (расписание) и questions (интервью перед запуском). Уберите его.

  • FILTER_TYPE_MISMATCHошибка — не даёт запуститьПоля

    Формула: фильтр применён к значению не того типа.

  • FOREACH_INVALIDошибка — не даёт запуститьГраф шагов

    foreach задаётся только как {step_output: {step, path}} на список.

  • FOREACH_MISMATCHошибка — не даёт запуститьГраф шагов

    * в пути должен идти по тому же списку, по которому размножен шаг.

  • FOREACH_NESTED_NOT_SUPPORTEDошибка — не даёт запуститьГраф шагов

    foreach по списку внутри списка (* в пути foreach) пока не поддерживается. Сделайте список плоским.

  • FOREACH_NOT_A_LISTошибка — не даёт запуститьГраф шагов

    foreach указывает не на список. Нужен массив из output_schema llm-шага или выход другого foreach-шага.

  • FOREACH_TOO_LARGEошибка — не даёт запуститьГраф шагов

    maxItems списка больше TPL_MAX_FANOUT (50). Уменьшите maxItems.

  • FOREACH_UNBOUNDEDподсказкаГраф шагов

    У списка нет maxItems: смета считает 50 элементов. Задайте maxItems, чтобы смета была честной.

  • FORMULA_ARITYошибка — не даёт запуститьПоля

    Формула: у функции не то число аргументов.

  • FORMULA_SYNTAXошибка — не даёт запуститьПоля

    Формула: синтаксическая ошибка. В params — строка, столбец и что ожидалось.

  • FORMULA_TOO_COMPLEXошибка — не даёт запуститьПоля

    Формула слишком сложная: глубина, число узлов, длина литерала или #each. Упростите её.

  • FORMULA_TOO_LONGошибка — не даёт запуститьПоля

    Формула длиннее предела по символам.

  • FORMULA_UNKNOWN_FIELDошибка — не даёт запуститьПоля

    Формула: у входа нет такого поля (например, {{style.fragment}} у входа без fragment).

  • FORMULA_UNKNOWN_FILTERошибка — не даёт запуститьПоля

    Формула: неизвестный фильтр.

  • FORMULA_UNKNOWN_FUNCTIONошибка — не даёт запуститьПоля

    Формула: неизвестная функция.

  • FORMULA_UNKNOWN_SLOTошибка — не даёт запуститьПоля

    Формула читает {{имя}}, которого нет ни среди входов цепочки, ни в vars шага.

  • GRAPH_CYCLEошибка — не даёт запуститьГраф шагов

    Шаги по needs образуют цикл (или шаг ждёт сам себя). Цепочка — граф без циклов.

  • I18N_MISSING_LANGUAGEошибка — не даёт запуститьПоля

    Нет текста на основном языке lang. Добавьте его (второй язык необязателен).

  • ISSUES_TRUNCATEDошибка — не даёт запуститьРазбор JSON

    Замечаний больше 200, показаны первые. Исправьте их и проверьте снова.

  • ITEM_OUTSIDE_EACHошибка — не даёт запуститьПоля

    Формула: item и index работают только внутри {{#each}}.

  • LAST_FRAME_REQUIRES_FIRSTошибка — не даёт запуститьПоля

    Последний кадр задаётся только вместе с первым.

  • LIMIT_EXCEEDEDошибка — не даёт запуститьРазбор JSON

    Превышен жёсткий предел (цепочек, шагов, входов, экранов, блоков и т. п.). Дальше манифест не проверяется. Пределы — в справочнике.

  • MANIFEST_INVALID_JSONошибка — не даёт запуститьРазбор JSON

    Манифест — не JSON.

  • MANIFEST_TOO_LARGEошибка — не даёт запуститьРазбор JSON

    Манифест больше предела: студия — 256 КБ, приложение — 64 КБ.

  • MAP_INCOMPLETEошибка — не даёт запуститьПоля

    map покрывает не все варианты входа. Добавьте недостающие cases или default.

  • MEDIA_SOURCE_UNSUPPORTEDошибка — не даёт запуститьЗапуск

    Вход не принимает медиа такого вида (ссылки выключены, вход без asset в sources и т. п.).

  • MEDIA_URL_INVALIDошибка — не даёт запуститьПоля

    Ссылка на медиа не разрешена: нужен https на публичный адрес.

  • MODEL_KIND_MISMATCHошибка — не даёт запуститьМодели каталога

    Вид модели не совпадает с видом шага (например, видеомодель в image-шаге).

  • MODEL_NOT_FOUNDошибка — не даёт запуститьМодели каталога

    Такой модели нет в каталоге или она недоступна.

  • NOT_SUPPORTED_BY_CAPS_V1ошибка — не даёт запуститьРазбор JSON

    Слот, параметр или аудио-вход пока не поддерживается моделями каталога.

  • OUTPUT_SCHEMA_MISMATCHошибка — не даёт запуститьЗапуск

    Значение не подходит под схему: ответ llm-шага, правка на остановке edit или запись коллекции.

  • OUTPUT_SCHEMA_NOT_ALLOWEDошибка — не даёт запуститьПоля

    output_schema бывает только у llm-шага.

  • OVERRIDDENподсказкаПоля

    Вариант выбора задаёт параметр модели (options[].params) — он перекроет значение шага. Это предупреждение-напоминание.

  • PARAM_NOT_SUPPORTEDошибка — не даёт запуститьПоля

    У шага такого вида нет этого параметра. Список параметров по видам — в справочнике.

  • PARAM_OUT_OF_RANGEошибка — не даёт запуститьПоля

    Значение параметра выходит за разрешённый диапазон.

  • PARAM_REQUIREDошибка — не даёт запуститьПоля

    Видео-шагу нужен duration_s — в params или в каждом уровне tiers.

  • PARAM_TYPE_MISMATCHошибка — не даёт запуститьПоля

    Значение параметра не того типа или не из списка (например, aspect_ratio не из разрешённых).

  • PARAMS_ON_MULTI_ENUMошибка — не даёт запуститьПоля

    Варианты множественного выбора не могут задавать параметры модели.

  • PERMISSION_NOT_ALLOWEDошибка — не даёт запуститьПоля

    Команды нет в белом списке разрешений студии.

  • PIPELINE_UNKNOWNошибка — не даёт запуститьПоля

    Кнопка или блок называет цепочку, которой нет в pipelines.

  • PREDICATE_TYPE_MISMATCHошибка — не даёт запуститьПоля

    Формула: условие должно давать да/нет.

  • PROMPT_MAY_BE_EMPTYошибка — не даёт запуститьПоля

    Промпт может оказаться пустым (например, всё внутри условий). Добавьте постоянный текст.

  • PROMPT_TOO_LONGошибка — не даёт запуститьПоля

    Худший промпт (все входы и vars максимальной длины) длиннее предела. Сократите текст или max_length входов.

  • REF_INVALIDошибка — не даёт запуститьПоля

    Неверная ссылка на медиа: в формуле — только {{@вход}} на привязанный к слоту image/video-вход; кадр принимает ровно одну картинку.

  • REF_LIMIT_EXCEEDEDошибка — не даёт запуститьМодели каталога

    Референсов больше, чем принимает модель.

  • SCHEMA_INVALIDошибка — не даёт запуститьПоля

    Схема (output_schema или коллекции) нарушает подмножество JSON Schema: ключ не к своему типу, объект без полей, required на несуществующее поле, format вне коллекции.

  • SCHEMA_TOO_DEEPошибка — не даёт запуститьПоля

    Схема вложена глубже 4 уровней объектов и массивов.

  • SLOT_INPUT_TYPE_MISMATCHошибка — не даёт запуститьПоля

    Вход не того типа для слота (в кадр — только image) или модель уровня — не вход типа model.

  • SLOT_NOT_ALLOWEDошибка — не даёт запуститьПоля

    У шага такого вида нет этого слота: у image — только reference_image, у llm и audio слотов нет.

  • SLOT_UNUSEDподсказкаПоля

    Вход не используется ни одним шагом. Уберите его или подключите.

  • STEP_KIND_NOT_AVAILABLEошибка — не даёт запуститьГраф шагов

    Вид шага tool или montage запланирован, но пока недоступен.

  • STEP_NOT_ANCESTORошибка — не даёт запуститьГраф шагов

    step_output читает шаг, которого этот шаг не ждёт. Добавьте его в needs (прямо или через другие шаги).

  • STEP_OUTPUT_IN_PARAMSошибка — не даёт запуститьПоля

    step_output нельзя использовать в params: цена должна быть известна до запуска.

  • STEP_OUTPUT_PATH_INVALIDошибка — не даёт запуститьГраф шагов

    Путь path не JSON Pointer или такого поля в выходе шага нет. * — не больше одного раза.

  • STEP_OUTPUT_TYPE_MISMATCHошибка — не даёт запуститьГраф шагов

    Тип выхода не подходит месту: в кадр — одна картинка, в reference_image — картинка или список, в vars — текст, число, да/нет или список таких.

  • STEP_OUTPUT_WILDCARD_OUTSIDE_FOREACHошибка — не даёт запуститьГраф шагов

    * (текущий элемент) работает только в шаге с foreach.

  • STEP_UNKNOWNошибка — не даёт запуститьГраф шагов

    needs, step_output или checkpoints.after называют шаг, которого нет.

  • TEXT_INVALID_CHARSошибка — не даёт запуститьПоля

    В тексте управляющие или невидимые символы. Уберите их.

  • TIER_STEP_MISSINGошибка — не даёт запуститьПоля

    Каждый шаг задаёт каждый уровень (draft/standard/premium), который есть хотя бы у одного шага цепочки.

  • TYPE_MISMATCHошибка — не даёт запуститьПоля

    Формула: вход не того вида — да/нет читают через {{#if}}, медиа — через {{@вход}}.

  • UNKNOWN_FIELDошибка — не даёт запуститьРазбор JSON

    Неизвестный ключ — в path точное место. Частая причина — опечатка или поле из другого места манифеста.

  • VALUE_INVALIDошибка — не даёт запуститьПоля

    Значение не подходит: формат id, диапазон, тип, повтор. Подробности — в message и params.

  • VALUE_REQUIREDошибка — не даёт запуститьПоля

    Нет обязательного значения: цепочки, шага, промпта, уровня standard, текста кнопки и т. п.

  • VAR_NAME_CONFLICTошибка — не даёт запуститьПоля

    Имя из vars совпадает с именем входа. Переименуйте одно из них.

  • VAR_UNUSEDподсказкаПоля

    Промпт не читает это значение из vars. Уберите его или вставьте {{имя}} в промпт.

  • WRITES_TYPE_MISMATCHошибка — не даёт запуститьГраф шагов

    Поле коллекции не примет выход шага: текст — в string, медиа — в поле {type: object, format: media}, foreach — в массив таких элементов, объект — в объект со всеми его полями.