Skip to content

Restore a D1 database with Time Travel

POST
/api/v1/storage/d1/{database}/restore
curl --request POST \
--url https://digize.com/api/v1/storage/d1/example/restore \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: 5f1c2a8e-3b7d-4c55-9a0e-1f2d3c4b5a69' \
--header 'x-api-key: <x-api-key>' \
--data '{ "at": "2026-04-15T12:00:00Z", "bookmark": "example" }'

Puts a D1 database back to how it was at a moment in the last 30 days, or to a Time Travel bookmark. The point just before is kept, so it can be undone.

Needs the sites:write permission. It can’t be undone.

database
required
string
>= 1 characters <= 100 characters
Idempotency-Key
string
>= 1 characters <= 255 characters

Makes the request safe to send again: for 24 hours the same key and request answer the first response without repeating the change.

Example

5f1c2a8e-3b7d-4c55-9a0e-1f2d3c4b5a69
Media typeapplication/json
object
at
string format: date-time
bookmark
string
<= 200 characters

Example generated

{
"at": "2026-04-15T12:00:00Z",
"bookmark": "example"
}

Done

Media typeapplication/json
object
id
required
string
name
required
string
cloudflareName
required
string
createdAt
required
string format: date-time
location
required
string
sizeBytes
required
number
tables
required
number
rowsRead
required
number
rowsWritten
required
number
readReplication
required
boolean
boundTo
required
Array<object>
object
worker
required
string
variable
required
string | null
live
required
boolean
tableList
required
Array<object>
object
name
required
string
rows
required
number
columns
required
Array<object>
object
name
required
string
type
required
string
primaryKey
boolean
notNull
boolean
sample
required
Array<Array<string | number | null>>
days
required
Array<object>
object
date
required
string format: date-time
rowsRead
required
number
rowsWritten
required
number
p50
required
number
p90
required
number
restorePoints
required
Array<object>
object
id
required
string
bookmark
required
string | null
at
required
string format: date-time
label
required
string

Example generated

{
"id": "example",
"name": "example",
"cloudflareName": "example",
"createdAt": "2026-04-15T12:00:00Z",
"location": "example",
"sizeBytes": 1,
"tables": 1,
"rowsRead": 1,
"rowsWritten": 1,
"readReplication": true,
"boundTo": [
{
"worker": "example",
"variable": "example"
}
],
"live": true,
"tableList": [
{
"name": "example",
"rows": 1,
"columns": [
{
"name": "example",
"type": "example",
"primaryKey": true,
"notNull": true
}
],
"sample": [
[
"example"
]
]
}
],
"days": [
{
"date": "2026-04-15T12:00:00Z",
"rowsRead": 1,
"rowsWritten": 1,
"p50": 1,
"p90": 1
}
],
"restorePoints": [
{
"id": "example",
"bookmark": "example",
"at": "2026-04-15T12:00:00Z",
"label": "example"
}
]
}

What was sent isn’t valid (invalid).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

No key, or one that’s unknown, off or expired.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

The key doesn’t have the permission this needs.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

Nothing has that id (not_found).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

A request with the same Idempotency-Key is still running (conflict).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

The Idempotency-Key was used with a different request.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

Over the rate limit; see retry-after.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}