About veo-video
veo-video is a skill for generating videos through AceDataCloud's Google Veo API, aimed at creators working from text or images. Its models produce native audio, and the skill also supports blending multiple images and upscaling existing videos to 1080p.
Key features
- 01Text-to-video and image animation
- 02Blend multiple reference images
- 03Generate native audio
- 04Upscale existing videos to 1080p
- 05Asynchronous task status polling
Use cases
- 01Generate audiovisual clips from prompts
- 02Animate still images into videos
- 03Combine multiple images in a video
- 04Upscale a generated video to 1080p
MCP support
The README provides a Veo MCP server, installable with `pip install mcp-veo` or accessible at the hosted endpoint `https://veo.mcp.acedata.cloud/mcp`.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ acedatacloud/ skills --skill veo-videoAfter installing, type/veo-videoin Claude Code to confirm it loaded.
Details
From the project READMEVeo Video Generation
Generate AI videos through AceDataCloud's Google Veo API.
Setup: See authentication for token setup.
Quick Start
curl -X POST https://api.acedata.cloud/veo/videos \
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action": "text2video", "prompt": "a whale breaching in slow motion at golden hour", "model": "veo3", "callback_url": "https://api.acedata.cloud/health"}'
Async: See async task polling. Poll via
POST /veo/taskswith{"id": "..."}. This returns a task ID immediately. Poll for the result:
curl -X POST https://api.acedata.cloud/veo/tasks \
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"id": "<task_id from above>"}'
Models
| Model | Audio | Best For |
|---|---|---|
veo3 | Yes (native) | Full audiovisual generation |
veo3-fast | Yes (native) | Faster audiovisual generation |
veo31 | Yes (native) | Veo 3.1, highest quality |
veo31-fast | Yes (native) | Veo 3.1 fast variant |
veo31-fast-ingredients | Yes (native) | Veo 3.1 fast, ingredient mode |
Workflows
1. Text-to-Video
POST /veo/videos
{
"action": "text2video",
"prompt": "cinematic aerial shot of the Northern Lights over Iceland",
"model": "veo3",
"resolution": "1080p"
}
2. Image-to-Video
Animate still images into video.
POST /veo/videos
{
"action": "image2video",
"prompt": "the scene gently comes to life with wind and subtle motion",
"image_urls": ["https://example.com/landscape.jpg"],
"model": "veo31-fast",
"aspect_ratio": "16:9"
}
3. Ingredients-to-Video (Multi-Image Blend)
Blend 1–3 reference images into a video (only veo31-fast-ingredients).
POST /veo/videos
{
"action": "ingredients2video",
"image_urls": [
"https://example.com/img1.jpg",
"https://example.com/img2.jpg"
],
"model": "veo31-fast-ingredients"
}
4. Upscale to 1080p
Convert a previously generated video to full 1080p resolution.
POST /veo/videos
{
"action": "get1080p",
"video_id": "your-video-id",
"model": "veo3"
}
Parameters
| Parameter | Values | Description |
|---|---|---|
action | "text2video", "image2video", "ingredients2video", "get1080p" | Generation mode |
model | see Models table | Model to use |
resolution | "4k", "1080p", "gif" | Output resolution (default: 720p) |
aspect_ratio | "16:9", "9:16" | Aspect ratio — only valid for image2video |
image_urls | array of strings | Reference image URLs — for image2video (up to 2) or ingredients2video (up to 3) |
video_id | string | Video to upscale — only for get1080p |
translation | true / false | Auto-translate prompt to English (default: false) |
Gotchas
- Veo 3 and 3.1 models generate native audio
- The
get1080paction usesvideo_id(from a prior generation), not a URL aspect_ratiois only valid for theimage2videoactionimage_urlsaccepts an array — up to 2 images forimage2video, up to 3 foringredients2videoveo31-fast-ingredientsrequires image input — it cannot do text-only generation- Documented
aspect_ratiovalues are only"16:9"and"9:16" translation: trueauto-translates Chinese or other non-English prompts before sending to Veo- Task polling uses
id(nottask_id) in the/veo/tasksrequest body - Task states use
"succeeded"(not "completed") — check for this value when polling
MCP:
pip install mcp-veo| Hosted:https://veo.mcp.acedata.cloud/mcp| See all MCP servers