Skip to content

JSON Schema Reference

This page documents every field available in PrepArr configuration files. The schema is validated using Zod at startup and on every reconciliation cycle.

PropertyTypeRequiredDefaultDescription
apiKeystringNoAuto-generated32-character hex API key for the Servarr instance
prowlarrSyncbooleanNofalseSkip indexer management (let Prowlarr handle it)
rootFoldersRootFolder[]No[]Media root folder paths
qualityProfilesQualityProfile[]No[]Quality profile definitions
customFormatsCustomFormat[]No[]Custom format definitions (Sonarr v4+, Radarr)
downloadClientsDownloadClient[]No[]Download client configurations
indexersIndexer[]NoundefinedIndexer configurations (omit to leave unchanged)
applicationsApplication[]No[]Prowlarr application sync targets
qbittorrentQBittorrentConfigNoqBittorrent direct configuration
bazarrBazarrConfigNoBazarr subtitle manager configuration
releaseProfilesReleaseProfile[]No[]Release profiles (Sonarr only)
namingNamingConfigNoFile and folder naming settings
mediaManagementMediaManagementConfigNoImport, permissions, and file handling
qualityDefinitionsQualityDefinition[]No[]Quality size limit overrides

FieldTypeRequiredDefaultDescription
pathstringYesAbsolute path to the media folder
accessiblebooleanNotrueWhether the path should be accessible
freeSpacenumberNoExpected free space in bytes
unmappedFoldersstring[]No[]Subfolders to exclude from library scans
{
"rootFolders": [
{ "path": "/tv", "accessible": true },
{ "path": "/anime", "accessible": true }
]
}

FieldTypeRequiredDefaultDescription
namestringYesProfile display name
cutoffnumberYesQuality ID where upgrades stop
itemsQualityItem[]YesQuality tiers and their allowed status
formatItemsFormatItem[]No[]Custom format scoring
minFormatScorenumberNo0Minimum custom format score to download
cutoffFormatScorenumberNo0Custom format score where upgrades stop
upgradeAllowedbooleanNotrueAllow quality upgrades
FieldTypeRequiredDescription
qualityobjectYes{ id: number, name: string }
allowedbooleanYesWhether this quality is acceptable
FieldTypeRequiredDescription
formatstringYesCustom format name (matched by name)
scorenumberYesScore to assign when this format matches
{
"qualityProfiles": [
{
"name": "HD - 1080p",
"cutoff": 1080,
"upgradeAllowed": true,
"items": [
{ "quality": { "id": 7, "name": "Bluray-1080p" }, "allowed": true },
{ "quality": { "id": 3, "name": "WEBDL-1080p" }, "allowed": true },
{ "quality": { "id": 9, "name": "HDTV-1080p" }, "allowed": true }
],
"formatItems": [
{ "format": "x265", "score": 100 }
],
"minFormatScore": 0,
"cutoffFormatScore": 0
}
]
}

FieldTypeRequiredDefaultDescription
idnumberNoExisting format ID (for updates)
namestringYesCustom format name
includeCustomFormatWhenRenamingbooleanNofalseInclude in file renaming
specificationsSpecification[]No[]Matching conditions
FieldTypeRequiredDefaultDescription
namestringYesSpecification name
implementationstringYesMatching type (e.g., ReleaseTitleSpecification)
negatebooleanNofalseInvert the match
requiredbooleanNofalseMust match (AND logic vs OR)
fieldsField[]No[]Implementation-specific settings

Each field in fields is { name: string, value: string | number | boolean | number[] }.

{
"customFormats": [
{
"name": "x265",
"specifications": [
{
"name": "x265",
"implementation": "ReleaseTitleSpecification",
"fields": [
{ "name": "value", "value": "x265|h\\.?265|hevc" }
]
}
]
}
]
}

