# Video Downloader

> Run Video Downloader by infsh online or via API. from $0.00000277/sec, no setup.

**URL:** https://inference.sh/apps/infsh/video-downloader
**Last updated:** 2026-10-26

---

Download videos and audio from YouTube, Instagram, Twitter/X, TikTok and 1000+ sites. Supports audio-only extraction, video+audio, or video-only with customizable quality, codec, and proxy options.

- app: `infsh/video-downloader`
- maker: [infsh](https://inference.sh/apps/infsh.md)
- category: [audio](https://inference.sh/apps/category/audio.md)
- tasks: [media utilities](https://inference.sh/apps/tag/media-utilities.md)
- price: from $0.00000277/sec
- runs via: api, javascript and python sdk, belt cli, mcp

## video-downloader API Guide

### About
download videos and audio from youtube, instagram, twitter/x, tiktok and 1000+ sites. supports audio-only extraction, video+audio, or video-only with customizable quality, codec, and proxy options.

### Get an API Key
Create one in [settings → api keys](https://app.inference.sh/settings/keys). The examples read it from `INFERENCE_API_KEY`.

```bash
export INFERENCE_API_KEY="inf_your_key"
```

### 1. Calling the API

#### Install the Client

```bash
pip install inferencesh
```

#### Run and Get Result
Submit a request and wait for the final result.

```python
import os
from inferencesh import inference

client = inference(api_key=os.environ["INFERENCE_API_KEY"])

## version @4cbf6zz7 pinned
result = client.run({
        "app": "infsh/video-downloader@4cbf6zz7",
        "input": {
            "url": "url"
        }
    })

print(result["output"])
```

#### Stream Live Updates
Get real-time progress updates as the task runs.

```python
import os
from inferencesh import inference

client = inference(api_key=os.environ["INFERENCE_API_KEY"])

## version @4cbf6zz7 pinned
## stream=True yields updates as they arrive
for update in client.run({
        "app": "infsh/video-downloader@4cbf6zz7",
        "input": {
            "url": "url"
        }
    }, stream=True):
    if update.get("progress"):
        print(f"progress: {update['progress']}%")
    if update.get("output"):
        print(f"output: {update['output']}")
```

#### Run in the Background
Start the task and get its id back right away, then check on it with `GET /tasks/{id}`. It is done when `status` is 10 (completed), 11 (failed) or 12 (cancelled).

```python
import os
from inferencesh import inference, TaskStatus

client = inference(api_key=os.environ["INFERENCE_API_KEY"])

## returns as soon as the task is created
task = client.run({
        "app": "infsh/video-downloader@4cbf6zz7",
        "input": {
            "url": "url"
        }
    }, wait=False)

## later: read its current state
state = client.tasks.get(task["id"]).data
if state["status"] == TaskStatus.COMPLETED:
    print(state["output"])
```

### 2. Files

#### Automatic Upload

```python
## local file paths are automatically uploaded
result = client.run({
    "app": "infsh/video-downloader@4cbf6zz7",
    "input": {
        "image": "/path/to/local/image.png",  # detected & uploaded
        "audio": "https://example.com/audio.mp3",  # url passed through
    }
})
```

#### Manual Upload

```python
## upload and get a hosted URL
file = client.files.upload("/path/to/file.png")
print(file.uri)  # https://cloud.inference.sh/...
```

### 3. Schema

#### Input
- **url** (string) *required*: Video URL (YouTube, Instagram, Twitter/X, TikTok, and 1000+ sites supported)
- **export_format** (string): Export format: audio_only (default), video_with_audio, or video_only
- **audio_quality** (string): Audio quality/bitrate: best, 320 (default), 192, 128, 64 kbps
- **video_quality** (string): Video resolution: best, 2160, 1440, 1080 (default), 720, 480, 360
- **audio_codec** (string): Audio codec/format: aac (default, fastest), mp3, opus, vorbis, flac, wav
- **video_codec** (string): Video container format: mp4 (default), webm, mkv
- **include_thumbnail** (boolean): Embed thumbnail in the output file (default: true)
- **include_metadata** (boolean): Include metadata like title, artist, etc. in the output file (default: true)
- **include_transcript** (boolean): Include transcript/subtitles if available (default: false). Returns auto-generated or manual captions.
- **transcript_langs** (array): Preferred transcript languages in order of priority (e.g. ['en', 'es']). Defaults to ['en'] if not specified.
- **proxy** (string): Proxy URL for downloading (e.g. http://user:pass@host:port or socks5://host:port)

#### Output
- **file** (string): Downloaded audio/video file
- **format_downloaded** (string): Format that was downloaded (e.g., 'audio mp3 320kbps')
- **info** (object): Video/audio metadata
- **transcript** (array): Transcript segments with timestamps, if requested and available
- **transcript_text** (string): Full transcript as plain text, if requested and available

## other audio apps

- [Fish Audio Drama 3](https://inference.sh/apps/fish-audio/drama-3.md): $50.00/1M UTF-8 bytes
- [Eleven Flash v2.5](https://inference.sh/apps/elevenlabs/eleven-flash-v2-5.md): $0.04/1K characters
- [Eleven Multilingual v2](https://inference.sh/apps/elevenlabs/eleven-multilingual-v2.md): $0.08/1K characters
- [Eleven v3](https://inference.sh/apps/elevenlabs/eleven-v3.md): $0.08/1K characters
- [Eleven v4 Turbo](https://inference.sh/apps/elevenlabs/eleven-v4-turbo.md): $0.04/1K characters

## faq

### how much does Video Downloader cost?

from $0.00000277/sec. you pay per run from your inference shell credits. no subscription is required.

### how do I run Video Downloader via api?

call infsh/video-downloader with the javascript or python sdk, the rest api, or `belt app run infsh/video-downloader` from a terminal. the api reference on this page lists every input.

### who makes Video Downloader?

Video Downloader is made by infsh and runs on inference shell. every infsh app is listed at https://inference.sh/apps/infsh.

### can my agent use Video Downloader?

yes. agents call it as a tool through the inference shell mcp server (https://api.inference.sh/mcp), the belt cli or the sdk, and pay per run like you do.

### what are the alternatives to Video Downloader?

other audio apps on inference shell include Fish Audio Drama 3, Eleven Flash v2.5, Eleven Multilingual v2, Eleven v3. they run through the same api, so switching is a one-line change.
