> ## Documentation Index
> Fetch the complete documentation index at: https://help.decodo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quick start

> Get your Video downloader credentials, connect your storage and download your first YouTube video.

## 1. Get your credentials

In the [dashboard](https://dashboard.decodo.com/), open **Web Data API** > **Video downloader** and copy the **Basic auth token**. Replace `TOKEN VALUE` in the examples below with it.

<Warning>
  Video downloader has its own credentials. Your Web Data API key returns a `401` here.
</Warning>

## 2. Prepare your storage

You need a storage folder that Video downloader can write to, and an access key and secret for it. Put them together into an `upload_url`:

```text theme={null}
https://<access_key>:<access_secret>@<storage-host>/<bucket>/<folder>
```

[Storage setup](/docs/video-downloader-storage-setup) walks through Amazon S3 step by step and lists other supported providers.

## 3. Queue a download

Send a `POST` request with the YouTube video ID in `query`. This example downloads the first 10 seconds in the lowest quality, which is a cheap way to check your setup.

<CodeGroup>
  ```shellscript cURL theme={null}
  # replace 'TOKEN VALUE' with your Video downloader Basic auth token
  curl --request 'POST' \
          --url 'https://scraper-api.decodo.com/v2/task' \
          --header 'Accept: application/json' \
          --header 'Authorization: Basic TOKEN VALUE' \
          --header 'Content-Type: application/json' \
          --data '
      {
        "target": "youtube_video",
        "query": "PFRn5zKJTD8",
        "quality": "worst",
        "start_time": "00:00:00",
        "end_time": "00:00:10",
        "upload_url": "https://access_key:access_secret@s3.us-west-2.amazonaws.com/your-bucket/video-folder"
      }
  '
  ```

  ```javascript Node theme={null}
  const download = async () => {
    const response = await fetch("https://scraper-api.decodo.com/v2/task", {
      method: "POST",
      headers: {
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Authorization": "Basic TOKEN VALUE" // replace with your Video downloader Basic auth token
      },
      body: JSON.stringify({
        target: "youtube_video",
        query: "PFRn5zKJTD8",
        quality: "worst",
        start_time: "00:00:00",
        end_time: "00:00:10",
        upload_url: "https://access_key:access_secret@s3.us-west-2.amazonaws.com/your-bucket/video-folder"
      })
    });

    console.log(await response.json());
  };

  download();
  ```

  ```python Python theme={null}
  import requests

  url = "https://scraper-api.decodo.com/v2/task"

  payload = {
      "target": "youtube_video",
      "query": "PFRn5zKJTD8",
      "quality": "worst",
      "start_time": "00:00:00",
      "end_time": "00:00:10",
      "upload_url": "https://access_key:access_secret@s3.us-west-2.amazonaws.com/your-bucket/video-folder"
  }

  headers = {
      "accept": "application/json",
      "content-type": "application/json",
      "authorization": "Basic TOKEN VALUE"  # replace with your Video downloader Basic auth token
  }

  response = requests.post(url, json=payload, headers=headers)

  print(response.json())
  ```
</CodeGroup>

The response confirms the task is queued. Save the `id`; you need it in the next step.

```json JSON theme={null}
{
    "target": "youtube_video",
    "query": "PFRn5zKJTD8",
    "id": "7515723240602382337",
    "status": "pending",
    "created_at": "2026-10-13 10:40:55",
    "media": "audio_video",
    "quality": "worst"
}
```

## 4. Check the result

Send a `GET` request with the task `id`. A `204` means the download is still running. A `200` means it's finished.

```shellscript cURL theme={null}
curl --request 'GET' \
        --url 'https://scraper-api.decodo.com/v2/task/{task_id}/results' \
        --header 'Authorization: Basic TOKEN VALUE'
```

When the upload succeeds, `content` holds the file name and `status_code` is `200`:

```json JSON theme={null}
{
    "results": [
        {
            "content": "PFRn5zKJTD8_7515723240602382337.mp4",
            "status_code": 200,
            "url": "https://www.youtube.com/watch?v=PFRn5zKJTD8",
            "task_id": "7515723240602382337",
            "created_at": "2026-10-13 10:40:55",
            "updated_at": "2026-10-13 10:41:05"
        }
    ]
}
```

The file is now in your storage folder. If `status_code` is something else, see the [error codes](/docs/video-downloader-status-results#error-codes).

***

<Columns cols={2}>
  <Card title="Support" href="https://direct.lc.chat/12092754" cta="Let's chat!">
    Need help or just want to say hello? Our support is available 24/7. \
    You can also reach us anytime via email at [support@decodo.com](mailto:support@decodo.com).
  </Card>

  <Card title="Feedback" href="mailto:feedback@decodo.com" cta="Share feedback">
    Can't find what you're looking for? Request an article! \
    Have feedback? Share your thoughts on how we can improve.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.