> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.videogen.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.videogen.io/_mcp/server.

## v2.5.0 — Video to video

Restyle an existing video from a text prompt with `POST /v1/workflows/video-to-video`. Pass an uploaded video or a public link, and the output keeps the original's length, timing, and cuts. The workflow is available to every account in the SDKs, CLI, MCP, the Zapier, Make, n8n, and Pipedream apps, OpenClaw, and the Python agent framework packages. This release also ends export polling cleanly when a finished export's file is gone, and checks the full cost of large remix batches before they start.

### Added

- **Video to video workflow:** `POST /v1/workflows/video-to-video` takes a `prompt` and exactly one source: `videoFileId` for an uploaded video, or `videoUrl` for a public link to a video page or video file. The run imports a link itself, so there is no separate import step. Up to 120 seconds is restyled per run; choose the part with `trimStartSeconds` and `trimEndSeconds`. Optional fields are `imageFileIds` (up to 10 reference images), `aspectRatio`, `quality` (`LOW`, `STANDARD`, `HIGH`, or `MAX`; defaults to `HIGH`), `audio` (`KEEP_ORIGINAL` or `GENERATE`), `remixActions`, `autoExport`, and `isOutputTemporary`. Private, login-only, and DRM-protected links cannot be imported. Credit use grows with the restyled length and the quality tier.
- **SDKs and CLI:** TypeScript `workflows.videoToVideo` / `videoToVideoAndWait`, Python `workflows.video_to_video` / `video_to_video_and_wait`, and `videogen workflows video-to-video`.
- **MCP:** a `video_to_video` tool. Pass `videoFileId` from `upload_file`, or a public `videoUrl` that the run imports itself. It waits for the finished render by default.
- **Automation apps:** a video-to-video action in Zapier, Make, n8n, and Pipedream. Map `videoFileId` from the upload step, or pass a public `videoUrl`.
- **Agent frameworks:** a `video_to_video` tool in the OpenClaw plugin and in the LangChain, LlamaIndex, CrewAI, OpenAI Agents, Pydantic AI, and Composio packages.
- **Import a file from a link:** `POST /v1/files/import-url` starts importing a video from a public link into your files and returns a `fileImportId`. Poll `GET /v1/files/imports/{fileImportId}` until `status` is `succeeded`, then use its `fileId` anywhere a video file id is accepted. Videos up to 10 minutes long can be imported.

### Changed

- **Remix batches are priced before they start:** A remix action that generates or transforms many assets, such as `CONVERT_IMAGES_TO_VIDEOS`, now checks its full cost before any generation begins. If your balance cannot cover it, the action is refused up front instead of failing partway through.
- **MCP tool metadata:** Every MCP tool now declares whether repeating a call is safe, and the server reports its title, description, website, and icon to clients that display them.

### Fixed

- **Exports whose file was deleted:** `GET /v1/projects/{projectId}/exports/{exportId}` now returns `status: "failed"` with `error.code` `export_file_unavailable` when a finished export's file has since been deleted. Before, it returned `succeeded` with a null `downloadUrl`, so pollers never stopped. Start a new export to get a download link. A workflow run in this state keeps its `exportId` with null download fields.
- **Export on the wrong project:** When the `exportId` belongs to another of your projects, the `404` message now says so and tells you to use the `projectId` you passed when starting the export. The status and `code` (`not_found`) are unchanged.