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
qbittorrentQBittorrentConfigNo—qBittorrent direct configuration
bazarrBazarrConfigNo—Bazarr subtitle manager configuration
releaseProfilesReleaseProfile[]No[]Release profiles (Sonarr only)
namingNamingConfigNo—File and folder naming settings
mediaManagementMediaManagementConfigNo—Import, permissions, and file handling
qualityDefinitionsQualityDefinition[]No[]Quality size limit overrides

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

FieldTypeRequiredDefaultDescription
namestringYes—Profile display name
cutoffnumberYes—Quality ID where upgrades stop
itemsQualityItem[]Yes—Quality 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
idnumberNo—Existing format ID (for updates)
namestringYes—Custom format name
includeCustomFormatWhenRenamingbooleanNofalseInclude in file renaming
specificationsSpecification[]No[]Matching conditions
FieldTypeRequiredDefaultDescription
namestringYes—Specification name
implementationstringYes—Matching 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
namestringYes—Display name
implementationstringYes—Client type (e.g., QBittorrent, Sabnzbd)
implementationNamestringYes—Human-readable implementation name
configContractstringYes—Settings contract (e.g., QBittorrentSettings)
fieldsField[]Yes—Client-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
namestringYes—Display name
implementationstringYes—Indexer type (e.g., Newznab, Cardigann)
implementationNamestringYes—Human-readable name
configContractstringYes—Settings contract (e.g., NewznabSettings)
infoLinkstring | nullNo—URL for indexer info
tagsnumber[]No[]Tag IDs
fieldsField[]Yes—Indexer-specific settings
enablebooleanNotrueWhether the indexer is active
prioritynumberNo25Search priority
appProfileIdnumberNo—Application profile (Prowlarr only)

FieldTypeRequiredDefaultDescription
idnumberNo—Existing application ID
namestringYes—Display name
implementationstringYes—App type (e.g., Sonarr, Radarr)
implementationNamestringYes—Human-readable name
configContractstringYes—Settings contract (e.g., SonarrSettings)
appProfileIdnumberNo—Sync profile ID
fieldsField[]Yes—Connection 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
subtitleDefaultsSubtitleDefaultsNo—Default subtitle preferences
sonarrobjectNo—Sonarr integration: { url: string, apiKey: string }
radarrobjectNo—Radarr integration: { url: string, apiKey: string }
FieldTypeRequiredDefaultDescription
codestringYes—ISO 639-1 language code (e.g., en, nl)
namestringYes—Language display name (e.g., English)
enabledbooleanNotrueWhether to enable this language
FieldTypeRequiredDefaultDescription
namestringYes—Provider 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
idnumberNo—Existing profile ID
namestringYes—Profile 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
renameEpisodesboolean—Enable episode file renaming
standardEpisodeFormatstring—Format for standard episodes
dailyEpisodeFormatstring—Format for daily episodes
animeEpisodeFormatstring—Format for anime episodes
seriesFolderFormatstring—Series root folder format
seasonFolderFormatstring—Season subfolder format
specialsFolderFormatstring—Specials folder format
multiEpisodeStylenumber—Multi-episode naming style
FieldTypeDefaultDescription
renameMoviesboolean—Enable movie file renaming
movieFormatstring—Movie filename format
movieFolderFormatstring—Movie folder format
colonReplacementFormatstring—How to replace colons
FieldTypeDefaultDescription
renameTracksboolean—Enable track renaming
trackFormatstring—Track filename format
artistFolderFormatstring—Artist folder format
albumFolderFormatstring—Album folder format
FieldTypeDefaultDescription
renameBooksboolean—Enable book renaming
standardBookFormatstring—Book filename format
authorFolderFormatstring—Author 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
chownGroupstring—Group ownership
autoUnmonitorPreviouslyDownloadedbooleanfalseUnmonitor after download
downloadPropersAndRepacksstringpreferAndUpgradeProper/repack handling
createEmptySeriesFoldersboolean—Create folders for new series (Sonarr)
createEmptyMovieFoldersboolean—Create folders for new movies (Radarr)
deleteEmptyFoldersbooleanfalseDelete folders when empty
fileDatestringnoneSet file date on import (none, cinemas, release)
recycleBinstring—Path 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
scriptImportPathstring—Path to import script
enableMediaInfobooleantrueExtract media info from files
rescanAfterRefreshstringalwaysRescan behavior (always, afterManual, never)

Override default quality size limits.

FieldTypeRequiredDefaultDescription
qualitystringYes—Quality name (e.g., Bluray-1080p)
titlestringNo—Display title
minSizenumberNo—Minimum size in MB per minute
maxSizenumberNo—Maximum size in MB per minute
preferredSizenumberNo—Preferred size in MB per minute
{
"qualityDefinitions": [
{
"quality": "Bluray-1080p",
"title": "Bluray-1080p",
"minSize": 5,
"maxSize": 100,
"preferredSize": 30
}
]
}