Movie Subtitles
curl --request GET \
--url https://1c34-y.hf.space/api/subtitles/movie/{tmdb_id} \
--header 'Authorization: Bearer <token>'{
"[]": [
{
"label": "<string>",
"file": "<string>",
"type": "<string>",
"source": "<string>"
}
]
}Subtitles
Movie Subtitles
Fetch all available subtitle tracks for a movie.
GET
/
api
/
subtitles
/
movie
/
{tmdb_id}
Movie Subtitles
curl --request GET \
--url https://1c34-y.hf.space/api/subtitles/movie/{tmdb_id} \
--header 'Authorization: Bearer <token>'{
"[]": [
{
"label": "<string>",
"file": "<string>",
"type": "<string>",
"source": "<string>"
}
]
}Returns an array of subtitle tracks for a movie. Each track is a direct link to a
HTML
.vtt or .srt file — no proxy needed. Requires a standard or partner API key. Subtitle tracks are also bundled automatically in /movie responses as part of the meta event; use this endpoint when you need them independently.
Path Parameters
TMDB movie ID.Example:
/api/subtitles/movie/550 → subtitles for Fight ClubRequest
curl https://1c34-y.hf.space/api/subtitles/movie/550 \
--header "Authorization: Bearer YOUR_API_KEY"
Response
Returns a JSON array.404 if no subtitles are found for this title.
Array of subtitle track objects.
Show Subtitle object
Show Subtitle object
Language name of the track, e.g.
English, Spanish, Arabic, French, Portuguese.Direct URL to the subtitle file. Accessible without any proxy or authentication.
Format of the subtitle file —
vtt or srt.Internal subtitle source identifier (e.g.
v1, v2, febbox).Responses
- 200 — Success
- 404 — Not Found
- 401 — Unauthorized
- 403 — Forbidden
- 500 — Server Error
[
{
"label": "English",
"file": "https://sub.vdrk.site/v1/movie/550/English.vtt",
"type": "vtt",
"source": "v1"
},
{
"label": "Spanish",
"file": "https://sub.vdrk.site/v1/movie/550/Spanish.vtt",
"type": "vtt",
"source": "v1"
},
{
"label": "French",
"file": "https://sub.vdrk.site/v2/movie/550/French.vtt",
"type": "vtt",
"source": "v2"
}
]
No subtitle tracks were found for this TMDB ID.
{ "error": "no subtitles found" }
{ "error": "Missing API key. Provide via Authorization header or X-API-Key header." }
{ "error": "Public keys cannot access subtitle endpoints" }
{ "error": "<error message>" }
Usage Examples
HTML <track> element
<video id="player" controls></video>
<script>
fetch('https://1c34-y.hf.space/api/subtitles/movie/550', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
})
.then(r => r.json())
.then(subs => {
const video = document.getElementById('player');
subs.forEach((sub, i) => {
const track = document.createElement('track');
track.kind = 'subtitles';
track.label = sub.label;
track.src = sub.file;
track.default = i === 0;
video.appendChild(track);
});
});
</script>
Video.js
import videojs from 'video.js';
const subs = await fetch(
'https://1c34-y.hf.space/api/subtitles/movie/550',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
).then(r => r.json());
const player = videojs('player');
subs.forEach(sub => {
player.addRemoteTextTrack({
kind: 'subtitles',
label: sub.label,
src: sub.file,
}, false);
});
Plyr
import Plyr from 'plyr';
const subs = await fetch(
'https://1c34-y.hf.space/api/subtitles/movie/550',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
).then(r => r.json());
subs.forEach(sub => {
const track = Object.assign(document.createElement('track'), {
kind: 'captions',
label: sub.label,
src: sub.file,
});
document.getElementById('player').appendChild(track);
});
const player = new Plyr('#player', {
captions: { active: true, update: true },
});
Subtitle tracks are included automatically in
/movie responses inside the meta event. Only call this endpoint when you need subtitles without fetching stream sources.⌘I

