Motioneed

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.

  1. Create a key on your account page. Paid plans and credit packs.
  2. Start a video with POST /v1/videos or the create_video tool.
  3. Poll until status is ready, 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

RequestWhat it does
POST /v1/videosStart 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/videosYour 50 newest videos, as data.
GET /v1/videos/:idOne video. status is queued, running, ready or failed.
GET /v1/videos/:id/videoThe MP4 once ready. Add ?download=1 for a file name.
POST /v1/videos/:id/reviseChange a ready video. Body: note, optional at (second). The earlier cut is kept as a version. Returns 202.
POST /v1/videos/:id/sharePublic link on, or off with {"on": false}. Returns the video with share_url.
GET /v1/mePlan 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. ..." } }
StatusCodes
400invalid_request, invalid_image
401missing_key, invalid_key
402upgrade_required, credits_required
404not_found
409not_ready, busy