Get a sync preview
const url = 'https://example.com/api/v1/sync/preview/example';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/v1/sync/preview/exampleRetrieves a previously generated preview snapshot by ID.
This endpoint is read-only and is safe to call repeatedly while preview state changes naturally over time.
Snapshots are subject to staleness rules enforced by the preview TTL. A preview that has exceeded the TTL should be treated as expired.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Preview snapshot ID
Responses
Section titled “Responses”Sync preview
object
Preview identifier
Target Arr instance ID
Target Arr instance name
Arr instance family
ISO 8601 timestamp when preview was generated
ISO 8601 timestamp when preview becomes expired
Preview lifecycle state:
generating: build in progressready: preview fully materialized and runnableapplying: preview is being executed as syncapplied: execution succeededfailed: generation or execution failedexpired: staleness TTL elapsed
Typed, closed, safe failure evidence for Sync Preview generate/apply. Replaces the
former free-form error strings. message and recoveryAction are pre-authored safe
copy drawn from a closed vocabulary — they NEVER contain raw exception text, Arr
response bodies, credentials, hostnames, or stack traces. Full diagnostics live only in
the sanitized server logs.
object
Closed vocabulary of Sync Preview generate/apply failure reasons. Each value is assigned by matching a thrown error’s TYPE/status (never by parsing message text), so no raw exception or secret-shaped string is ever transported:
unreachable: the Arr instance could not be reached (network/DNS/connection).timeout: the Arr instance did not respond in time.unauthorized: the Arr instance rejected the API key (HTTP 401/403).notFound: a required Arr resource was not found (HTTP 404).rejected: the Arr instance rejected the request (other HTTP 4xx).serverError: the Arr instance returned a server error (HTTP 5xx).sectionErrors: one or more sections failed to generate (top-level aggregate).executionFailed: the apply sync run did not complete successfully.stale: the preview is too old to apply safely.internalError: an unexpected error occurred (catch-all for untyped failures).
Safe, user-facing summary of the failure. Never raw exception or secret text.
Actionable next step the operator can take to recover.
Sections included in preview
Per-section preview generation status used to enforce safe apply behavior.
object
Sync section handled by preview generation
True when the section had no config to preview and was skipped.
Typed, closed, safe failure evidence for Sync Preview generate/apply. Replaces the
former free-form error strings. message and recoveryAction are pre-authored safe
copy drawn from a closed vocabulary — they NEVER contain raw exception text, Arr
response bodies, credentials, hostnames, or stack traces. Full diagnostics live only in
the sanitized server logs.
object
Closed vocabulary of Sync Preview generate/apply failure reasons. Each value is assigned by matching a thrown error’s TYPE/status (never by parsing message text), so no raw exception or secret-shaped string is ever transported:
unreachable: the Arr instance could not be reached (network/DNS/connection).timeout: the Arr instance did not respond in time.unauthorized: the Arr instance rejected the API key (HTTP 401/403).notFound: a required Arr resource was not found (HTTP 404).rejected: the Arr instance rejected the request (other HTTP 4xx).serverError: the Arr instance returned a server error (HTTP 5xx).sectionErrors: one or more sections failed to generate (top-level aggregate).executionFailed: the apply sync run did not complete successfully.stale: the preview is too old to apply safely.internalError: an unexpected error occurred (catch-all for untyped failures).
Safe, user-facing summary of the failure. Never raw exception or secret text.
Actionable next step the operator can take to recover.
object
Custom-format change set
object
Sync target entity kind (e.g., customFormat, qualityProfile)
Entity display name (namespace-stripped where applicable)
Arr entity ID when present
Field-level diff; empty for unchanged/create where no deltas are tracked
object
Dot-notated field path
Quality-profile change set
object
Sync target entity kind (e.g., customFormat, qualityProfile)
Entity display name (namespace-stripped where applicable)
Arr entity ID when present
Field-level diff; empty for unchanged/create where no deltas are tracked
object
Dot-notated field path
object
object
Sync target entity kind (e.g., customFormat, qualityProfile)
Entity display name (namespace-stripped where applicable)
Arr entity ID when present
Field-level diff; empty for unchanged/create where no deltas are tracked
object
Dot-notated field path
object
object
Sync target entity kind (e.g., customFormat, qualityProfile)
Entity display name (namespace-stripped where applicable)
Arr entity ID when present
Field-level diff; empty for unchanged/create where no deltas are tracked
object
Dot-notated field path
Quality definition change set
object
Sync target entity kind (e.g., customFormat, qualityProfile)
Entity display name (namespace-stripped where applicable)
Arr entity ID when present
Field-level diff; empty for unchanged/create where no deltas are tracked
object
Dot-notated field path
object
Sync target entity kind (e.g., customFormat, qualityProfile)
Entity display name (namespace-stripped where applicable)
Arr entity ID when present
Field-level diff; empty for unchanged/create where no deltas are tracked
object
Dot-notated field path
object
object
Sync target entity kind (e.g., customFormat, qualityProfile)
Entity display name (namespace-stripped where applicable)
Arr entity ID when present
Field-level diff; empty for unchanged/create where no deltas are tracked
object
Dot-notated field path
object
Number of create actions
Number of update actions
Number of delete actions
Number of unchanged entities
Example
{ "arrType": "radarr", "status": "generating", "failure": { "code": "unreachable" }, "sections": [ "qualityProfiles" ], "sectionOutcomes": [ { "section": "qualityProfiles", "failure": { "code": "unreachable" } } ], "qualityProfiles": { "section": "qualityProfiles", "customFormats": [ { "action": "create", "fields": [ { "type": "added" } ] } ], "qualityProfiles": [ { "action": "create", "fields": [ { "type": "added" } ] } ] }, "delayProfiles": { "section": "delayProfiles", "profile": { "action": "create", "fields": [ { "type": "added" } ] } }, "mediaManagement": { "section": "mediaManagement", "naming": { "action": "create", "fields": [ { "type": "added" } ] }, "qualityDefinitions": [ { "action": "create", "fields": [ { "type": "added" } ] } ], "mediaSettings": { "action": "create", "fields": [ { "type": "added" } ] } }, "metadataProfiles": { "section": "metadataProfiles", "profile": { "action": "create", "fields": [ { "type": "added" } ] } }}Preview not found or expired
object
Error message
Examplegenerated
{ "error": "example"}Failed to fetch preview
object
Error message
Examplegenerated
{ "error": "example"}