# Restore snapshot

`POST /projects/{project_id}/snapshots/{snapshot_id}/restorebeta`

Restores the specified snapshot to a new branch, and optionally finalizes the restore operation to replace the original branch.

[Markdown for AI context](/guides/apis-sdks-reference-api-snapshots-restore-snapshot)

```bash title="REST API - curl"
curl "https://console.neon.tech/api/v2/projects/$PROJECT_ID/snapshots/$SNAPSHOT_ID/restore" \
  -X POST \
  -H "Authorization: Bearer $NEON_API_KEY"
```

Every field below is optional. An empty body works too.

Also available in

::::tabs
:::tab{title="CLI"}
```bash
neon snapshots restore <snapshot_id>
```
:::

:::tab{title="SDK"}
:::

:::tab{title="Console"}
Console path: Projects → Backup & restore
:::
::::

## Parameters

Project ID

`project_id`

string

The Neon project ID

Snapshot ID

`snapshot_id`

string

The snapshot ID

Name

`name`

string

Deprecated. Use the `name` field in the request body instead. Removal scheduled for November 29, 2025. A name for the newly restored branch. If omitted, a default name will be generated.

## Request body

No field is required. Send an empty body to use sensible defaults.

Name

`name`

string

A name for the newly restored branch. If not provided, the server generates a unique name for the branch automatically.

Target branch ID

`target_branch_id`

string

ID of the branch to restore the snapshot into. Defaults to the snapshot's source branch (`snapshot.source_branch_id`); fails if that cannot be determined.

Finalize restore

`finalize_restore`

booleandefault: false

Set to `true` to finalize the restore operation immediately. This will complete the restore and move any associated computes to the new branch, similar to the `finalizeRestoreBranch` operation. Defaults to `false` to allow previewing the restored snapshot data first.

## Response

200

Branch restored from snapshot and its operations.

::::tabs
:::tab{title="schema"}
Depth
:::

:::tab{title="example"}
:::
::::

## Errors

default

General error

This endpoint can return the standard Neon API error response.

Response fields

- `message` Required. Human-readable error message.
- `code` Required. Machine-readable error code.
- `request_id` Optional. Request identifier for debugging. You can provide one with the `X-Request-ID` header.

Retry guidance

If no response is returned, the request may still have reached the server. This is why retry safety depends on the method and status code.

Idempotent methods (`GET`, `HEAD`, `OPTIONS`) are generally safe to retry after a network error or timeout. Non-idempotent methods (`POST`, `PATCH`, `DELETE`, `PUT`) can change state, so avoid automatic retries unless your workflow can tolerate duplicate effects.

Responses with `423 Locked` or `503 Service Unavailable` are safe to retry. `423 Locked` means the resource is temporarily locked, usually because another operation is in progress.

## Related pages

- [Create snapshot](./apis-sdks-reference-api-snapshots-create-snapshot.md)
- [Delete snapshot](./apis-sdks-reference-api-snapshots-delete-snapshot.md)
- [List project snapshots](./apis-sdks-reference-api-snapshots-list-snapshots.md)
- [Retrieve backup schedule](./apis-sdks-reference-api-snapshots-get-snapshot-schedule.md)
- [Update backup schedule](./apis-sdks-reference-api-snapshots-set-snapshot-schedule.md)
- [Update snapshot](./apis-sdks-reference-api-snapshots-update-snapshot.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
