Download a video or its audio
video_downloadDownload a public video link to a playable file by fetching video and audio streams and muxing them, with selectable quality, container, audio format, and output folder.
Instructions
Save a link to a file. Fetches video and audio streams in parallel fragments and muxes them into one playable file, preferring H.264/AAC for MP4 so it opens everywhere. Returns a Job whose result is a DownloadReport.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"url": "<url>"
},
"name": "video_download"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) link to a single video. | |
| mode | No | 'video+audio' merges the best audio track into the chosen video quality. | video+audio |
| quality | No | 'best' or a maximum height such as '1080p' or '720p'. | best |
| container | No | Video file type. | mp4 |
| format_id | No | Exact id from video_probe, e.g. '136' or '136+140'. Overrides quality. | |
| output_dir | No | Folder to write into (under DVQA_ALLOWED_ROOTS). | |
| audio_format | No | File type for audio_only. | m4a |
| wait_seconds | No | Seconds to wait for completion before returning the job. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | What the job does. | |
| next | No | The call to make to keep waiting, while the job is unfinished. | |
| error | No | 'code: message — hint' when the job failed. | |
| stage | Yes | Current step: queued, download, transcribe, frames, embed or done. | |
| job_id | Yes | Pass to video_job to poll, or video_cancel to stop. | |
| result | No | When succeeded: the ingest report (video_id, counts, stages, embedding tokens, elapsed seconds) or the download report (path, codecs, size, whether audio was merged). | |
| source | Yes | The URL or path being processed. | |
| status | Yes | `interrupted` means the server restarted mid-job; ingest again to resume. | |
| message | Yes | Latest human-readable progress line. | |
| progress | Yes | Overall completion from 0 to 1, weighted by how long each stage usually takes. | |
| video_id | No | Known once the source has been resolved; use it with every other tool. |