FieldTypeRequiredDefaultDescription
namestringYesDisplay name
implementationstringYesClient type (e.g., QBittorrent, Sabnzbd)
implementationNamestringYesHuman-readable implementation name
configContractstringYesSettings contract (e.g., QBittorrentSettings)
fieldsField[]YesClient-specific settings
enablebooleanNotrueWhether the client is active
prioritynumberNo1Download priority (lower = higher priority)
{
"downloadClients": [
{
"name": "qBittorrent",
"implementation": "QBittorrent",
"implementationName": "qBittorrent",
"configContract": "QBittorrentSettings",
"fields": [
{ "name": "host", "value": "qbittorrent" },
{ "name": "port", "value": 8080 },
{ "name": "username", "value": "admin" },
{ "name": "password", "value": "adminpass" },
{ "name": "movieCategory", "value": "movies" }
]
}
]
}

FieldTypeRequiredDefaultDescription
namestringYesDisplay name
implementationstringYesIndexer type (e.g., Newznab, Cardigann)
implementationNamestringYesHuman-readable name
configContractstringYesSettings contract (e.g., NewznabSettings)
infoLinkstring | nullNoURL for indexer info
tagsnumber[]No[]Tag IDs
fieldsField[]YesIndexer-specific settings
enablebooleanNotrueWhether the indexer is active
prioritynumberNo25Search priority
appProfileIdnumberNoApplication profile (Prowlarr only)

FieldTypeRequiredDefaultDescription
idnumberNoExisting application ID
namestringYesDisplay name
implementationstringYesApp type (e.g., Sonarr, Radarr)
implementationNamestringYesHuman-readable name
configContractstringYesSettings contract (e.g., SonarrSettings)
appProfileIdnumberNoSync profile ID
fieldsField[]YesConnection settings
enablebooleanNotrueWhether sync is active
syncLevelstringNoaddOnlySync behavior: addOnly or fullSync
tagsnumber[]No[]Tag IDs

Direct qBittorrent configuration (alternative to using the Servarr download client API).

FieldTypeRequiredDescription
webuiobjectNo{ username: string, password: string }
downloadsobjectNo{ defaultPath: string, categories: string[] }
connectionobjectNo{ port: number }
FieldDefault
webui.usernameadmin
webui.passwordadminpass
downloads.defaultPath/downloads
downloads.categories[]
connection.port6881

Bazarr subtitle manager configuration. Used when SERVARR_TYPE=bazarr or when configuring a remote Bazarr instance.

FieldTypeRequiredDefaultDescription
languagesBazarrLanguage[]No[]Languages to enable for subtitles
providersBazarrProvider[]No[]Subtitle provider configurations
subtitleDefaultsSubtitleDefaultsNoDefault subtitle preferences
sonarrobjectNoSonarr integration: { url: string, apiKey: string }
radarrobjectNoRadarr integration: { url: string, apiKey: string }
FieldTypeRequiredDefaultDescription
codestringYesISO 639-1 language code (e.g., en, nl)
namestringYesLanguage display name (e.g., English)
enabledbooleanNotrueWhether to enable this language
FieldTypeRequiredDefaultDescription
namestringYesProvider name (e.g., opensubtitlescom)
enabledbooleanNotrueWhether to enable this provider
settingsRecordNo{}Provider-specific settings
FieldTypeRequiredDefaultDescription
seriesTypestringNohearing_impaired_preferredSeries subtitle type
movieTypestringNohearing_impaired_preferredMovie subtitle type
searchOnUpgradebooleanNotrueSearch for subtitles on upgrade
searchOnDownloadbooleanNotrueSearch for subtitles on download
{
"bazarr": {
"languages": [
{ "code": "en", "name": "English" },
{ "code": "nl", "name": "Dutch" }
],
"providers": [
{ "name": "opensubtitlescom", "enabled": true }
],
"sonarr": {
"url": "http://sonarr:8989",
"apiKey": "your-sonarr-api-key"
},
"radarr": {
"url": "http://radarr:7878",
"apiKey": "your-radarr-api-key"
}
}
}

