---
title: "The video's file (own or licensed content)"
method: POST
path: "/v1/youtube/videos/{id}/file"
tags: ["YouTube"]
---

# The video's file (own or licensed content)

`POST /v1/youtube/videos/{id}/file`

## Request

- Base URL: `https://apihub.co.il`
- URL: `https://apihub.co.il/v1/youtube/videos/{id}/file`
- Auth: HTTP bearer

Copies the video (mp4) or its audio (mp3) to your storage so you can cut, caption or dub it with /v1/studio/* — the whole dub, from this call to publishing on YouTube, is the recipe /skills/full-dub-video.md. Open to every account, for your own channel or content you are licensed to use: every call records the `license` you declare together with the video it is for (`source` in the answer; `GET /v1/usage?tag=<job>` lists it with the job's other calls). `creative-commons` is refused for a video YouTube lists under its standard licence. Private, age-restricted and live videos cannot be taken. The file is deleted after 24 hours like every upload. An account that took files it had no rights to is closed for YouTube files (403 `youtube_files_not_enabled`).

**Billing:** 5 provider credits (the transfer) — plus the storage · **Rate limit:** 6/min

## Path parameters

- `id` string, required: Video id or a YouTube link

## Headers

- `Idempotency-Key` string
- `X-Tag` string

## Request body

- object
  - `kind` 'video' | 'audio': video = the video file (mp4) · audio = its sound only (mp3)
  - `credit` string: The credit line you will show (Creative Commons)
  - `license` 'own' | 'creative-commons' | 'licensed', required: Your basis for using this video, recorded with your account: own = a channel you control · creative-commons = the video is published under Creative Commons (`license` in the search; keep the credit line on screen) · licensed = you hold written permission from the owner

## Response `200`

Completed

- object
  - `id` string: Execution id — stable across internal retries; use it with GET /v1/executions/{id}
  - `status` 'pending' | 'processing' | 'completed' | 'partial' | 'failed' | 'cancelled' | 'timeout'
  - `operation` string
  - `tag` string, nullable: Your X-Tag, if sent
  - `created_at` string, date-time
  - `completed_at` string, date-time, nullable
  - `output` object: Operation result (see each operation). While a Studio render is processing: `stage` (queued · transcribing · downloading · preparing · cleaning_voice · mixing_audio · rendering · finishing), `phase` (the engine's: download · prepare · voice · audio · encode · qa · upload, or null), `progress` (a percent, 0–100) and `progress_fraction` (0–1), `eta_seconds` (seconds left, never below 0) and `estimate_seconds`
  - `error` string, nullable
  - `usage` object
    - `credits_charged` number, nullable
    - `credits_reserved` number
    - `estimated_credits` number
    - `cost_source` 'provider_reported' | 'calculated' | 'estimated' | 'null', nullable
    - `provider_usage` object, nullable: Normalised consumption, e.g. { VIDEO_SECOND: 22.4 }
  - `balance` object
    - `available` number
    - `reserved` number

## Other responses

- `400`: Invalid input
- `402`: Insufficient credits / project budget
- `404`: Resource not found (or not yours)
- `429`: Rate limited
- `503`: Service temporarily paused

---

[API](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai.md) · [All operations](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/revisions/a8caa42835ce?raw)
