Test a Source
curl --request GET \
--url https://missourimonster-vyla.hf.space/api/test/{id}{
"source": "<string>",
"id": "<string>",
"s": {},
"e": {},
"ok": true,
"url": {},
"raw_url": {},
"elapsed_ms": 123,
"error": {}
}Utilities
Test a Source
Debug a single provider in isolation — get the raw URL, proxy URL, elapsed time, and error details.
GET
/
api
/
test
/
{id}
Test a Source
curl --request GET \
--url https://missourimonster-vyla.hf.space/api/test/{id}{
"source": "<string>",
"id": "<string>",
"s": {},
"e": {},
"ok": true,
"url": {},
"raw_url": {},
"elapsed_ms": 123,
"error": {}
}Tests one specific provider for a given TMDB ID without running the full parallel fanout. Useful for debugging why a source isn’t appearing in movie or TV responses, or for checking a provider’s availability before building.
This endpoint runs the same two-step verification pipeline as
/movie and /tv — a HEAD check on the raw URL, followed by a proxied HLS playability check. The ok field reflects whether a verified, playable URL was found. HTTP status is always 200 regardless of success or failure — always check ok in the body.Path Parameters
TMDB ID. For movies, use the movie ID. For TV, use the series ID.
Query Parameters
Provider key to test. Must exactly match one of the configured source keys.Available keys are listed in the
sources field of /api/health or via GET /api?sources_meta.Season number. Required for TV episodes; omit for movies.
Episode number. Required for TV episodes; omit for movies.
Request
curl "https://missourimonster-vyla.hf.space/api/test/550?source=<provider-key>"
Response
The provider key that was tested.
The TMDB ID that was tested.
Season number.
null for movies.Episode number.
null for movies.true if the provider returned a URL that passed stream verification.Fully-qualified, proxied stream URL if the provider returned a valid stream.
null on failure. Always an absolute URL — no base URL prepending needed.The original, unproxied stream URL from the provider. Useful for debugging.
null on failure.Time in milliseconds from the start of the test to receiving a result.
Error message if the provider threw an exception or returned nothing.
null on success.Responses
- 200 — Source Working
- 200 — TV Episode
- 200 — Source Failed
- 400 — Invalid Source
{
"source": "provider-a",
"id": "550",
"s": null,
"e": null,
"ok": true,
"url": "https://missourimonster-vyla.hf.space/api?url=https%3A%2F%2F...&pa=1",
"raw_url": "https://...",
"elapsed_ms": 1204,
"error": null
}
{
"source": "provider-b",
"id": "1396",
"s": 1,
"e": 1,
"ok": true,
"url": "https://missourimonster-vyla.hf.space/api?url=https%3A%2F%2F...&pb=1",
"raw_url": "https://...",
"elapsed_ms": 980,
"error": null
}
HTTP status is still
200 even when the source fails.{
"source": "provider-c",
"id": "550",
"s": null,
"e": null,
"ok": false,
"url": null,
"raw_url": null,
"elapsed_ms": 435,
"error": "no stream returned"
}
{ "error": "invalid or missing source" }
Testing All Sources
To test all providers in one go and see which are working for a given title:const BASE = 'https://missourimonster-vyla.hf.space';
async function testAll(tmdbId, season, episode) {
// First, get the current list of provider keys
const meta = await fetch(`${BASE}/api?sources_meta`).then(r => r.json());
const sourceKeys = meta.sources.map(s => s.key);
const params = season && episode
? `?season=${season}&episode=${episode}`
: '?';
const results = await Promise.all(
sourceKeys.map(source =>
fetch(`${BASE}/api/test/${tmdbId}${params}&source=${source}`)
.then(r => r.json())
.catch(err => ({ source, ok: false, error: err.message, elapsed_ms: null }))
)
);
results.forEach(r => {
const status = r.ok ? '✓' : '✗';
const time = r.elapsed_ms != null ? `${r.elapsed_ms}ms` : 'N/A';
console.log(`${status} ${r.source.padEnd(12)} ${time.padStart(7)} ${r.error || ''}`);
});
}
testAll(550);
For a quick overview without per-provider isolation, use
/api/health — it probes all providers simultaneously and is optimised for monitoring.⌘I

