Что умеет API
Всё, что ты делаешь в студии руками, агент может сделать по ключу. Ключ заводится в студии: «⋮» → API → Создать ключ. Права ключа режут сам список: ключ «смотрит» пишущих инструментов не видит вовсе.
Список ниже печатается из реестра студии — он не может отстать от неё.
claude mcp add --transport http vini https://vinistudio.app/mcp \ --header "Authorization: Bearer $VINI_API_KEY"
| Инструмент | Что делает | Цена |
|---|---|---|
| смотрит | ||
| describe_studio | Каталог студии: какие ноды в ней есть и ЗАЧЕМ каждая нужна (purpose — одна фраза назначения), их входы, выходы, парам… | — |
| model_advice | Справка студии по моделям: чем они реально отличаются, когда какую брать и что мы проверили сами. | — |
| list_skills | Приёмы студии и приёмы пользователя: чем каждый занимается, к каким нодам подходит и под какую модель написан. | — |
| read_project_graph | Что сейчас собрано на канвасе проекта: ноды (название на карточке, параметры, статус результата) и провода между ними… | — |
| read_run_history | История запусков проекта: какие ноды прогонялись, когда, с каким исходом и почём — строкой результата («без изменений… | — |
| trace | Причинная цепочка результата: почему нода или материал получились такими. | — |
| describe_scene | Содержимое сцены-контейнера по её адресу из сводки канваса: что в ней лежит, кто её несёт и кто её менял по дороге. | — |
| list_my_elements | Библиотека элементов пользователя (персонажи/объекты/локации) — id, имя, роль, начало описания. | — |
| describe_element | Полное описание ОДНОГО элемента библиотеки по его id — когда в списке элементов текст сокращён, а нужен целиком (разо… | — |
| list_my_prompts | Сохранённые промпты пользователя (id + заголовок). | — |
| list_my_designs | Дизайн-системы пользователя (id + заголовок). | — |
| list_generators | Готовые решения для ноды (модель, формат и промпт одним куском): встроенные в студию (лист раскадровки персонажа, рас… | — |
| billing_status | Сколько денег на счету прямо сейчас и ведётся ли вообще их учёт. | — |
| billing_history | Куда ушли деньги: сумма за период и разбивка по видам работы, моделям, проектам и дням. | — |
| list_projects | Проекты этого аккаунта: название, когда их последний раз правили, и адрес, по которому проект открывается. | — |
| list_artifacts | Материалы аккаунта — кадры, клипы, звук и загруженные документы. | — |
| get_artifact | Один материал и ссылка, по которой его можно скачать. | — |
| list_jobs | Задачи генерации: что считается прямо сейчас и чем кончилось недавнее. | — |
| get_job | Состояние одной задачи по её job_id. | — |
| lore_standard | Стандарт общего лора пространства и что в нём ещё не заполнено. | — |
| list_workspaces | Пространства этого аккаунта: id, название и сколько в каждом проектов. | — |
| get_workspace_lore | Общий лор пространства: документы, которые студия кладёт в запрос текстовых нод его проектов. | — |
| get_run | Состояние прогона ноды по run_id: статус, ноды прогона и потрачено. | — |
| price_quote | Сколько будет стоить запуск — до того, как он случится. | — |
| list_social_accounts | Подключённые соцсети владельца ключа: id, площадка, ник и состояние. | — |
| get_copilot_task | Ход задачи Вини по task_id: статус, вопрос, лента событий (said — реплика Вини, tool — вызов инструмента, question, a… | — |
| собирает | ||
| create_project | Завести новый пустой проект студии и получить его адрес. | — |
| apply_graph_ops | Собрать или изменить граф проекта: добавить ноды, задать им поля, соединить проводами. | — |
| expand_scenes | Развернуть написанные сцены «Промпт Сценариста» в ноды, как кнопка «Развернуть всё» в студии. | — |
| set_project_format | Задать или сбросить формат ролика всего проекта. | — |
| create_workspace | Завести новое пустое пространство и получить его id. | — |
| move_project | Перенести проект в другое пространство этого аккаунта. | — |
| put_workspace_lore | Записать документ общего лора пространства: без doc_id — новый, с doc_id — заменить текст и название существующего. | — |
| write_lore | Записать общий лор пространства по стандарту мастера лора из ответов человека по шагам. | — |
| upload_artifact | Загрузить файл в свои материалы: картинку, видео, звук, PDF, TXT или другой документ. | — |
| start_upload | Начать загрузку большого файла в свои материалы. | — |
| upload_chunk | Передать очередной кусок начатой загрузки файла. | — |
| finish_upload | Завершить загрузку файла и получить материал в своей библиотеке. | — |
| cancel_upload | Отменить незавершённую загрузку файла и убрать её временные куски. | — |
| assemble_video | Склеить клипы в один ролик. | — |
| edit_video | Подрезать ролик по краям. | — |
| extract_audio | Достать звуковую дорожку из ролика. | — |
| import_clip | Забрать ролик по ссылке, чтобы работать с ним дальше. | — |
| inspect_import | Узнать доступные качества видео YouTube перед импортом. | — |
| put_publish_draft | Подготовить пост ролика или картинки (картинка — только Instagram): подпись, кадр обложки и аккаунт — публикует человек. | — |
| save_element | Сохранить Элемент — героя, предмет или место — в свою библиотеку студии или обновить сохранённый. | — |
| генерирует | ||
| run_node | Прогнать ноду проекта, как кнопка ▶ в студии: её и всё, что выше неё и ещё не свежее. | по прайсу |
| stop_run | Остановить идущий прогон ноды по run_id: новые запросы не начнутся, уже отправленные в модель доведутся и оплатятся. | по прайсу |
| generate_text | Написать текст моделью — короткий кусок по заданию. | по прайсу |
| generate_image | Нарисовать кадр по описанию и референсам. | по прайсу |
| generate_music | Сочинить музыкальную подложку по описанию настроения (модель и вокал — по желанию). | по прайсу |
| generate_voice | Озвучить текст выбранным голосом. | по прайсу |
| clone_voice | Сделать голос по образцу записи — чтобы потом озвучивать им. | по прайсу |
| isolate_audio | Выделить чистую речь из аудио или видео: voice_url — голос, bg_url — фон, если удалось выделить остаток. | по прайсу |
| analyze_audio | Разобрать звук — трек, песню, речь или звуковую дорожку ролика — ответом на твой вопрос. | по прайсу |
| dub_video | Переозвучить готовый ролик на другом языке. | по прайсу |
| upscale_image | Увеличить кадр без потери резкости. | по прайсу |
| write_script | Разложить идею на сцены: что происходит, что видно в кадре, кто говорит. | по прайсу |
| write_scene_prompts | Собрать из сцены готовые задания для кадра и для клипа. | по прайсу |
| rewrite_scene | Переписать одну сцену, не трогая остальные. | по прайсу |
| direct_scene | Разобрать сцену постановочно: движение камеры, действие, ритм. | по прайсу |
| make_subtitles | Сделать субтитры к ролику по его звуку. | по прайсу |
| normalize_subtitles | Причесать субтитры: разбивка по строкам, тайминги, пунктуация. | по прайсу |
| decorate_video | Оформить ролик — подписи, плашки, акценты поверх картинки. | по прайсу |
| generate_video | Снять клип. | по прайсу |
| lipsync_video | Свести речь с губами героя в готовом ролике. | по прайсу |
| analyze_video | Разобрать чужой ролик-референс языком режиссёра и оператора — разбор, стиль кадра, стиль движения и планы. | по прайсу |
| start_copilot_task | Поставить задачу Вини, копилоту студии: он сам строит граф проекта, прогоняет ноды и сдаёт отчёт — как человек в студ… | по прайсу |
| answer_copilot_task | Ответить Вини на вопрос задачи (status: needs_answer) — задача продолжится. | по прайсу |
| stop_copilot_task | Остановить задачу Вини: новые раунды не начнутся, идущий прогон ноды получит stop_run; уже отправленные запросы довед… | по прайсу |
Ссылка на проект
create_project, list_projects и read_project_graph отдают url — адрес проекта в браузере. Подставляй этот url (или только его хвост из 12 символов, или id) в project_id любого инструмента: студия сама сводит его к проекту твоего аккаунта. Ссылка открывается в браузере только у человека, вошедшего в аккаунт владельца ключа (владение ссылкой доступа не даёт), и переживает перенос и переименование проекта. Чужой или несуществующий проект отвечает так же, как неверный id; исключение — list_jobs и list_artifacts: для чужого, несуществующего проекта или опечатки в ссылке они возвращают пустой список, и пустота не значит «ничего не идёт». Проверить ссылку запросом нельзя: сайт отвечает оболочкой на любой адрес верной формы, есть проект или нет; проверяй её инструментом (read_project_graph). При создании передай project_aspect в create_project: 9:16 для Reels/Shorts/TikTok, 16:9 для горизонтального видео, 1:1 для квадратного поста, 3:4 по брифу. Явный выбор пользователя сильнее рекомендации; неясное назначение уточни. Позже используй set_project_format с текущей based_on_revision; project_aspect: null снимает умолчание. Собственный формат ноды и Сценариста сильнее. Смена может сделать результаты устаревшими, но ничего не генерирует; во время прогона — busy.
Загрузка файлов
Картинки, видео, звук, PDF, TXT и другие документы загружай через upload_artifact: передай исходное имя в filename и байты в data_url (data:<MIME>;base64,…). Проект необязателен. Нужны права «собирает».
Для больших файлов: start_upload → upload_chunk → finish_upload. Передай в начале MIME-тип и размер в исходных байтах; куски отправляй по порядку с индекса 0, их размер указан в ответе chunk_bytes (4 МиБ). Целиком — до 24 МиБ, кусками — до 2048 МиБ; около предела тела JSON (32 МиБ) используй куски. Незавершённую загрузку отменяет cancel_upload.
В ответе получишь artifact_id, адрес и сведения о файле. Медиа можно закрепить на ноде правкой pin_file. Документы сохраняются целиком, без автоматического извлечения текста; для скачивания используй get_artifact.
REST принимает тот же JSON и Bearer-ключ: POST на /api/artifacts/upload, а для загрузки кусками — на /api/artifacts/upload/start, /chunk, /finish, /cancel. Эти пять маршрутов доступны ключу с правами «собирает». Пример загрузки TXT:
curl 'https://vinistudio.app/api/artifacts/upload' \
-H "Authorization: Bearer $VINI_API_KEY" \
-H 'Content-Type: application/json' \
--data '{"filename":"brief.txt","data_url":"data:text/plain;base64,SGVsbG8="}'
Машиночитаемая версия для агента — /mcp/llms.txt, без авторизации.
Чего пока нет: запуска проекта одной командой и управления ключами по ключу — ключи заводятся только в браузере.