blur_video
ffmpegBlur, pixelate or black out part of a video — or all of it. Pass the input as file_url or file_base64 + filename. Set mode='regions' (default) with 'regions' to cover only certain areas, mode='whole' to blur every pixel of every frame, or mode='whole-except' to blur everything BUT the listed areas. 'regions' is a JSON array string of boxes measured as fractions of the frame: [{"x":0.35,"y":0.12,"w":0.2,"h":0.25}] puts a box 35% across and 12% down, a fifth of the frame wide. Per area you can also set shape (rect|ellipse), style (blur|pixelate|fill), strength (1-100), feather (0-100), start/end in seconds, and track — [{"t":0,"x":0.1,"y":0.4},{"t":6,"x":0.7,"y":0.4}] — so the area follows a subject that moves. Values above 1 are read as pixels instead of fractions. Returns an mp4 at the source size, frame rate and duration with the audio kept.
- When to use
- Hiding something in a video: a face, a number plate, a screen, a document. Areas are fractions of the frame, each with its own shape, style, optional time window and optional motion path, so a blur can follow a moving subject.
- Not for
- Blurring a still image (there is no image blur tool — use ffmpeg_command with a boxblur filter). Cutting the section out entirely (trim_video).
- Returns
- A signed download URL for the re-encoded video. A blur always re-encodes; a stream copy cannot carry one.
- Runtime
- Slow — a large input can take minutes. The call is synchronous, so the request simply stays open until the file comes back.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| file_url | string | no | Public http(s) URL of the input video (preferred). |
| file_base64 | string | no | Base64 of a small inline input video (<=15MB). Provide 'filename'. |
| filename | string | no | Input filename incl. extension, e.g. 'clip.mp4'. |
| mode | string | no | regions (default) blurs only the listed areas; whole blurs the entire frame; whole-except blurs everything but the listed areas. (regions, whole, whole-except) |
| regions | string | no | JSON array of the areas, as a string. Each area is {x,y,w,h} in fractions of the frame (0-1), plus optional shape, style, strength, feather, color, start, end and track. Required unless mode=whole. Up to 20 areas. |
| style | string | no | Default cover style for every area: blur (gaussian), pixelate (mosaic) or fill (solid colour). Default blur. (blur, pixelate, fill) |
| strength | number | no | 1-100, default 60. Scaled to the size of the area, so the same number hides a face at any resolution. |
| feather | number | no | 0-100 soft edge, default 0. Slower — it is a per-pixel mask. |
| color | string | no | Fill colour when style=fill. Default black. |
| mute | boolean | no | true to drop the audio track. Default false — the sound is copied through untouched. |
| output_filename | string | no | Optional output filename. |
Example call
JSON-RPC tools/call body (sent to https://convertfleet.com/api/mcp):
{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": { "name": "blur_video", "arguments": {
"file_url": "https://example.com/input"
} }
}Connect first
curl -sN https://convertfleet.com/api/mcp \
-H "Authorization: Bearer flt_YOUR_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'See the quickstarts for Hermes, Claude, Cursor, OpenClaw, n8n, Zapier and Make.