Clippie AI logo
Get Started
Browse the docs

Developers / Docs / Templates

Update video

Restyles a video project before you render it: caption style, position, size, colours, case, outline and shadow; background clip (backgroundVideoId or backgroundGenre) and its start; music and volume; frame shape; mirroring; and template fields (reddit: card, roblox: emojis, ...). These changes are instant and free, and the answer has fresh stills (stills: false skips them). A change that needs new audio (a new voice, a script edit, silence removal) is charged like the app and returns { job }: run it with dryRun: true first.

Paste it into any AI assistant. The shortcuts open with the prompt typed in; nothing is sent until you press enter.

At a glance

  • REST
    PATCH https://api.clippie.ai/v1/videos/:projectId
  • MCP tool
    update_video
  • Scope
    create
  • Cost
    Spends credits or minutes, at the same prices as the app. Send "dryRun": true (or call estimate_cost) first to see the exact cost without spending anything.

Parameters

  • projectId
    In:
    path
    Type:
    string
    Required:
    Yes
    Description:
    The project id: output.projectId of a job, an id from list_videos, or the id in an editor URL. 1-64 chars.
  • template
    In:
    body
    Type:
    string
    Required:
    No
    Description:
    Only look among this template's projects (ai_story, captions, reddit, roblox). One of ai_story, captions, reddit, roblox.
  • title
    In:
    body
    Type:
    string
    Required:
    No
    Description:
    Project and file name. 1-120 chars.
  • captionStyleId
    In:
    body
    Type:
    integer
    Required:
    No
    Description:
    Caption style id from list_caption_styles. Resets the font and outline to that style. 1-17.
  • captionPosition
    In:
    body
    Type:
    number
    Required:
    No
    Description:
    Vertical position of the captions, 0 (top) to 100 (bottom). 0-100.
  • captionSize
    In:
    body
    Type:
    number
    Required:
    No
    Description:
    Caption size, 0-100 (50 is the default). 0-100.
  • textStyle
    In:
    body
    Type:
    object
    Required:
    No
    Description:
    Colour, case, outline and shadow over the caption style.
  • backgroundVideoId
    In:
    body
    Type:
    string
    Required:
    No
    Description:
    Background clip id from list_background_videos. Up to 80 chars.
  • backgroundGenre
    In:
    body
    Type:
    string
    Required:
    No
    Description:
    A list_background_videos category (e.g. "Minecraft"): picks a clip from it. Give this or backgroundVideoId. Up to 60 chars.
  • bgStart
    In:
    body
    Type:
    integer
    Required:
    No
    Description:
    Where the background clip starts, in frames at 30 fps: 30 = 1 second, 300 = 10 seconds. 0-108000.
  • musicId
    In:
    body
    Type:
    string
    Required:
    No
    Description:
    Background music id from list_music, or "none". Up to 80 chars.
  • musicVolume
    In:
    body
    Type:
    number
    Required:
    No
    Description:
    Music volume, 0-100. 0-100.
  • ratio
    In:
    body
    Type:
    string
    Required:
    No
    Description:
    Frame shape. One of 9:16, 16:9.
  • flip
    In:
    body
    Type:
    string
    Required:
    No
    Description:
    Mirror the background clip. One of none, horizontal, vertical.
  • captions
    In:
    body
    Type:
    object
    Required:
    No
    Description:
    Captions only: AI emojis on or off, and word fixes.
  • reddit
    In:
    body
    Type:
    object
    Required:
    No
    Description:
    Reddit story only: the story card, its animation and the narration speed (instant); a new post title, story, voice or language regenerates the narration (charged, returns a job).
  • roblox
    In:
    body
    Type:
    object
    Required:
    No
    Description:
    Roblox rant only: the narration (script, voiceId and language regenerate it and are charged; removeSilence and aiEmojis: true remake it for free), its speed and pitch.
  • stills
    In:
    body
    Type:
    boolean
    Required:
    No
    Description:
    Default true: return fresh stills after the change (free, counts toward the preview limit). false skips them.
  • dryRun
    In:
    body
    Type:
    boolean
    Required:
    No
    Description:
    Check the request and return { estimate } (credits and minutes) without spending anything.
  • webhookUrl
    In:
    body
    Type:
    string (URL)
    Required:
    No
    Description:
    https URL that receives job.completed / job.failed, signed with your webhook secret. Up to 2048 chars.
  • idempotencyKey
    In:
    body
    Type:
    string
    Required:
    No
    Description:
    Retry-safe key: repeating a call with the same key and input returns the first job instead of starting (and charging) again. REST callers can send the Idempotency-Key header instead. 1-255 chars.

Example

curl
curl https://api.clippie.ai/v1/videos/PROJECT_ID \
  -H "Authorization: Bearer $CLIPPIE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

200 with JSON. The full response schema is in the OpenAPI spec.

From an MCP client

Your AI calls update_video with the same fields as JSON arguments. See MCP server to connect one.

tools/call
{
  "name": "update_video",
  "arguments": {
    "projectId": "PROJECT_ID"
  }
}