Product videos from your code and your AI agent
Send a public URL or one sentence, and get back a finished product video with your real brand and interface, scored and ready to post.
- Create a key on your account page. Paid plans and credit packs.
- Start a video with
POST /v1/videosor thecreate_videotool. - Poll until
statusisready, then download it or share it.
MCP
Six tools: create_video, get_video, list_videos, revise_video, share_video, get_account.
Claude Code
claude mcp add --transport http motioneed https://www.motioneed.com/mcp \
--header "Authorization: Bearer mk_..."
Cursor
In .cursor/mcp.json:
{
"mcpServers": {
"motioneed": {
"url": "https://www.motioneed.com/mcp",
"headers": { "Authorization": "Bearer mk_..." }
}
}
}
Other MCP clients
Any client that connects to a remote MCP server over HTTP: server URL https://www.motioneed.com/mcp, header Authorization: Bearer mk_....
Then ask your agent something like: “Make a 15-second vertical launch video for https://example.com and give me a share link.”
GitHub Action
Every GitHub Release gets a launch video made from its notes, attached to the release as an MP4. Screenshots and GIFs in the release notes go on screen, so the video shows what changed. motioneed/release-video-action
on:
release:
types: [published]
permissions:
contents: write
jobs:
video:
runs-on: ubuntu-latest
steps:
- uses: motioneed/release-video-action@v1
with:
api-key: ${{ secrets.MOTIONEED_API_KEY }}
url: https://your-product.com
aspects: "16:9,9:16"
REST API
Base URL https://www.motioneed.com/v1. Send the key as Authorization: Bearer mk_....
Start a video
curl https://www.motioneed.com/v1/videos \
-H "Authorization: Bearer $MOTIONEED_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://your-product.com", "seconds": 15, "aspect": "16:9", "purpose": "launch"}'
With screenshots
Add up to 10 images (PNG, JPEG, WebP or GIF, 5 MB each) as a public url or a data URL. "use": "screen" (the default) puts one on screen; "style" is a look to match and is never shown.
curl https://www.motioneed.com/v1/videos \
-H "Authorization: Bearer $MOTIONEED_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://your-product.com", "seconds": 30, "purpose": "launch",
"images": [{"url": "https://your-product.com/img/new-dashboard.png", "name": "new dashboard"}]}'
Check on it
curl https://www.motioneed.com/v1/videos/VIDEO_ID \
-H "Authorization: Bearer $MOTIONEED_API_KEY"
{
"id": "VIDEO_ID",
"status": "ready",
"stage": "ready",
"revising": false,
"error": null,
"source": { "url": "https://your-product.com", "prompt": null },
"title": "Your Product",
"aspect": "16:9",
"seconds": 15,
"duration": 15.2,
"model": "auto",
"queue_ahead": 0,
"created_at": "2026-10-29T12:00:00.000Z",
"video_url": "https://www.motioneed.com/v1/videos/VIDEO_ID/video",
"share_url": null,
"studio_url": "https://www.motioneed.com/watch/VIDEO_ID"
}
Download
curl -L -o video.mp4 "https://www.motioneed.com/v1/videos/VIDEO_ID/video?download=1" \
-H "Authorization: Bearer $MOTIONEED_API_KEY"
Endpoints
| Request | What it does |
|---|---|
POST /v1/videos | Start a video. Body: url and/or prompt; optional seconds (10, 15, 30, 60, 90), aspect (16:9, 9:16, 4:3, 3:4), purpose (ad, demo, launch), voice (true for narration), model, images (up to 10, each url or data, with use screen or style). Returns 202. |
GET /v1/videos | Your 50 newest videos, as data. |
GET /v1/videos/:id | One video. status is queued, running, ready or failed. |
GET /v1/videos/:id/video | The MP4 once ready. Add ?download=1 for a file name. |
POST /v1/videos/:id/revise | Change a ready video. Body: note, optional at (second). The earlier cut is kept as a version. Returns 202. |
POST /v1/videos/:id/share | Public link on, or off with {"on": false}. Returns the video with share_url. |
GET /v1/me | Plan and available credits. |
Credits
The API spends the same credits as the studio, at the same rates. Credits are held when a video starts, charged for the length it made, and returned if it fails.
Errors
{ "error": { "code": "credits_required", "message": "This needs 12 credits and the account has 4. ..." } }
| Status | Codes |
|---|---|
| 400 | invalid_request, invalid_image |
| 401 | missing_key, invalid_key |
| 402 | upgrade_required, credits_required |
| 404 | not_found |
| 409 | not_ready, busy |