Skip to content

OpenSubtitles.com Integration

OpenSubtitles API

KeyPool exposes the core OpenSubtitles.com subtitle flow on the singular service route opensubtitle. KeyPool injects its pooled provider Api-Key and registered User-Agent; your application keeps its own OpenSubtitles login session.

Endpoint and team authentication

{YOUR_KEYPOOL_BASE_URL}/v1/opensubtitle

Every request uses the KeyPool team token:

Authorization: Bearer {KEYPOOL_TOKEN}

Authorization always means the KeyPool team token at the public edge. Do not replace it with an OpenSubtitles JWT.

Search subtitles

Search is available without a caller login session:

curl --get "${KEYPOOL_BASE_URL}/v1/opensubtitle/api/v1/subtitles" \
  -H "Authorization: Bearer ${KEYPOOL_TOKEN}" \
  --data-urlencode "imdb_id=tt1375666" \
  --data-urlencode "languages=en"

Use the provider's documented search parameters for the exact content you need. The curated KeyPool surface intentionally excludes AI and upload endpoints. If OpenSubtitles canonicalizes a search with a redirect, KeyPool rewrites it to the same /v1/opensubtitle route, so clients never follow a provider-host URL. Clients that do not retain Authorization across redirects must resend the same KeyPool team token when requesting that returned URL.

Log in and retain the caller-owned session

Log in using your approved OpenSubtitles account. KeyPool forwards the request with its pooled Api-Key, returns the upstream JSON response, and never stores your password or raw JWT.

curl "${KEYPOOL_BASE_URL}/v1/opensubtitle/api/v1/login" \
  -X POST \
  -H "Authorization: Bearer ${KEYPOOL_TOKEN}" \
  -H "Content-Type: application/json" \
  --data '{"username":"YOUR_OPENSUBTITLES_USERNAME","password":"YOUR_OPENSUBTITLES_PASSWORD"}'

Keep the returned token in your application session only. For the caller session endpoints below, send it in the dedicated header while retaining the KeyPool team token in Authorization:

X-KeyPool-OpenSubtitles-Session: Bearer {OPENSUBTITLES_JWT}

KeyPool stores only a SHA-256 fingerprint for 12 hours, bound to the selected provider credential and the standard or provider-approved VIP API host. It never stores your username, password, or JWT, and it does not accept a client-supplied upstream host.

Account information, download, and logout

Use both headers for session-bound calls:

curl "${KEYPOOL_BASE_URL}/v1/opensubtitle/api/v1/infos/user" \
  -H "Authorization: Bearer ${KEYPOOL_TOKEN}" \
  -H "X-KeyPool-OpenSubtitles-Session: Bearer ${OPENSUBTITLES_JWT}"

curl "${KEYPOOL_BASE_URL}/v1/opensubtitle/api/v1/download" \
  -X POST \
  -H "Authorization: Bearer ${KEYPOOL_TOKEN}" \
  -H "X-KeyPool-OpenSubtitles-Session: Bearer ${OPENSUBTITLES_JWT}" \
  -H "Content-Type: application/json" \
  --data '{"file_id":12345}'

curl "${KEYPOOL_BASE_URL}/v1/opensubtitle/api/v1/logout" \
  -X DELETE \
  -H "Authorization: Bearer ${KEYPOOL_TOKEN}" \
  -H "X-KeyPool-OpenSubtitles-Session: Bearer ${OPENSUBTITLES_JWT}"

The binding expires after 12 hours and is removed immediately after a successful logout. A JWT not created through KeyPool, an invalid header, or a session route without the session header is rejected before it reaches the provider.

Interactive API Reference

Try the curated core flow in API Reference → OpenSubtitles.com.