Update configuration
Update the application configuration settings
X-API-Key<token>API key authentication using X-API-Key header
Writable configuration fields; server-internal settings are rejected
application/json- body
Writable configuration fields; server-internal settings are rejected
baseUrl?string|stringport?integer1 <= value <= 65535dbPath?stringcookieSecured?booleanlogLevel?ConfigLogLevelHow much Pulsarr writes to its log
"fatal""error""warn""info""debug""trace""silent"closeGraceDelay?numberrateLimitMax?numberqueueProcessDelaySeconds?numbermaintainerrEnabled?booleanmaintainerrUrl?string|stringmaintainerrExclusionMode?MaintainerrExclusionModeExclude Maintainerr-handled media for its current watchlisters, or globally for every user
"watchlisters""global"discordWebhookUrl?stringdiscordBotToken?stringdiscordClientId?stringsystemAppriseUrl?stringappriseEmailSender?stringpublicContentNotifications?plexMobileEnabled?booleanqueueWaitTime?integer0 <= value <= 1800000newEpisodeThreshold?integer0 <= value <= 2592000000notifyOnUpdate?UpdateNotifyOptionChannels an admin notification goes to
"none""all""discord-only""apprise-only""webhook-only""dm-only"notifyOnAvailability?booleanpendingWebhookRetryInterval?numberpendingWebhookMaxAge?numberpendingWebhookCleanupInterval?numberplexTokens?array<string>Plex authentication tokens
skipFriendSync?booleandeleteMovie?booleandeleteEndedShow?booleandeleteContinuingShow?booleandeleteFiles?booleanrespectUserSyncSetting?booleandeleteSyncNotify?DeleteSyncNotifyOptionChannels the delete sync run summary goes to, legacy aliases included
"none""message""webhook""both""all""discord-only""apprise-only""webhook-only""dm-only""discord-webhook""discord-message""discord-both"approvalNotify?NotifyOptionChannels an admin notification goes to, legacy aliases included
"none""all""discord-only""apprise-only""webhook-only""dm-only""discord-webhook""discord-message""discord-both"watchlistCapNotify?NotifyOptionChannels an admin notification goes to, legacy aliases included
"none""all""discord-only""apprise-only""webhook-only""dm-only""discord-webhook""discord-message""discord-both"watchlistCapNotifyUser?booleanwatchlistAddNotify?NotifyOptionChannels an admin notification goes to, legacy aliases included
"none""all""discord-only""apprise-only""webhook-only""dm-only""discord-webhook""discord-message""discord-both"deleteSyncNotifyOnlyOnDeletion?booleanmaxDeletionPrevention?number1 <= value <= 100deletionMode?DeletionModeWhether delete sync targets content off every watchlist or content carrying the removal tag
"watchlist""tag-based"removedTagPrefix?string^[a-zA-Z0-9-]+$1 <= lengthdeleteSyncRequiredTagRegex?stringlength <= 1024deleteSyncTrackedOnly?booleandeleteSyncCleanupApprovals?booleanremovedTagMode?RemovedTagModeWhat happens to a user tag once that user drops the content
"remove""keep""special-tag"enablePlexPlaylistProtection?booleanplexProtectionPlaylistName?stringplexServerUrl?string|stringskipIfExistsOnPlex?booleanplexLabelSync?Writable Plex label sync settings. Send the whole object, it replaces the stored one.
selfRss?stringfriendsRss?string_isReady?booleanplexSessionMonitoring?newUserDefaultCanSync?booleannewUserDefaultRequiresApproval?booleannewUserDefaultMovieQuotaEnabled?booleannewUserDefaultMovieQuotaType?QuotaTypeQuota window, the current day, a rolling run of days, or a monthly period from the configured reset day
"daily""weekly_rolling""monthly"newUserDefaultMovieQuotaLimit?integer1 <= value <= 1000newUserDefaultMovieBypassApproval?booleannewUserDefaultMovieWatchlistCap?|nullnewUserDefaultShowQuotaEnabled?booleannewUserDefaultShowQuotaType?QuotaTypeQuota window, the current day, a rolling run of days, or a monthly period from the configured reset day
"daily""weekly_rolling""monthly"newUserDefaultShowQuotaLimit?integer1 <= value <= 1000newUserDefaultShowBypassApproval?booleannewUserDefaultShowWatchlistCap?|nullquotaSettings?Writable quota settings. Send the whole object, it replaces the stored one.
approvalExpiration?Writable approval expiry and cleanup settings. Send the whole object, it replaces the stored one.
tmdbRegion?string^[A-Z]{2}$tagUsersInSonarr?booleantagUsersInRadarr?booleancleanupOrphanedTags?booleantagPrefix?string^[a-zA-Z0-9-]+$1 <= lengthtagNamingSource?UserNamingSourceWhich user name a per-user tag or label is built from
"username""alias"tagMigration?Tag format migration status per Radarr/Sonarr instance
Default Response
application/json- response
Configuration response envelope
success*booleanconfig*Complete application configuration; server-internal secrets are never included
webhooks?Per-instance webhook outcomes for every Radarr and Sonarr
curl -X PUT 'http://localhost:3003/v1/config' \ -H 'Content-Type: application/json' \ -d '{}'{ "success": true, "config": { "id": 0, "created_at": "string", "updated_at": "string", "baseUrl": "string", "port": 1, "dbPath": "string", "cookieSecured": true, "logLevel": "fatal", "closeGraceDelay": 0, "rateLimitMax": 0, "queueProcessDelaySeconds": 0, "maintainerrEnabled": true, "maintainerrUrl": "string", "maintainerrExclusionMode": "watchlisters", "discordWebhookUrl": "string", "discordBotToken": "string", "discordClientId": "string", "enableApprise": true, "appriseUrl": "string", "systemAppriseUrl": "string", "appriseEmailSender": "string", "publicContentNotifications": { "enabled": true, "discordWebhookUrls": "string", "discordWebhookUrlsMovies": "string", "discordWebhookUrlsShows": "string", "appriseUrls": "string", "appriseUrlsMovies": "string", "appriseUrlsShows": "string" }, "plexMobileEnabled": true, "deletionMode": "watchlist", "queueWaitTime": 0, "newEpisodeThreshold": 0, "notifyOnUpdate": "none", "notifyOnAvailability": true, "pendingWebhookRetryInterval": 0, "pendingWebhookMaxAge": 0, "pendingWebhookCleanupInterval": 0, "tmdbRegion": "string", "plexTokens": [ "string" ], "skipFriendSync": true, "plexServerUrl": "string", "skipIfExistsOnPlex": true, "deleteMovie": true, "deleteEndedShow": true, "deleteContinuingShow": true, "deleteFiles": true, "respectUserSyncSetting": true, "deleteSyncNotify": "none", "approvalNotify": "none", "watchlistCapNotify": "none", "watchlistCapNotifyUser": true, "watchlistAddNotify": "none", "deleteSyncNotifyOnlyOnDeletion": true, "maxDeletionPrevention": 0, "deleteSyncTrackedOnly": true, "deleteSyncCleanupApprovals": true, "deleteSyncRequiredTagRegex": "string", "enablePlexPlaylistProtection": true, "plexProtectionPlaylistName": "string", "plexLabelSync": { "enabled": true, "labelPrefix": "string", "labelNamingSource": "username", "cleanupOrphanedLabels": true, "removedLabelMode": "remove", "removedLabelPrefix": "string", "autoResetOnScheduledSync": true, "tagSync": { "enabled": true, "syncRadarrTags": true, "syncSonarrTags": true } }, "selfRss": "string", "friendsRss": "string", "tagUsersInSonarr": true, "tagUsersInRadarr": true, "cleanupOrphanedTags": true, "tagPrefix": "string", "tagNamingSource": "username", "removedTagMode": "remove", "removedTagPrefix": "string", "tagMigration": { "radarr": { "property1": { "completed": true, "migratedAt": "string", "tagsMigrated": 0, "contentUpdated": 0 }, "property2": { "completed": true, "migratedAt": "string", "tagsMigrated": 0, "contentUpdated": 0 } }, "sonarr": { "property1": { "completed": true, "migratedAt": "string", "tagsMigrated": 0, "contentUpdated": 0 }, "property2": { "completed": true, "migratedAt": "string", "tagsMigrated": 0, "contentUpdated": 0 } } }, "plexSessionMonitoring": { "enabled": true, "pollingIntervalMinutes": 0, "remainingEpisodes": 0, "filterUsers": [ "string" ], "enableAutoReset": true, "inactivityResetDays": 0, "autoResetIntervalHours": 0, "enableProgressiveCleanup": true }, "newUserDefaultCanSync": true, "newUserDefaultRequiresApproval": true, "newUserDefaultMovieQuotaEnabled": true, "newUserDefaultMovieQuotaType": "daily", "newUserDefaultMovieQuotaLimit": 0, "newUserDefaultMovieBypassApproval": true, "newUserDefaultMovieWatchlistCap": 0, "newUserDefaultShowQuotaEnabled": true, "newUserDefaultShowQuotaType": "daily", "newUserDefaultShowQuotaLimit": 0, "newUserDefaultShowBypassApproval": true, "newUserDefaultShowWatchlistCap": 0, "quotaSettings": { "cleanup": { "enabled": true, "retentionDays": 0 }, "weeklyRolling": { "resetDays": 0 }, "monthly": { "resetDay": 0, "handleMonthEnd": "last-day" } }, "approvalExpiration": { "enabled": true, "defaultExpirationHours": 0, "expirationAction": "expire", "autoApproveOnQuotaAvailable": true, "quotaExceededExpirationHours": 0, "routerRuleExpirationHours": 0, "manualFlagExpirationHours": 0, "contentCriteriaExpirationHours": 0, "cleanupExpiredDays": 0 }, "_isReady": true }, "webhooks": { "radarr": [ { "instanceId": 0, "name": "string", "success": true, "code": "callback_failed", "message": "string" } ], "sonarr": [ { "instanceId": 0, "name": "string", "success": true, "code": "callback_failed", "message": "string" } ] }}