Method: projects.instances.databases.create

Creates a new Spanner database and starts to prepare it for serving. The returned long-running operation will have a name of the format <database_name>/operations/<operationId> and can be used to track preparation of the database. The metadata field type is CreateDatabaseMetadata. The response field type is Database, if successful.

HTTP request


The URL uses gRPC Transcoding syntax.

Path parameters



Required. The name of the instance that will serve the new database. 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
  "createStatement": string,
  "extraStatements": [
  "encryptionConfig": {
    object (EncryptionConfig)
  "databaseDialect": enum (DatabaseDialect),
  "protoDescriptors": string


Required. A CREATE DATABASE statement, which specifies the ID of the new database. The database ID must conform to the regular expression [a-z][a-z0-9_\-]*[a-z0-9] and be between 2 and 30 characters in length. If the database ID is a reserved word or if it contains a hyphen, the database ID must be enclosed in backticks (`).



Optional. A list of DDL statements to run inside the newly created database. Statements can create tables, indexes, etc. These statements execute atomically with the creation of the database: if there is an error in any statement, the database is not created.


object (EncryptionConfig)

Optional. The encryption configuration for the database. If this field is not specified, Cloud Spanner will encrypt/decrypt all data at rest using Google default encryption.


enum (DatabaseDialect)

Optional. The dialect of the Cloud Spanner Database.


string (bytes format)

Optional. Proto descriptors used by CREATE/ALTER PROTO BUNDLE statements in 'extraStatements'. Contains a protobuf-serialized google.protobuf.FileDescriptorSet descriptor set. To generate it, install and run protoc with --include_imports and --descriptor_set_out. For example, to generate for moon/shot/app.proto, run

$protoc  --proto_path=/app_path --proto_path=/lib_path \
         --include_imports \ \

For more details, see protobuffer self description.

A base64-encoded string.

Response body

If successful, the response body contains a newly created instance of Operation.

Authorization scopes

Requires one of the following OAuth scopes:


For more information, see the Authentication Overview.