Drift detection summary
const url = 'https://example.com/api/v1/drift/summary';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/drift/summaryReturns the latest drift status for every enabled, sync-capable Arr instance, plus
aggregate totals and the drift check settings. Instances that have never been checked
are synthesized as never-checked. Degraded per-instance statuses (unreachable,
unauthorized, error) are carried in the 200 body — this endpoint returns 500 only on an
internal error.
Responses
Section titled “Responses”Drift summary
object
object
object
Drift status as surfaced in the summary. Extends DriftStatus with the synthesized
never-checked value for enabled instances that have no stored row yet.
object
Managed entities whose fields diverged on the Arr (alerting).
Managed entities absent on the Arr (alerting).
Live Arr entities not owned by Praxrr and not in the resolved desired set (non-alerting).
Ledger-owned entities pending reviewed removal (non-alerting).
Example
{ "instances": [ { "arrType": "radarr", "status": "in-sync", "reason": "unreachable" } ]}Failed to build drift summary
object
Error message
Stable machine-readable code present on 5xx responses; error is a fixed user-safe message, raw detail is logged server-side only
Example
{ "code": "cleanup_failed"}