---
title: "POST /clipboard/restore/{entry_id}"
method: POST
path: "/clipboard/restore/{entry_id}"
tags: ["clipboard"]
---

# POST /clipboard/restore/{entry_id}

`POST /clipboard/restore/{entry_id}`

Re-apply a stored clipboard entry to the local system clipboard. Wrapped in
the canonical `{ data, ts }` envelope (ADR-008 §0.1/§0.2); errors use the
canonical `ApiErrorResponse`. The `payload_unavailable` (410) error carries
`{ entry_id, rep_id, state }` in `details` (§0.3); the `code`/`message`
strings are LOAD-BEARING and preserved.

## Path parameters

- `entry_id` string, required

## Query parameters

- `plain` boolean, nullable
- `file_paths` boolean, nullable

## Response `200`

Entry restored to the system clipboard

- RestoreEntryEnvelope — 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` RestoreEntryResponse, required — Response body for `POST /clipboard/restore/:entry_id`. Wrapped in `ApiEnvelope` per §0.1. The success body was previously the ad-hoc `{ "success": true }` shape; consumers ignore it today.
    - `success` boolean, required
  - `ts` integer, required — Server time when the response was built (unix epoch milliseconds).

## Other responses

- `400` — Requested transform not applicable to this entry (e.g. file-path restore with no file paths)
- `404` — Entry not found
- `410` — Entry payload is no longer available (orphaned/lost)
- `500` — Internal server error

---

[API](https://skmtc.net/uniclipboard/apis/uniclipboard-daemon-api.md) · [All operations](https://skmtc.net/uniclipboard/apis/uniclipboard-daemon-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/uniclipboard/uniclipboard-daemon-api/versions/c1c97b0df585/schema)
