Skip to main content
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

id
string
required
TMDB ID. For movies, use the movie ID. For TV, use the series ID.

Query Parameters

source
string
required
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
Season number. Required for TV episodes; omit for movies.
episode
number
Episode number. Required for TV episodes; omit for movies.

Request

curl "https://missourimonster-vyla.hf.space/api/test/550?source=<provider-key>"

Response

source
string
required
The provider key that was tested.
id
string
required
The TMDB ID that was tested.
s
number | null
required
Season number. null for movies.
e
number | null
required
Episode number. null for movies.
ok
boolean
required
true if the provider returned a URL that passed stream verification.
url
string | null
Fully-qualified, proxied stream URL if the provider returned a valid stream. null on failure. Always an absolute URL — no base URL prepending needed.
raw_url
string | null
The original, unproxied stream URL from the provider. Useful for debugging. null on failure.
elapsed_ms
number
required
Time in milliseconds from the start of the test to receiving a result.
error
string | null
required
Error message if the provider threw an exception or returned nothing. null on success.

Responses

{
  "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
}

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.