1313 разделов — нажмите для перехода
Что можно создать
Программно создавайте видеопроекты и говорящие аватары в том же аккаунте, с теми же кредитами и историей, что и в веб‑приложении.
REST подходит для backend, автоматизации и продуктовой интеграции. MCP нужен, когда AI‑агент должен сам увидеть инструменты, рассчитать стоимость и отправить задачу.
Публичный v1 работает асинхронно: сохраните ID задачи, опрашивайте статус или принимайте подписанный webhook. Для генерации должно хватать кредитов на точный резерв.
- Оценка стоимости до списания кредитов.
- Говорящее видео из портрета и текста с голосом либо из готового аудио.
- Прогресс задачи и временная подписанная ссылка на результат.
- Безопасный повтор платного запроса с Idempotency-Key.
VlogMe Avatar в Replicate
Для простого endpoint «изображение + аудио» публичный VlogMe Avatar bridge также доступен как hosted‑модель Replicate.
Этот вариант удобен, если инфраструктура и биллинг уже построены вокруг Replicate. Прямой API VlogMe остаётся полной поверхностью для кредитов, истории, REST и MCP.
Hosted bridge возвращает вертикальный MP4 с говорящим аватаром и по умолчанию включает субтитры.
Авторизация
Передавайте Bearer token в каждом защищённом запросе. Токен показывается один раз — сохраните его в secret manager.
Создайте токен в Settings → API. Не помещайте его в браузерный JavaScript, мобильное приложение, публичный репозиторий или клиентские логи.
Базовый адрес REST: https://vlogme.ai/api/v2. При возможной утечке немедленно ротируйте токен.
Authorization: Bearer vlm_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxhttps://vlogme.ai/api/v2Быстрый запуск
Создайте токен, рассчитайте запрос, отправьте рендер и опрашивайте его до конечного статуса.
Пример передаёт URL портрета, сценарий, ID голоса и формат кадра. Замените заглушки на файлы, доступные серверу VlogMe.
Успешный POST сразу возвращает 202 Accepted. Проверяйте статус примерно раз в десять секунд или передайте webhook_url.
curl -X POST https://vlogme.ai/api/v2/renders \
-H "Authorization: Bearer $VLOGME_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"project_id": "PROJECT_UUID",
"revision_id": "REVISION_UUID",
"preset": "balanced",
"idempotency_key": "video-request-001"
}'REST endpoints
Компактный JSON API со схемой OpenAPI 3.1, стабильными кодами ошибок и rate-limit headers.
Машиночитаемая спецификация: /api/v2/openapi.json. Из неё можно создать типизированный клиент или импортировать запросы в Postman и Insomnia.
Каждый ответ содержит X-Request-Id. Асинхронный POST /videos также возвращает Location с URL опроса.
/projectsID пользователя, тариф и баланс кредитов/projectsID голосов, доступных для синтеза/projects/:idЗапустить асинхронный рендер/projects/:idПолучить статус и подписанную ссылку/rendersСписок последних рендеров с пагинацией/jobs/:idОценить кредиты без списания/jobs/:id/cancelУдалить или отменить доступный рендер/projects/:id/director-proposalsПроверка доступности без авторизацииcurl https://vlogme.ai/api/v2/jobs/$JOB_ID \
-H "Authorization: Bearer $VLOGME_TOKEN"Создание ИИ‑видео
Передайте портрет и либо сценарий с voice_id, либо аудиофайл. Рендер выполняется асинхронно.
Используйте portrait_url или portrait_base64. Для речи передайте script + voice_id либо audio_url/audio_base64. Дополнительно доступны aspect_ratio, emotion_preset, live_subtitles, title и webhook_url.
Для каждого платного POST обязателен уникальный Idempotency-Key. Повтор с тем же ключом вернёт исходный рендер без второго списания.
- Форматы: 9:16 по умолчанию, 16:9 и 1:1.
- Массив inserts добавляет b‑roll в режиме overlay или cut.
- audio_mode принимает auto, prompt, asset или off для фонового звука проекта.
- Ответ 202 содержит id, status, credits_charged, estimated_seconds и warnings.
curl -X POST https://vlogme.ai/api/v2/renders \
-H "Authorization: Bearer $VLOGME_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"project_id": "PROJECT_UUID",
"revision_id": "REVISION_UUID",
"preset": "balanced",
"idempotency_key": "video-request-001"
}'Грамматика сценариев
Машиночитаемый DSL описывает смену сцен, b‑roll, аудиовставки, паузы и inline‑теги исполнения голоса.
Используйте @imageN для смены говорящей сцены, фигурные скобки для overlay/chain b‑roll, @audioN для аудиоматериалов и теги ElevenLabs вроде [shocked].
Скачиваемая спецификация намеренно сохраняется на языке контракта для инструментов и LLM. MCP‑клиент может получить её через script_grammar_help.
SCRIPT-GRAMMAR.md
# V2 script grammar compatibility
This document describes the supported V2 plain-text import grammar. Current
Create authoring uses typed `CreateSnapshot` revisions and does not serialize
its editor state through this grammar.
The V2 bridge `flatToPayloads()` converts the grammar into `ScenePayload[]`.
Provider-specific payloads are derived later by render and integration
infrastructure; the browser never constructs them.
## Forms
| Form | Meaning |
| ---------------------- | ------------------------------------------ |
| `@imageN <text>` | Avatar speech anchored to image N |
| `@imageN { <prompt> }` | Standalone generated video from image N |
| `{ @imageN <prompt> }` | Overlay on the current avatar |
| `{ <prompt> }` | Continue from the preceding rendered frame |
| `@audioN` | Uploaded audio on the current avatar |
Plain text following an avatar line continues that avatar's speech. Video,
overlay and Continue forms may add `:D` after the closing brace to request a
duration. Advanced brace segments support `v:`, `n:`, `s:`, `an:`,
`am:auto|prompt|asset|off`, `ag:` and transition `tK`.
Whitespace and indentation do not change token meaning. Tags must begin a line
or appear at the start of a brace body; nested braces and inline image tags in
speech are invalid. Provider-specific prompt and duration limits are validated
before submission.
Legacy bare image lines remain parser-compatible for existing V2 projects, but
new generated V2 scripts should use the explicit forms above.
## Create boundary
Create visual blocks carry their own typed `visual_kind`, entry source,
timeline placement and media plan. In particular, Create Continue is an
independent visual block with `entry.mode = previous_exit`, an explicit
predecessor and the predecessor's accepted terminal-frame fingerprint. It is
not derived from the V2 brace syntax.
Webhooks
Передайте webhook_url, и VlogMe отправит событие завершения или ошибки с повторными попытками при временной недоступности.
Проверяйте X-Vlogme-Signature по строке timestamp + raw_body с отдельным секретом whsec_ из Settings → API. Отклоняйте timestamp старше пяти минут и удаляйте дубли по X-Vlogme-Event-Id.
Верните любой 2xx за пять секунд. Сетевые ошибки и 5xx повторяются с задержкой, а 4xx считается окончательным отказом. Для просроченной ссылки снова вызовите GET видео.
ts = request.headers["X-Vlogme-Timestamp"]
secret = "whsec_..." # Settings -> API
expected = "sha256=" + hmac_sha256(secret, ts + "." + raw_body).hex()
assert constant_time_eq(expected, request.headers["X-Vlogme-Signature"])
assert abs(now() - int(ts)) < 300MCP‑сервер
Подключите AI‑агента через нативный Streamable HTTP с токеном VlogMe или интерактивным OAuth.
MCP‑инструменты оборачивают REST v1 и используют те же структуры, расчёт кредитов и коды ошибок. Изменения аддитивны, поэтому клиенту следует игнорировать неизвестные поля.
Доступны голоса, баланс, оценка, портреты, запуск, статус, отмена и история. Авторизованные внутренние аккаунты также могут работать с задачами.
POST https://mcp.vlogme.ai/api/mcpscript_grammar_helplist_voicesget_balanceestimate_creditslist_portraitsgenerate_videoget_videocancel_videolist_my_videoslist_bugsget_bugreport_bugupdate_bug_statusНастройка клиентов
Claude Code, Cursor и Codex поддерживают Streamable HTTP. Старые stdio‑клиенты подключаются через mcp-remote.
Выберите один режим авторизации: интерактивный OAuth или API token в переменной окружения. Не смешивайте их.
После изменения MCP‑конфигурации начните новую сессию клиента, чтобы он повторно обнаружил инструменты.
# OAuth
codex mcp add vlogme --url https://mcp.vlogme.ai/api/mcp
codex mcp login vlogme --scopes mcp:full,mcp:work_items
# or API token
export VLOGME_TOKEN=vlm_live_xxxxxxxxxxxx
codex mcp add vlogme --url https://mcp.vlogme.ai/api/mcp --bearer-token-env-var VLOGME_TOKEN{
"mcpServers": {
"vlogme": {
"url": "https://mcp.vlogme.ai/api/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN_HERE" }
}
}
}Полный пример работы агента
Запрос на обычном языке превращается в последовательность видимых и проверяемых вызовов инструментов.
Агент может получить список голосов, оценить рендер, запросить подтверждение, вызвать generate_video и проверять get_video до конечного статуса.
Нужны доступный портрет и достаточный баланс. Для MCP и REST одинаково действуют scope, ownership, срок токена и лимит запросов на пользователя.
Create a 16:9 talking-avatar video from this portrait.
Use a warm, natural voice. Estimate the credits first and ask before generating.
After approval, monitor the job and return the final download URL.Skill для агента
Короткая инструкция учит агента оценивать стоимость, запрашивать подтверждение и правильно отслеживать асинхронную задачу.
Опишите, когда применять VlogMe, какие инструменты вызывать, как сохранять идемпотентность и когда прекращать опрос.
Не вставляйте рабочий токен в skill‑файл. Храните его в окружении клиента или OAuth store.
---
name: vlogme-video
description: Estimate and generate VlogMe video jobs through MCP.
---
1. Validate the portrait and requested format.
2. Call estimate_credits before generation.
3. Ask for approval with the estimate.
4. Use a stable idempotency key for transport retries.
5. Poll get_video until a terminal status.Ошибки и повторные запросы
Ошибки имеют форму { error: { code, message } }. В логике используйте стабильный code, а не переводимый текст message.
При обращении в поддержку передайте X-Request-Id. Ответ 429 содержит Retry-After; ошибки авторизации и входных данных нужно исправлять, а не повторять бесконечно.
Полный список схем и ошибок находится в OpenAPI. Успешные ответы содержат limit, remaining и reset для rate limit.
missing_token401{ error: { code: "missing_token", message } }invalid_token401{ error: { code: "invalid_token", message } }token_expired401{ error: { code: "token_expired", message } }insufficient_credits402{ error: { code: "insufficient_credits", message, needed, balance } }invalid_input400{ error: { code: "invalid_input", message } }invalid_asset400{ error: { code: "invalid_asset", message } }invalid_json400{ error: { code: "invalid_json", message } }not_found404{ error: { code: "not_found", message } }method_not_allowed405{ error: { code: "method_not_allowed", message } }already_started409{ error: { code: "already_started", message } }billing_conflict409{ error: { code: "billing_conflict", message } }rate_limited429{ error: { code: "rate_limited", message } }internal_error500{ error: { code: "internal_error", message } }