VlogMe / Для разработчиков
Сценарии REST API и MCP
Подключайте сценарии Director и студий через REST API и MCP, передавайте промпты и ссылки на материалы, отслеживайте задачи и сохраняйте результаты в общем Lab — это те же сценарии, что и в приложении VlogMe.
На этой странице
Как работает API
REST API и MCP-сервер запускают те же задачи, что и приложение VlogMe, — Director, Video, Image и Audio Studio, Aisma, DUB и Новостные видео — в том же аккаунте, с тем же балансом кредитов и тем же Lab.
Как получить доступ. API и MCP доступны всем зарегистрированным пользователям VlogMe. Создайте ключ в Account → API & MCP; разрешение поддержки не требуется. По вопросам больших объёмов и интеграции для команды пишите на sales@vlogme.ai.
Дальше интеграция проходит пять шагов:
- Создайте ключ API в разделе Account → API & MCP (кабинет пока доступен только на английском).
- Загрузите фото, видео или аудио, нужные задаче, или возьмите файл из Lab.
- Запросите цену: VlogMe вернёт точную стоимость задачи в кредитах.
- Запустите задачу с этой ценой. По другой цене она не запустится.
- Отслеживайте её запросами или через вебхук; результаты сохраняются в Lab.
То же самое агенты могут делать через MCP-сервер: его инструменты охватывают задачи, Director, файлы Lab, проекты, шаблоны, голоса, Новостные видео и публикации в соцсетях — с тем же ключом, балансом и проверками, что и REST.
Об изменениях API и MCP мы сообщаем в журнале разработки.
Подключение агента
ИИ-агенты работают в том же аккаунте, с тем же ключом, балансом и ценами через MCP-сервер https://vlogme.ai/mcp. Точные шаги для каждого клиента — на странице настройки MCP-сервера:
- Claude Code, Cursor и VS Code
- Gemini CLI и Codex
- сценарии n8n
В Claude Code это одна команда, ключ — в VLOGME_API_KEY:
claude mcp add --transport http vlogme https://vlogme.ai/mcp --header "Authorization: Bearer $VLOGME_API_KEY"
Перед любой платной задачей агент запрашивает цену и показывает вам кредиты. Раздел MCP-сервер ниже перечисляет все инструменты и права ключа, которые им нужны.
Ключи API и доступ
Каждый запрос передаёт ключ в заголовке Authorization:
Authorization: Bearer vma_…
- Ключ может то, что вы отметили при его создании в Account → API & MCP:
- read — показывать файлы Lab, задачи и баланс и запрашивать цену. Это право есть у каждого ключа.
- write — загружать и импортировать файлы, переименовывать и архивировать их, сохранять проекты, планировать и готовить материалы в Director и запускать платные задачи по рассчитанной цене.
- delete — удалять файлы, проекты, клоны голоса и мониторы новостей. Удаление нельзя отменить.
- share — создавать и отзывать публичные ссылки.
- publish — публиковать видео или ставить их в расписание в подключённых соцсетях.
- Ключи, созданные до появления этого выбора, сохраняют прежние права: ключ «Read» только читает, а ключ «Read and create jobs», как и раньше, также удаляет файлы и создаёт ссылки.
- Запрос, недоступный ключу, отклоняется с
403иcode: scope_missing.GET /api/meпоказывает права самого ключа вtoken.scopes. - Ключ действует от 1 до 365 дней (по умолчанию 90). Отозвать его можно в любой момент в Account → API & MCP — интеграции, которые им пользуются, сразу остановятся.
- Ключом нельзя сменить тариф, создать другие ключи, удалить аккаунт или открыть инструменты администратора: для этого нужен вход в аккаунт (
code: session_required).
Храните ключи в секрете: они действуют от имени вашего аккаунта и расходуют его кредиты (Условия использования).
Описание задач и запросов
Два публичных адреса описывают всё, что может отправить интеграция. Ключ для них не нужен.
GET /api/catalogперечисляет всеkindзадач (с workflow или моделью): входные данные в виде JSON Schema, нужные файлы Lab, допустимые длительности, соотношения сторон и качество, правило цены, пример входных данных с его ценой в кредитах и доступность прямо сейчас.?kind=videoсужает список. Там же — схемы Director: новый проект, команда правки, реплика в чате и подготовка материалов.GET /api/openapi.json— описание REST API в формате OpenAPI 3.1. Полеx-scopeу каждой операции называет нужное право ключа.
Поля из списка server_fills, например длительность видео, VlogMe измеряет по вашему файлу, поэтому их можно не передавать.
Цена, запуск и статус задачи
Задача — это одна единица работы: клип, аватар, изображение, голосовая дорожка, правка, дубляж, изменение в Aisma, видео Новостные видео или рендер Director. Её kind — одно из значений video, avatar, image, audio, video_edit, dub, trend, aisma, voice_clone, director, а input содержит те же настройки, что и соответствующий экран приложения.
Обычные изменения в Image Editor экспортируются в браузере и не являются серверной задачей. Для генерации и редактирования изображений с ИИ используйте kind: image с нужным workflow.
| Запрос | Что делает |
|---|---|
POST /api/jobs/quote | Возвращает credits, части цены parts и quote_fingerprint для kind и input |
POST /api/jobs | Запускает задачу с quoted_credits и quote_fingerprint из расчёта цены; заголовок Idempotency-Key (UUID) делает так, что повторный запрос возвращает ту же задачу, а не запускает вторую |
GET /api/jobs | Ваши задачи, начиная с новых. Фильтры kind, status и project_id; страницы — через limit (до 100) и полученный next_cursor; fields=compact не возвращает входные данные |
GET /api/jobs/{id} | Статус задачи, её результаты results (созданные файлы Lab) и предупреждения warnings; ?wait=30 ждёт окончания задачи до указанного числа секунд |
GET /api/jobs/{id}/clips | Клипы готовой правки Aisma: версии каждого клипа, цена его повторной генерации и то, актуально ли полное видео |
Например, запросить цену изображения и запустить задачу:
curl https://vlogme.ai/api/jobs/quote \
-H "Authorization: Bearer $VLOGME_KEY" \
-H "Content-Type: application/json" \
-d '{"kind": "image", "input": {…}}'
curl https://vlogme.ai/api/jobs \
-H "Authorization: Bearer $VLOGME_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f1c2b8e-7d4a-4f0e-9b1a-2c3d4e5f6a7b" \
-d '{"kind": "image", "input": {…}, "quoted_credits": 12, "quote_fingerprint": "…"}'
Если цена или входные данные изменились после расчёта, запуск отклоняется с кодом 409 и ничего не списывается: запросите цену заново. Если задача завершилась ошибкой, подлежащие возврату кредиты автоматически возвращаются на баланс. Запущенную задачу нельзя отменить: провайдеры не всегда могут её остановить.
Изменить один клип правки Aisma. В готовой правке Aisma можно заново сгенерировать один клип, не переделывая всё видео. GET /api/jobs/{id}/clips, где id — задача самой правки, возвращает её клипы с номером index и ценой повторной генерации в credits. Запросите цену и запустите задачу aisma с input вида {"clip": {"job_id": "<id задачи правки>", "op": "regenerate", "part": <index>, "clarification": "…"}}: уточнение необязательно, а клип создаётся на той же версии и в том же качестве, что и правка. Списывается только цена этого клипа, и ничего не списывается, если Aisma не применила уточнение, не смогла создать клип или оставила его как в исходном видео. В input.clip_result завершённой задачи указаны итог outcome и, если уточнение не применено, причина reason; её результат — обновлённое полное видео, новый файл в Lab. Для правки, у которой нет клипов для чтения, clips равно null: она создана до того, как клипы стало можно менять, или её файлы удалены вместе с исходным видео. В остальных случаях disabled говорит, почему сейчас нельзя изменить ни один клип (starting, failed, busy или materials; null, если можно), а finish — как привести полное видео в актуальное состояние (assemble: запустите задачу с {"clip": {"job_id": "…", "op": "assemble"}}; reassemble: POST /api/jobs/{id}/reassemble; null: видео актуально). Клип с mode, равным change, Aisma оставила как в исходном видео: чтобы сгенерировать его заново с ключом, нужно передать уточнение. Обновления, которые завершились без списания, ограничены: есть почасовой лимит для каждой правки и общий — для всех правок аккаунта. Когда любой из них исчерпан, расчёт цены и запуск задачи отвечают 429 с retry_after_s. Уточняющие вопросы Aisma задаёт только в приложении: правку, запущенную с ключом, она ни о чём не спрашивает.
Видео Director через API
Ключ с правом write может провести видео от идеи до готового файла:
POST /api/director/projectsс{"version": 2, "concept": "…"}создаёт проект.POST /api/director/projects/{id}/turnsс новымclient_request_idиbase_revisionпроекта просит Director составить план.GET /api/director/turns/{id реплики}?wait=30ждёт, пока план будет готов или Director задаст вопрос; ответить на него можно черезPOST /api/director/turns/{id реплики}/answer.POST /api/director/projects/{id}/prepareбесплатно готовит изображения, голоса и музыку, аGET /api/director/projects/{id}/viewпоказывает, что уже готово. Подготовка занимает время: запрашивайте/viewснова, пока всеmaterialsне станутready.POST /api/director/projects/{id}/render/quoteрассчитывает цену видео (remake_scene_numbersзаново делает выбранные сцены), аPOST /api/director/projects/{id}/renderс этимиrevision,quoted_credits,quote_fingerprintиIdempotency-Keyзапускает его. Если после расчёта план изменился, запуск отклоняется с409(code: revision_conflict) и ничего не списывается.GET /api/jobs/{id задачи}?wait=30— до окончания задачи; затемGET /api/director/projects/{id}/resultвозвращает видео и субтитры со ссылками, действующими 15 минут.
Планирование, чат и бесплатная подготовка через ключ расходуют тот же бесплатный лимит аккаунта, что и приложение: агент, который много планирует, исчерпывает его и для приложения. Когда лимит на время исчерпан, ответ содержит limited: true.
Лица и места бесплатны в пределах лимита. После него изображения бесплатного аккаунта не создаются: ответ /prepare перечисляет их в поле plan_required (и в skipped), и чтобы создавать изображения дальше, нужен тариф. С тарифом изображения сверх его лимита возвращаются в поле charged с ценой: оцените их через POST /api/jobs/quote (kind director, input {"v": 2, "stage": "materials", "project_id": "…", "revision": 3, "keys": ["…"]}) и запустите как любое платное задание. Изображение, которое к рендеру видео всё ещё missing в /view, создаётся в рендере и входит в его показанную цену. Новый вариант уже готового изображения («Попробовать снова») — это POST /api/director/projects/{id}/prepare с его ключом в keys и "regenerate": true.
Чтобы изменить план, отправьте сообщение в /turns (с scope.block_ids, чтобы изменить только некоторые сцены) или структурную правку в POST /api/director/projects/{id}/edits по схеме director.edit_command_schema из GET /api/catalog. POST /api/director/projects/{id}/undo возвращает прежнюю версию. Каждое изменение передаёт прочитанный base_revision и новый client_request_id: устаревшая версия отклоняется с 409, а повтор того же client_request_id воспроизводит изменение, а не делает его дважды.
Файлам, которые вы добавляете в план, нужен rights_confirmed: true. Переданный через ключ, он означает ваше собственное подтверждение, что у вас есть права на эти файлы и на людей в них (Условия использования).
Файлы Lab: загрузка, импорт и скачивание
GET /api/assetsпоказывает файлы Lab, начиная с новых.section=main— «Файлы» (готовые видео, результаты и загрузки),working— файлы, которые проект использует в работе,archived— архив,all(по умолчанию) — все файлы, кроме архивных. Фильтрыkind,project_id(илиnone) иq;fields=compactне возвращает метаданные; страницы — черезlimitи полученныйnext_offset.GET /api/assets/working-projectsгруппирует рабочие файлы по проектам.POST /api/assets/intentс полямиmime_type,bytesиtitleрезервирует файл в Lab и возвращает адрес и токен для возобновляемой загрузки (tus). Изображения: JPEG, PNG, WebP, BMP. Видео: MP4, MOV, M4V, до 150 минут. Аудио: MP3, M4A, WAV, OGG. До 1 ГБ на файл.- Если добавить
content_sha256(SHA-256 файла: 64 шестнадцатеричных символа в нижнем регистре), уже загруженный вами такой же файл используется повторно: ответ200содержитreused: trueи этот файл, загружать ничего не нужно. Чтобы сохранить вторую копию, передайте ещё иallow_duplicate: true. POST /api/assets/{id}/completeпроверяет загрузку, после чего файл можно указать воinputзадачи.- Для ключа API ответ также содержит
put_url— один подписанный адрес, куда весь файл загружается однимPUT(curl -T clip.mp4 -H "Content-Type: video/mp4" "$put_url") вместо tus. ЗаголовокIdempotency-Key(UUID) при повторе возвращает тот же файл. POST /api/assets/importс{"url": "https://…"}иIdempotency-Keyв фоне загружает файл с публичного HTTPS-адреса. Ответ —202с id нового файла; затемGET /api/assets/{id}показываетimport.status, пока файл не будет готов, илиfailedсerror_code. Адреса самого VlogMe, частных сетей и IP-адреса отклоняются.PATCH /api/assets/{id}сtitleпереименовывает файл, а сarchived: trueпереносит его в архив (falseвозвращает); файлы, которые проект использует в работе, остаются в рабочих файлах.DELETE /api/assets/{id}удаляет файл навсегда (право delete). Файл, который ещё нужен запущенной задаче, не удаляется: ответ409.GET /api/assets/working-projects/{id}/cleanupпоказывает, что удалит очистка в одном проекте (прежние варианты, неиспользованные изображения, остатки), с причиной для каждого файла.POSTпо тому же адресу сasset_idsиз этого списка удаляет до пяти из них за запрос (право delete). Автоматически ничего не удаляется.GET /api/assets/{id}/downloadвозвращает закрытую ссылку на 60 секунд;ttlпродлевает её до часа, аredirect=1отвечает переадресацией на файл, так что его скачиваетcurl -L.
Файлы, загруженные через API, остаются закрытыми в вашем Lab — так же, как файлы, загруженные в приложении.
Проекты, шаблоны и голоса
GET /api/projectsпоказывает ваши проекты, начиная с новых: проекты Director (с идеей и кратким описанием) и черновики Новостные видео, Aisma, DUB и Image Editor (с сохранёнными данными). Фильтрkind; страницы — черезlimitи полученныйnext_cursor.POST /api/projectsсkind,titleиdataсохраняет новый черновик; заголовокIdempotency-Keyпри повторе возвращает тот же черновик.PUT /api/projects/{id}с текущейrevisionчерновика сохраняет изменения, а устаревшая версия отклоняется с409.DELETE /api/projects/{id}удаляет проект (право delete); его файлы в Lab остаются.- Проекты Director создаются через
POST /api/director/projects(см. выше), а не как черновики. GET /api/templatesпоказывает опубликованные шаблоны Aisma (category,q,limit,cursor),GET /api/templates/{id}— один шаблон, аPOST /api/templates/{id}/openсIdempotency-Keyоткрывает его как новый проект.GET /api/voicesпоказывает голоса, доступные задачам и персонажам Director: готовые голоса и ваши готовые клоны.GET /api/voice-clonesпоказывает ваши клоны со статусом, аDELETE /api/voice-clones/{id}удаляет клон, в том числе у провайдера голосов (право delete).
Новостные видео и публикации в соцсетях
GET /api/trends/search?q=…ищет свежие новости (language—enилиru;country,category,domains,sort_by).POST /api/trends/scriptпишет сценарий по новости с опорой на её источники, аPOST /api/trends/verifyсверяет сценарий с ними.- Мониторы новостей ищут новые сюжеты по расписанию:
GETиPOST /api/trends/monitors,PUTиDELETE /api/trends/monitors/{id}. GET /api/social/connectionsпоказывает подключённые соцсети, аGET /api/social/publications— ваши публикации со статусом. Подключить аккаунт можно только после входа в приложении.POST /api/social/publicationsсasset_id(готовое видео) иplatform, по желанию сcaption,headline,visibility,cover_asset_idиscheduled_at, а также сIdempotency-Keyпубликует видео или ставит его в расписание. Для этого нужно право publish, которое есть у ключа, только если вы его отметили. Публикацию видят все: агент должен показать вам видео, площадку и подпись и публиковать только после вашего явного согласия.POST /api/social/publications/{id}/cancelотменяет публикацию, которая ещё не вышла (право publish или write).- Предпросмотр видеоредактора (
POST /api/video-editor/preview) возвращает поток MP4, поэтому он доступен только через REST.
Ожидание: долгий опрос и вебхуки
Узнать, что работа закончена, можно двумя способами.
Долгий опрос. GET /api/jobs/{id}?wait=30 и GET /api/director/turns/{id}?wait=30 ждут до указанного числа секунд (от 0 до 30), пока задача или реплика не завершится (реплика останавливается и тогда, когда Director задаёт вопрос), и возвращают её с waited_seconds. Пока работа идёт, retry_after_s подсказывает, когда спросить снова. Так ждёт агент на ноутбуке, который не может принимать вебхуки.
Вебхуки. Укажите webhook_url — публичный HTTPS-адрес — при запуске задачи с ключом API, и VlogMe отправит событие, когда задача завершится:
{"id": "job.<job id>.succeeded", "type": "job.succeeded", "created_at": "…",
"job": {"id": "…", "kind": "image", "status": "succeeded", "result_asset_id": "…", "error_code": null}}
- Тип события —
job.succeeded,job.failedилиjob.partial(часть результатов уже в Lab, а кредиты за недостающие части возвращены). Задача на проверке (needs_review) ещё не завершена: событие придёт, когда она завершится. - Частично готовую задачу, у которой не удалась финальная сборка, можно бесплатно собрать заново запросом
POST /api/jobs/{id}/reassemble. Когда сборка закончится, новое событие сообщит результат — даже если сборка снова не удалась и задача осталась частично готовой. У каждого результата свой id события: у частичного в конце стоит егоerror_code(job.<job id>.partial.<error code>), а после неудачных повторных сборок — ещё.retry<n>, где n — их число;GET /api/jobs/{id}показывает это число в полеreassembly_failures. Правка Aisma, клипы которой менялись, собирается иначе: для неё этот запрос отклоняется с кодом409(clip_job_required), а видео бесплатно собирает задача сinputвида{"clip": {"job_id": "<id задачи правки>", "op": "assemble"}}. Такая же задача собирает видео, если задача клипа завершилась частично с кодомaisma_clip_video_pending. - Каждая доставка содержит заголовки
X-VlogMe-Event-Id,X-VlogMe-TimestampиX-VlogMe-Signature: v1=<hex>— HMAC-SHA256 от<timestamp>.<body>, где ключом служит SHA-256-хеш вашего ключа API. Проверяйте подпись и отклоняйте устаревшие метки времени. - Если доставка не получила ответ 2xx, она повторяется до восьми раз — сначала через 30 секунд, затем реже, до раза в час. Отзыв ключа прекращает доставки.
MCP-сервер
ИИ-агенты, поддерживающие Model Context Protocol, подключаются к https://vlogme.ai/mcp (JSON-RPC 2.0 через HTTP POST) с тем же ключом Authorization: Bearer; https://vlogme.ai/api/mcp — тот же сервер по второму адресу. Поддерживаемые версии протокола: 2026-07-28 (без состояния, с заголовками Mcp-Method и Mcp-Name и методом server/discover), а также 2025-11-25, 2025-06-18 и 2025-03-26 (с initialize, который отвечает той версией, что запросил клиент). Запрос без заголовка MCP-Protocol-Version считается запросом версии 2025-03-26. Размер запроса — до 1 МБ.
Инструменты охватывают то, что ключ может делать через REST. Каждому инструменту нужно право из таблицы. Список инструментов не зависит от прав ключа; вызов, недоступный ключу, возвращается как отказ с code: scope_missing. С ?tools=all в адресе (https://vlogme.ai/mcp?tools=all) список называет все инструменты из таблицы; как подключить каждый клиент, показано на странице настройки MCP-сервера.
| Инструмент | Право | Что делает |
|---|---|---|
vlogme_account | read | Аккаунт и баланс кредитов |
vlogme_get_catalog | read | Каталог задач |
vlogme_list_assets | read | Список файлов Lab |
vlogme_get_asset | read | Файл Lab и ссылка на скачивание |
vlogme_list_working_projects | read | Рабочие файлы по проектам |
vlogme_create_upload | write | Начать загрузку файла |
vlogme_complete_upload | write | Завершить загрузку файла |
vlogme_import_asset | write | Импорт файла по ссылке |
vlogme_update_asset | write | Переименовать или архивировать файл |
vlogme_delete_asset | delete | Удалить файл Lab |
vlogme_share_asset | share | Включить или отключить публичную ссылку |
vlogme_preview_cleanup | read | Предпросмотр очистки |
vlogme_cleanup_working_files | delete | Очистить рабочие файлы |
vlogme_list_jobs | read | Список задач |
vlogme_get_job | read | Одна задача |
vlogme_wait_job | read | Дождаться окончания задачи |
vlogme_get_job_clips | read | Клипы готовой правки Aisma |
vlogme_quote_job | read | Рассчитать цену задачи |
vlogme_create_job | write | Запустить платную задачу |
vlogme_reassemble_job | write | Заново собрать частично готовую задачу |
vlogme_list_projects | read | Список проектов |
vlogme_save_project | write | Сохранить черновик |
vlogme_delete_project | delete | Удалить проект |
vlogme_director_create | write | Новый проект Director |
vlogme_director_get | read | Проект Director |
vlogme_director_message | write | Написать Director |
vlogme_director_turn | read | Реплика Director: прочитать или дождаться |
vlogme_director_answer | write | Ответить на вопрос Director |
vlogme_director_turn_action | write | Остановить, применить или отклонить реплику |
vlogme_director_edit | write | Изменить план |
vlogme_director_undo | write | Вернуть прежнюю версию плана |
vlogme_director_prepare | write | Подготовить изображения, голоса и музыку |
vlogme_director_quote_render | read | Рассчитать цену видео |
vlogme_director_render | write | Запустить рендер видео |
vlogme_director_result | read | Готовое видео |
vlogme_list_templates | read | Список шаблонов |
vlogme_get_template | read | Один шаблон |
vlogme_open_template | write | Открыть шаблон |
vlogme_list_voices | read | Список голосов |
vlogme_delete_voice_clone | delete | Удалить клон голоса |
vlogme_trends_search | read | Поиск новостей |
vlogme_trends_discover | read | Подбор новостей |
vlogme_news_read_article | write | Прочитать полную новостную статью |
vlogme_news_get_article | read | Сохраненная статья и абзацы для цитат |
vlogme_trends_script | write | Написать сценарий Новостные видео |
vlogme_trends_verify | write | Привязать источники без изменения текста (старый интерфейс) |
vlogme_news_presenters | read | Сохранённые ведущие новостей |
vlogme_news_create_presenter | write | Сохранить ведущую новостей |
vlogme_news_update_presenter | write | Обновить профиль ведущей |
vlogme_news_delete_presenter | delete | Удалить сохранённый профиль ведущей |
vlogme_news_tasks | read | Новостные задачи и общий бюджет |
vlogme_news_create_task | write | Создать новостную задачу |
vlogme_news_update_task | write | Изменить новостную задачу |
vlogme_news_delete_task | delete | Остановить и удалить новостную задачу |
vlogme_news_run_task | write | Подготовить новость для ручной проверки |
vlogme_news_task_runs | read | Журнал запусков новостной задачи |
vlogme_social_status | read | Соцсети и публикации |
vlogme_publish_video | publish | Опубликовать видео |
vlogme_cancel_publication | publish / write | Отменить публикацию |
- Инструменты, которые только читают, помечены
readOnlyHint. Инструменты, которые удаляют, помеченыdestructiveHint, и их описание начинается с «Irreversible.»; описание инструмента, который делает что-то публичным, начинается с «Public.», а платные инструменты предупреждают о списании кредитов. Агент должен сначала подтвердить такие вызовы у вас. - Аргументы проверяются по схеме инструмента. Неверный или лишний аргумент отклоняется до отправки запроса — результатом с
isError: trueиcode: invalid_input. - Каждый инструмент-список принимает
limit(от 1 до 50, по умолчанию 20) иcursorи возвращаетnext_cursor(nullна последней странице). vlogme_wait_jobиvlogme_director_turnждут до 30 секунд за вызов; вызывайте их снова, пока в ответе естьretry_after_s.- Ресурсы:
resources/readотдаётvlogme://docs/agents(руководство для агентов: от идеи до видео, правила оплаты, ожидание и ошибки),vlogme://catalog(каталог задач) иvlogme://openapi(описание OpenAPI).initializeвозвращает краткие инструкции с теми же сценариями.
Чтобы запустить задачу через MCP:
- Вызовите
vlogme_quote_jobсkindиinputи проверьте возвращённую стоимостьcredits. - Вызовите
vlogme_create_jobс теми жеkindиinput, новым UUIDidempotency_key, значениемquoted_creditsиз полученногоcreditsи неизменённымquote_fingerprint. Для Aisma также передайте неизменённыйquote_proofиз расчёта цены. - Если подтверждение истекло или цена либо входные данные изменились, запросите и подтвердите новую цену перед повторной попыткой. Повтор уже принятого запроса с тем же
idempotency_keyвозвращает ту же задачу.
Видео Director запускается по тому же правилу: vlogme_director_quote_render, показать цену, затем vlogme_director_render с этой ценой и idempotency_key.
Необязательный webhook_url получает события задачи, описанные выше. MCP использует тот же ключ API, баланс и проверки цены, что и REST.
Для Codex добавьте сервер в ~/.codex/config.toml, а ключ храните в переменной окружения VLOGME_API_KEY:
[mcp_servers.vlogme]
url = "https://vlogme.ai/mcp"
bearer_token_env_var = "VLOGME_API_KEY"
tool_timeout_sec = 120
Ограничения и правила
- Задачи стоят столько же кредитов, сколько в приложении, и списываются с того же баланса; рассчитанная цена и есть цена.
Idempotency-Key— это UUID. Повторное использование ключа для другого запроса отклоняется.- Задачам Aisma нужен
quote_proof, который возвращает расчёт цены. У него есть срок действия: когда он истечёт, запросите цену снова. - Задача Aisma принимает необязательное поле
engine:v1илиv2; если его не передать, используетсяv2. Версии различаются ценой и числом фотореференсов; лимит каждой указан вGET /api/catalog?kind=aisma. Расчёт цены действует для одной версии: чтобы запустить другую, запросите цену снова. Проект, открытый из шаблона, всегда выполняется наv2. - Ошибки возвращаются в JSON
{"error": "…", "code": "…"}с HTTP-статусом:400— неверные данные (invalid_input),403— запрос, который не разрешают права ключа (scope_missing,session_required),404— не найдено,409— изменились цена, входные данные или план,429— слишком много запросов,503— сервис или провайдер временно недоступен. - Число запросов ограничено. Сверх лимита ответ —
429сcode: rate_limitedи заголовкомRetry-After: подождите указанное число секунд и повторите. - Через MCP отклонённый вызов инструмента — не HTTP-ошибка: он возвращается как результат инструмента с
isError: true, внутри которого тот же JSON (error,statusи, если есть,code). HTTP-ошибками там остаются только отсутствующий или неверный ключ (401), аккаунт без доступа к API или чужойOrigin(403) и некорректный запрос. - На работу, созданную через API, распространяются Условия использования, как и на работу в приложении.


