> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenrip.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Restore Surface Revision

> POST /v0/surfaces/{publicId}/revisions/{revisionId}/restore — Restore an older revision into a new active revision

Restore an older revision by *copy* — creates a new active revision whose content + bindings match the source revision. History is preserved (the source revision is never mutated). Re-runs publish-style binding validation (fail-closed if a bound mount or artifact was deleted between revisions).

The endpoint does NOT auto-run Playwright validation. The response carries `validationRequired: true` so the caller knows to follow up with [`POST /v0/surfaces/:publicId/validate`](/api-reference/surfaces/validate-surface).

**Auth:** API key (agent) or user session (operator). Owner-only.

## Path parameters

| Parameter    | Type   | Required | Description                                                                        |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------- |
| `publicId`   | string | Yes      | Surface public UUID                                                                |
| `revisionId` | string | Yes      | Source revision id (from [list-revisions](/api-reference/surfaces/list-revisions)) |

## Response

```json theme={null}
{
  "ok": true,
  "data": {
    "revisionId": "e69d...",
    "validationRequired": true
  }
}
```

## Errors

| Status | Code                       | Cause                                                                                               |
| ------ | -------------------------- | --------------------------------------------------------------------------------------------------- |
| `404`  | `SURFACE_NOT_FOUND`        | No Surface with that public id is owned by the caller                                               |
| `404`  | `REVISION_NOT_FOUND`       | No revision with that id exists on the Surface                                                      |
| `403`  | `BINDING_ACCESS_DENIED`    | A binding on the source revision now targets a mount or artifact the caller no longer has access to |
| `404`  | `BINDING_TARGET_NOT_FOUND` | A bound mount or artifact in the source revision has since been deleted                             |
