Method: projects.instances.databases.restore

Create a new database by restoring from a completed backup. The new database must be in the same project and in an instance with the same instance configuration as the instance containing the backup. The returned database long-running operation has a name of the format projects/<project>/instances/<instance>/databases/<database>/operations/<operationId>, and can be used to track the progress of the operation, and to cancel it. The metadata field type is RestoreDatabaseMetadata. The response type is Database, if successful. Cancelling the returned operation will stop the restore and delete the database. There can be only one database being restored into an instance at a time. Once the restore operation completes, a new restore operation can be initiated, without waiting for the optimize operation associated with the first restore to complete.

HTTP request


The URL uses gRPC Transcoding syntax.

Path parameters



Required. The name of the instance in which to create the restored database. This instance must be in the same project and have the same instance configuration as the instance containing the source backup. Values are of the form projects/<project>/instances/<instance>.

Authorization requires the following IAM permission on the specified resource parent:

  • spanner.databases.create

Request body

The request body contains data with the following structure:

JSON representation
  "databaseId": string,
  "encryptionConfig": {
    object (RestoreDatabaseEncryptionConfig)
  "backup": string


Required. The id of the database to create and restore to. This database must not already exist. The databaseId appended to parent forms the full database name of the form projects/<project>/instances/<instance>/databases/<databaseId>.


object (RestoreDatabaseEncryptionConfig)

Optional. An encryption configuration describing the encryption type and key resources in Cloud KMS used to encrypt/decrypt the database to restore to. If this field is not specified, the restored database will use the same encryption configuration as the backup by default, namely encryptionType = USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION.



Name of the backup from which to restore. Values are of the form projects/<project>/instances/<instance>/backups/<backup>.

Authorization requires the following IAM permission on the specified resource backup:

  • spanner.backups.restoreDatabase

Response body

If successful, the response body contains an instance of Operation.

Authorization Scopes

Requires one of the following OAuth scopes:


For more information, see the Authentication Overview.


Encryption configuration for the restored database.

JSON representation
  "encryptionType": enum (EncryptionType),
  "kmsKeyName": string

enum (EncryptionType)

Required. The encryption type of the restored database.



Optional. The Cloud KMS key that will be used to encrypt/decrypt the restored database. This field should be set only when encryptionType is CUSTOMER_MANAGED_ENCRYPTION. Values are of the form projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kmsKeyName>.


Encryption types for the database to be restored.

USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION This is the default option when encryptionConfig is not specified.
GOOGLE_DEFAULT_ENCRYPTION Use Google default encryption.
CUSTOMER_MANAGED_ENCRYPTION Use customer managed encryption. If specified, kmsKeyName must must contain a valid Cloud KMS key.