# Restore database (destructive)

`POST /v1/databases/{targetDatabaseId}/restore`

⚠️ **Destructive operation** — this immediately and irreversibly overwrites all data in the target database with the contents of the specified backup. Any data written since the backup was taken will be lost. Ensure you have a recent backup of the target database before proceeding.

Replaces the data in an existing database from a backup. Connections and credentials are preserved — only the data layer is replaced.

## [Authorization](#authorization)

AuthorizationBearer \<token>

OAuth2 authentication

In: `header`

Scope: `workspace:admin, offline_access`

## [Path Parameters](#path-parameters)

targetDatabaseId\*string

Match`^(db_)?([cC][^\s-]{8,}|[a-z0-9]+)$`

## [Request Body](#request-body)

`application/json`

TypeScript Definitions

Use the request body type in TypeScript.

## [Response Body](#response-body)

### `application/json`

### `application/json`

### `application/json`

### `application/json`

### `application/json`

::::tabs
:::tab{title="cURL"}
```
curl -X POST "https://example.com/v1/databases/string/restore" \
  -H "Content-Type: application/json" \
  -d '{
    "source": {
      "type": "backup",
      "databaseId": "string",
      "backupId": "string"
    }
  }'
```
:::

:::tab{title="JavaScript"}
```
{
  "data": {
    "id": "string",
    "type": "database",
    "url": "http://example.com",
    "name": "string",
    "status": "failure",
    "createdAt": "2019-08-24T14:15:22Z",
    "isDefault": true,
    "defaultConnectionId": "string",
    "connections": [
      {
        "id": "string",
        "type": "connection",
        "url": "http://example.com",
        "name": "string",
        "createdAt": "2019-08-24T14:15:22Z",
        "kind": "postgres",
        "endpoints": {
          "direct": {
            "host": "string",
            "port": 0
          },
          "pooled": {
            "host": "string",
            "port": 0
          },
          "accelerate": {
            "host": "string",
            "port": 0
          }
        },
        "directConnection": {
          "host": "string",
          "pass": "string",
          "user": "string"
        },
        "database": {
          "id": "string",
          "url": "http://example.com",
          "name": "string"
        }
      }
    ],
    "project": {
      "id": "string",
      "url": "http://example.com",
      "name": "string"
    },
    "region": {
      "id": "string",
      "name": "string"
    },
    "source": {
      "type": "backup",
      "databaseId": "string",
      "backupId": "string"
    },
    "branchId": "string",
    "logicalId": "string"
  }
}
```
:::

:::tab{title="Go"}
:::

:::tab{title="Python"}
:::

:::tab{title="Java"}
:::

:::tab{title="C#"}
:::

:::tab{title="Rust"}
:::
::::

## Related pages

- [Authentication & Tools](./authentication-tools-index.md)
- [Build](./build-index.md)
- [Changelog](../changelog.md)
- [Concepts](./concepts-index.md)
- [Console commands](./console-commands-index.md)
- [Contract Authoring](./contract-authoring-index.md)
- [Core Concepts](./core-concepts-index.md)
- [Data Modeling](./data-modeling-index.md)
- [Database](./database-index.md)
- [DB commands](./db-commands-index.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.
