Database Backups

Restore a database

Changed on

Replaces the database's data, either with a named backup or with its state at a point in time. This is destructive: everything written after that point is discarded.

Asynchronous: the response is 202 with the restore pending and the database restoring. The database does not accept connections until the restore reports completed; its connection string is unchanged throughout, so nothing holding it needs updating.

Restores are in place. There is no way to restore into a second database, and a database's branches are never restored — they keep serving their own data, but resetting a branch from its parent is refused by the storage provider for up to 24 hours afterwards.

post/projects/{id}/databases/{databaseName}/restores

Request

  • Base URL: https://api.volcano.dev
  • URL: https://api.volcano.dev/projects/{id}/databases/{databaseName}/restores
  • Auth: one of:
    • HTTP bearer
    • HTTP bearer

Path parameters

idstring uuid required

Project ID

databaseNamestring required

Database name (unique within project, lowercase letters, numbers, and underscores only)

Request body

backup_namestring

A backup of this database to restore, exactly as returned by the list endpoint.

Deliberately looser than the names you can create, like the backup path parameter: a backup made by a schedule is named for you, so restoring one accepts any name a backup can have.

restore_tostring date-time

A point in time to restore to, which must fall inside the restore_window reported when listing backups.

Example request

{
  "backup_name": "before_migration",
  "restore_to": "2026-01-15T09:30:00Z"
}

Response

Restore accepted and in progress

idstring uuid required
database_idstring uuid required
project_idstring uuid required
kind'snapshot' | 'point_in_time' required

Whether the restore targets a named backup or an arbitrary point in time. Both replace the database's data in place.

status'pending' | 'running' | 'completed' | 'failed' | 'exhausted' required

Restore status. pending and running both mean the restore is still in flight and the database is not connectable; an attempt that fails with tries left goes back to pending. failed and exhausted both mean Volcano gave up: the database is left failed if its data may already have been replaced, and active if the restore never started — a backup that no longer exists at the provider ends the restore without touching the database. A restore cannot be cancelled once it starts.

backup_namestring

The backup restored, kept even if that backup is later deleted. Absent for a point-in-time restore.

restore_tostring date-time

The point in time restored to. Absent for a backup restore.

errorstring

Why the most recent attempt failed, when one has.

completed_atstring date-time
created_atstring date-time required
updated_atstring date-time required

Changes

    • ○

      the endpoint scheme security ProjectAccessToken was added to the API

    • ▲

      added the new path request parameter databaseName

    • ▲

      added the new path request parameter id

    • ▲

      the request's body type changed from no type to object

    • ▲

      the response's body type changed from no type to object for status

    • ▲

      the response's body type changed from no type to object for status

    • ▲

      the response's body type changed from no type to object for status

    • ▲

      the response's body type changed from no type to object for status

    • ▲

      the response's body type changed from no type to object for status

    • ▲

      the response's body type changed from no type to object for status

    • ○

      added the new optional request property

    • ○

      added the new optional request property

    • ○

      added the optional property to the response with the status

    • ○

      added the optional property to the response with the status

    • ○

      added the optional property to the response with the status

    • ○

      added the optional property to the response with the status

    • ○

      added the optional property to the response with the status

    • ○

      added the optional property to the response with the status

    • ○

      added the optional property to the response with the status

    • ○

      added the optional property to the response with the status

    • ○

      added the optional property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status

    • ○

      added the required property to the response with the status