FieldTypeRequiredDefaultDescription
idnumberNoExisting profile ID
namestringYesProfile name
enabledbooleanNotrueWhether the profile is active
requiredstring | nullNonullRequired terms (comma-separated)
ignoredstring | nullNonullIgnored terms (comma-separated)
preferredTerm[]No[]Preferred terms with scores
includePreferredWhenRenamingbooleanNofalseInclude preferred term in filename
indexerIdnumberNo0Restrict to specific indexer (0 = all)
tagsnumber[]No[]Tag IDs
FieldTypeDescription
keystringTerm or regex pattern
valuenumberScore (positive = preferred, negative = avoided)

Naming fields vary by Servarr application type. All types share:

FieldTypeDefaultDescription
replaceIllegalCharactersbooleantrueReplace characters not allowed in filenames
FieldTypeDefaultDescription
renameEpisodesbooleanEnable episode file renaming
standardEpisodeFormatstringFormat for standard episodes
dailyEpisodeFormatstringFormat for daily episodes
animeEpisodeFormatstringFormat for anime episodes
seriesFolderFormatstringSeries root folder format
seasonFolderFormatstringSeason subfolder format
specialsFolderFormatstringSpecials folder format
multiEpisodeStylenumberMulti-episode naming style
FieldTypeDefaultDescription
renameMoviesbooleanEnable movie file renaming
movieFormatstringMovie filename format
movieFolderFormatstringMovie folder format
colonReplacementFormatstringHow to replace colons
FieldTypeDefaultDescription
renameTracksbooleanEnable track renaming
trackFormatstringTrack filename format
artistFolderFormatstringArtist folder format
albumFolderFormatstringAlbum folder format
FieldTypeDefaultDescription
renameBooksbooleanEnable book renaming
standardBookFormatstringBook filename format
authorFolderFormatstringAuthor folder format

FieldTypeDefaultDescription
importExtraFilesbooleanfalseImport subtitle and other extra files
extraFileExtensionsstringsrt,sub,idxExtra file extensions to import
setPermissionsLinuxbooleanfalseSet file/folder permissions on Linux
chmodFolderstring755Folder permissions
chmodFilestring644File permissions
chownGroupstringGroup ownership
autoUnmonitorPreviouslyDownloadedbooleanfalseUnmonitor after download
downloadPropersAndRepacksstringpreferAndUpgradeProper/repack handling
createEmptySeriesFoldersbooleanCreate folders for new series (Sonarr)
createEmptyMovieFoldersbooleanCreate folders for new movies (Radarr)
deleteEmptyFoldersbooleanfalseDelete folders when empty
fileDatestringnoneSet file date on import (none, cinemas, release)
recycleBinstringPath to recycle bin folder
recycleBinCleanupDaysnumber7Days before cleaning recycle bin
skipFreeSpaceCheckWhenImportingbooleanfalseSkip disk space check
minimumFreeSpaceWhenImportingnumber100Minimum free space in MB
copyUsingHardlinksbooleantrueUse hardlinks instead of copying
useScriptImportbooleanfalseRun script on import
scriptImportPathstringPath to import script
enableMediaInfobooleantrueExtract media info from files
rescanAfterRefreshstringalwaysRescan behavior (always, afterManual, never)

Override default quality size limits.

FieldTypeRequiredDefaultDescription
qualitystringYesQuality name (e.g., Bluray-1080p)
titlestringNoDisplay title
minSizenumberNoMinimum size in MB per minute
maxSizenumberNoMaximum size in MB per minute
preferredSizenumberNoPreferred size in MB per minute
{
"qualityDefinitions": [
{
"quality": "Bluray-1080p",
"title": "Bluray-1080p",
"minSize": 5,
"maxSize": 100,
"preferredSize": 30
}
]
}