Skip to content

Integrations

This page is the user-facing walkthrough for connecting Sublarr to the rest of your stack. The settings reference for these connections lives at Settings → Connections — this page is the guide you follow first.

The most common setup. Sonarr/Radarr sources truth — what’s in the library, what got imported, what got upgraded. Sublarr subscribes to that stream.

In Sublarr → Settings → Connections → Sonarr (or Radarr) → Add instance:

FieldWhere to find it in Sonarr/Radarr
URLThe base URL you use to access the *arr UI. Example: http://sonarr:8989.
API keySonarr → Settings → General → API Key.
LabelFree text — used in dropdowns when you have multiple instances.

Click Test — green = connected. Sublarr will start importing your library on the first scheduled sync; trigger immediate import via Trigger sync in the row.

You can register as many Sonarr / Radarr instances as you have. Sublarr deduplicates by media ID across them. Common patterns:

PatternSetup
Anime + Western splitTwo Sonarrs (one anime, one western). Two rows in Sublarr.
4K + 1080p splitTwo Radarrs (one per resolution). Same.
Sonarr-A + Sonarr-B-testProduction + staging. Disable the staging row in Sublarr until ready to go live.

Without webhooks, Sublarr polls Sonarr/Radarr on its scheduled interval. With webhooks, the *arr pushes import events to Sublarr immediately, so a search for the new episode starts within seconds rather than waiting for the next poll cycle.

Set up in the *arr UI:

  1. Sonarr/Radarr → Settings → Connect → +Webhook.
  2. Name: Sublarr.
  3. On Grab + On Import + On Upgrade.
  4. URL: copy from Sublarr → Settings → Connections → Webhooks → Sonarr URL.
  5. Method: POST.
  6. Headers: add X-Webhook-Secret: <secret-from-Sublarr>.
  7. Save.

After that, Sublarr’s manual_action_required event fires only on legitimate exceptions — most imports flow silently end-to-end.

If Sonarr/Radarr’s view of paths differs from Sublarr’s view, configure path mapping. See Path Mapping for the full reference. The wizard offers this in step 4 of the onboarding wizard.

Plex needs a fresh library scan after Sublarr writes a subtitle, otherwise the new track won’t appear in the player.

FieldWhere to find it in Plex
URLhttp://<plex-host>:32400
Tokenhttps://app.plex.tv/desktop/#!/account → log in → Plex Web app → URL shows ?X-Plex-Token=.... The Plex docs walk through this in detail.
Library scopeDefault: refresh all libraries on update. Restrict to specific libraries if you have many.

After saving, Test round-trips Plex’s identity endpoint (/identity) and reports the server name + version.

FieldWhere to find it in Jellyfin
URLhttp://<jellyfin-host>:8096
API keyDashboard → API Keys → Create.
User IDDashboard → Users → click user → URL shows userId=....

Same workflow — Test confirms connectivity, then library refreshes happen automatically on subtitle write.

Same as Jellyfin (Emby is the parent of Jellyfin’s UI):

FieldWhere to find it
URLhttp://<emby-host>:8096
API keyDashboard → Advanced → API Keys → Create.
User IDDashboard → Users.

When you don’t run Sonarr/Radarr or want Sublarr to manage a folder outside their control:

  1. Settings → Connections → Standalone → Add folder.
  2. Path: absolute path inside Sublarr’s container (e.g. /media/anime).
  3. Label: sidebar display name.
  4. Scan interval: optional per-folder override; default uses the global cadence.

Standalone folders coexist with *arr instances. Files found there that aren’t in *arr show up in Library tagged “standalone”.

For systems Sublarr should push to (e.g. custom CMS, in-house pipeline, alerting):

MechanismUse for
Notification channelsGeneric event delivery via Apprise — Discord, Slack, Telegram, email, custom JSON. See Notifications.
Outbound hooksDirect HTTP POST per event. See Hooks & Webhooks.

Once everything’s connected, Settings → Diagnostics shows aggregate health across all integrations in one view — *arr instances reachable, media servers online, providers healthy, translation backends responsive.