Movie Subtitles
curl --request GET \
--url https://missourimonster-vyla.hf.space/api/subtitles/movie/{tmdb_id}{
"[]": [
{
"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://missourimonster-vyla.hf.space/api/subtitles/movie/{tmdb_id}{
"[]": [
{
"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. Subtitle tracks are also bundled automatically in /api/movie responses; use this endpoint when you need them independently.
Path Parameters
TMDB movie ID.Example:
/api/subtitles/movie/550 → subtitles for Fight ClubRequest
curl https://missourimonster-vyla.hf.space/api/subtitles/movie/550
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
- 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": "<error message>" }
Usage Examples
HTML <track> element
<video id="player" controls></video>
<script>
fetch('https://missourimonster-vyla.hf.space/api/subtitles/movie/550')
.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; // default to first track
video.appendChild(track);
});
});
</script>
Video.js
import videojs from 'video.js';
const subs = await fetch(
'https://missourimonster-vyla.hf.space/api/subtitles/movie/550'
).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://missourimonster-vyla.hf.space/api/subtitles/movie/550'
).then(r => r.json());
// Add <track> elements before initialising Plyr
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
/api/movie responses. Only call this endpoint when you need subtitles without fetching stream sources.⌘I

