---
title: "GET /encryption/recovery"
method: GET
path: "/encryption/recovery"
tags: ["encryption"]
---

# GET /encryption/recovery

`GET /encryption/recovery`

## Request

- The document declares no server URL.
- Auth: one of:
  - API key in query parameter `auth`
  - API key in header `Authorization`

## Response `200`

Profile recovery status

- ProfileRecoveryEnvelope: Canonical success envelope: `{ "data": T, "ts": <unix millis i64> }`. `ts` is `chrono::Utc::now().timestamp_millis()`, set in the webserver handler via [`ApiEnvelope::now`] (the contract carries only the type + the clock helper, not a hard dependency on when the handler reads the clock). `rename_all = "camelCase"` is a no-op for the single-word fields here but is declared for forward-compat. IMPORTANT (utoipa v4): every concrete `ApiEnvelope<X>` that needs a named OpenAPI component is declared in the `#[aliases(...)]` block below. Add a new alias line whenever a new payload type needs enveloping. NEVER register the bare `ApiEnvelope` in `components(schemas(...))` — utoipa errors on a bare generic, and an un-aliased generic inlines an anonymous schema.
  - `data` ProfileRecoveryResponse, required
    - `admission` AdmissionRecoveryDto
      - `action` 'restore_credential' | 'choose_backup' | 'rebuild_derived_state' | 'export_diagnostics', required
      - `category` 'credential_missing' | 'authentication_mismatch' | 'current_metadata_invalid' | 'legacy_fallback_invalid' | 'legacy_migration_failed' | 'record_relation_incomplete' | 'derived_summary_invalid' | 'generation_mismatch' | 'other_storage_error', required
      - `stage` 'credential' | 'repository_metadata' | 'legacy_repository' | 'repository_record' | 'recovery_summary' | 'storage', required
    - `backgroundReady` boolean, required
    - `canSubmitPassphrase` boolean, required
    - `cleanupPending` boolean, required
    - `losses` ProfileRecoveryLossDto[], required
    - `restartRequired` boolean, required
    - `state` 'not_required' | 'awaiting_passphrase' | 'recovering' | 'recovered' | 'partially_recoverable' | 'failed' | 'admission_recovery_required', required
  - `ts` integer, required: Server time when the response was built (unix epoch milliseconds).

## Changes

- **2026-09-27** `a021985acd26`: 1 warning, 1 info
  - added the new `admission_recovery_required` enum value to the `data/state` response property for the response status `200`
  - added the optional property `data/admission` to the response with the `200` status
- **2026-09-20** `8718a7952aa2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/uniclipboard/apis/uniclipboard-daemon-api/changes/encryption/recovery/get.md)

---

[API](https://skmtc.dev/uniclipboard/apis/uniclipboard-daemon-api.md) - [All operations](https://skmtc.dev/uniclipboard/apis/uniclipboard-daemon-api/llms.txt) - [OpenAPI document](https://skmtc.dev/uniclipboard/apis/uniclipboard-daemon-api/revisions/48a01cf04e4c?raw)
