OpenSubtitles.com Integration¶
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.