Skip to content

API Keys

The API Keys page is a unified credential vault. Every key Sublarr sends out — to OpenSubtitles, Jimaku, SubDL, Sonarr, Radarr, Plex, Jellyfin, Emby, TMDB, TVDB, and the LLM backends — is listed here, with test buttons, rotation flags, and import/export. It’s the audit trail you reach for when something stops authenticating.

TypeUsed byWhere it’s also editable
Provider keyOpenSubtitles, Jimaku, SubDL, Whisper, Subgen, othersSettings → Providers
Arr keySonarr, RadarrSettings → Connections
Media server tokenPlex, Jellyfin, EmbySettings → Connections
Metadata keyTMDB, TVDB, AniDBSettings → Connections → Metadata
LLM keyAnthropic, OpenAI, Gemini, DeepSeek, Mistral, DeepL, AzureSettings → Translation → Backends
Inbound API keyThe X-Api-Key callers must present to talk to SublarrSettings → System → Security

Editing a key on its origin page (e.g. on Settings → Providers) and editing it here change the same database row.

Some providers support multiple keys rotated automatically when one hits a daily quota. Each key carries:

FieldEffect
LabelHuman-readable identifier (“Free tier” / “Paid”).
KeyThe credential itself. Masked in the UI; shown when editing.
Tierfree / paid — affects rotation order.
Username / PasswordOptional — required by some providers.
EnabledToggle without deleting. Disabled keys aren’t tried.

Sublarr cycles through enabled keys in paidfree order, retrying on 429 and rotating to the next key when the current one is rate-limited. The Test button next to each key dry-runs the provider’s auth endpoint and reports the result without touching real subtitle traffic.

The page header has a Test all button that round-trips every enabled key in parallel, reporting status as OK, failed, or rate-limited per row. Use it after a config import or when subtitle searches start failing en masse — it tells you in one view which credentials are the problem.

Below the key list:

ButtonFormatWhat it does
ExportYAMLDumps every key (masked) plus the credential structure. The actual key strings are exported separately to an encrypted blob if you tick Include secrets.
ImportYAMLReads a previously exported file. Conflicts (existing key for the same provider) prompt for “overwrite / keep / merge”.
Bulk pasteCSVPaste a CSV (provider,label,key,tier,enabled) for first-time setup of many keys at once.

The last section is the API key Sublarr expects on incoming requests (the X-Api-Key header):

FieldEffect
Current keyThe active value. Click reveal to show.
GenerateCreates a new random key (32 hex chars). The old key remains valid until Save — preventing self-lockout.
Disable authSets the key to empty. Sublarr accepts unauthenticated requests.

Every key change writes to Activity → History with the operator user, the field, and a redacted before/after. Use the History filter on subsystem = api_keys to retrieve the full audit trail for compliance or post-incident review.