Skip to main content
GET
/
api
/
downloads
/
tv
/
{tmdb_id}
/
{season}
/
{episode}
TV Episode Downloads
curl --request GET \
  --url https://1c34-y.hf.space/api/downloads/tv/{tmdb_id}/{season}/{episode} \
  --header 'Authorization: Bearer <token>'
{
  "downloads": [
    {
      "url": "<string>",
      "quality": "<string>",
      "size": {},
      "format": "<string>",
      "server": "<string>"
    }
  ]
}
Returns direct download links for a specific TV episode. Each link comes with a quality label, file size, and format — useful for building download buttons or offline-capable applications. Requires a standard or partner API key.

Path Parameters

tmdb_id
string
required
TMDB series ID.
season
number
required
Season number.
episode
number
required
Episode number.

Request

curl https://1c34-y.hf.space/api/downloads/tv/1396/1/1 \
  --header "Authorization: Bearer YOUR_API_KEY"

Response

{
  "downloads": [
    {
      "url": "https://...",
      "quality": "1080p",
      "size": "1.32 GB",
      "format": "MP4",
      "server": "1"
    },
    {
      "url": "https://...",
      "quality": "720p",
      "size": "856.00 MB",
      "format": "MP4",
      "server": "2"
    },
    {
      "url": "https://...",
      "quality": "480p",
      "size": "412.00 MB",
      "format": "MP4",
      "server": "3"
    }
  ]
}

Response Fields

downloads
Download[]
required
Array of available download options. Empty array if none are found.

Status Codes

StatusMeaning
200Downloads found and returned
401Missing or invalid authentication
403Key tier does not have download access (public key)
500Server error

Usage Pattern

async function addTVDownloadButtons(tmdbId, season, episode, containerEl) {
  const res = await fetch(
    `https://1c34-y.hf.space/api/downloads/tv/${tmdbId}/${season}/${episode}`,
    { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
  );

  if (!res.ok) {
    containerEl.textContent = 'No downloads available';
    return;
  }

  const { downloads } = await res.json();

  if (!downloads.length) {
    containerEl.textContent = 'No downloads available';
    return;
  }

  downloads.forEach(dl => {
    const a = document.createElement('a');
    a.href    = dl.url;
    a.target  = '_blank';
    a.rel     = 'noopener noreferrer';
    a.textContent = `Download ${dl.quality}${dl.size ? ` — ${dl.size}` : ''}${dl.server ? ` — Server ${dl.server}` : ''}`;
    containerEl.appendChild(a);
  });
}
Download links are sourced from a third-party provider and may expire or become unavailable. Always handle empty downloads arrays and errors gracefully.