In English

Что умеет 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, без авторизации.
Чего пока нет: запуска проекта одной командой и управления ключами по ключу — ключи заводятся только в браузере.