Skip to main content
Neon Postgres Docs

Search documentation

Type to search this documentation.

Create database

POST/projects/{project_id}/branches/{branch_id}/databasesCreate database

Creates a database in the specified branch. A branch can have multiple databases. For related information, see Manage databases.

Parameters

project_idstringpathrequired

The Neon project ID

pattern ^[a-z0-9-]{1,60}$

branch_idstringpathrequired

The branch ID

pattern ^[a-z0-9-]{1,60}$

Request body

required
application/json
objectDatabaseCreateRequest
databaseobjectrequired

Configuration for the new Postgres database.

Show child attributes
namestringrequired

Name of the database to create.

owner_namestringrequired

The name of the role that owns the database

Example request
{
  "database": {
    "name": "mydb",
    "owner_name": "casey"
  }
}

Responses

201Created a database in the specified branchapplication/json
valueDatabaseOperations
allOf · 2 options
Option 1objectDatabaseResponse
databaseobjectrequired
Show child attributes
branch_idstringrequired

The ID of the branch this database belongs to.

pattern ^[a-z0-9-]{1,60}$

created_atstring · date-timerequired

A timestamp indicating when the database was created

idinteger · int64required

The database ID

namestringrequired

The database name

owner_namestringrequired

The name of role that owns the database

updated_atstring · date-timerequired

A timestamp indicating when the database was last updated

Option 2objectOperationsResponse
operationsarray of objectrequired
Show child attributes
Show array items

An asynchronous action Neon performs on your resources (for example, starting a compute or creating a branch). Fields such as `action`, `status`, and `total_duration_ms` describe the operation and its progress.

actionstringrequired

The action performed by the operation

one of "create_compute", "create_timeline", "start_compute", "suspend_compute", "apply_config", "check_availability", "delete_timeline", "create_branch", "import_data", "tenant_ignore", "tenant_attach", "tenant_detach", "tenant_detach_safekeepers", "tenant_attach_safekeepers", "tenant_reattach", "replace_safekeeper", "disable_maintenance", "apply_storage_config", "prepare_secondary_pageserver", "switch_pageserver", "detach_parent_branch", "timeline_archive", "timeline_unarchive", "start_reserved_compute", "sync_dbs_and_roles_from_compute", "apply_schema_from_branch", "timeline_mark_invisible", "timeline_update_protected_config", "prewarm_replica", "promote_replica", "set_storage_non_dirty", "swap_binding_id", "finalize_migration", "mark_migration_prepared", "update_catalog", "epc_sync"

branch_idstring

The ID of the branch this operation ran on.

pattern ^[a-z0-9-]{1,60}$

created_atstring · date-timerequired

A timestamp indicating when the operation was created

endpoint_idstring

The ID of the compute endpoint this operation ran on.

pattern ^[a-z0-9-]{1,60}$

errorstring

Human-readable message describing why the operation failed.

failures_countinteger · int32required

The number of times the operation failed

idstring · uuidrequired

The operation ID

project_idstringrequired

The ID of the project this operation ran on.

pattern ^[a-z0-9-]{1,60}$

retry_atstring · date-time

A timestamp indicating when the operation was last retried

statusstringrequired

Lifecycle state of the operation. `scheduling`: queued, not yet started. `running`: actively executing. `finished`: completed successfully. `failed`: ended with a failure. `error`: ended with a terminal error. `cancelling`: cancellation requested but not yet complete. `cancelled`: stopped before completion. `skipped`: bypassed without executing.

one of "scheduling", "running", "finished", "failed", "error", "cancelling", "cancelled", "skipped"

total_duration_msinteger · int32required

The total duration of the operation in milliseconds

updated_atstring · date-timerequired

A timestamp indicating when the operation status was last updated

Example response
{
  "database": {
    "branch_id": "br-aged-salad-637688",
    "created_at": "2022-12-04T00:15:04Z",
    "id": 876692,
    "name": "mydb",
    "owner_name": "casey",
    "updated_at": "2022-12-04T00:15:04Z"
  },
  "operations": [
    {
      "action": "apply_config",
      "branch_id": "br-aged-salad-637688",
      "created_at": "2022-12-04T00:15:04Z",
      "endpoint_id": "ep-little-smoke-851426",
      "failures_count": 0,
      "id": "39426015-db00-40fa-85c5-1c7072df46d0",
      "project_id": "shiny-wind-028834",
      "status": "running",
      "total_duration_ms": 100,
      "updated_at": "2022-12-04T00:15:04Z"
    },
    {
      "action": "suspend_compute",
      "branch_id": "br-aged-salad-637688",
      "created_at": "2022-12-04T00:15:04Z",
      "endpoint_id": "ep-little-smoke-851426",
      "failures_count": 0,
      "id": "b7483d4e-33da-4d40-b319-ac858d4d3e69",
      "project_id": "shiny-wind-028834",
      "status": "scheduling",
      "total_duration_ms": 100,
      "updated_at": "2022-12-04T00:15:04Z"
    }
  ]
}
defaultGeneral Error. The request may or may not be safe to retry, depending on the HTTP method, response status code, and whether a response was received. - If no response is returned from the API, a network error or timeout likely occurred. - In some cases, the request may have reached the server and been successfully processed, but the response failed to reach the client. As a result, retrying non-idempotent requests can lead to unintended results. The following HTTP methods are considered non-idempotent: `POST`, `PATCH`, `DELETE`, and `PUT`. Retrying these methods is generally **not safe**. The following methods are considered idempotent: `GET`, `HEAD`, and `OPTIONS`. Retrying these methods is **safe** in the event of a network error or timeout. Any request that returns a `503 Service Unavailable` response is always safe to retry. Any request that returns a `423 Locked` response is safe to retry. `423 Locked` indicates that the resource is temporarily locked, for example, due to another operation in progress. application/json
objectGeneralError
codestringrequired

default ""

messagestringrequired

Error message

request_idstring

Unique identifier for the request, useful for debugging. You can set this value manually by including an `X-Request-ID` header in the request. If not provided, the value will be generated automatically.

Example response
{
  "code": "",
  "message": "string",
  "request_id": "string"
}
Documentation menu