curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"operations": [
{
"counts": {
"deleted": 3,
"reinserted": 1,
"reverted": 12
},
"entity_name": "Invoice",
"operation_id": "68a1c2f0e4f5a6b7c8d9e1a2",
"pre_restore_checkpoint_id": "68a1c30ae4f5a6b7c8d9e1b3",
"status": "succeeded"
}
],
"restore_to": "2026-06-04T14:07:02.115000Z",
"undo_checkpoint_id": "68a1c30ae4f5a6b7c8d9e1b3"
}Get data restore status
Returns where each entity in a restore has got to.
Poll it after Restore data to checkpoint until every entry in operations is succeeded or failed. Each entity finishes on its own, so one can fail while the rest succeed. A restore that stops making progress is marked failed rather than left running.
An ID the app has no restore for returns an empty operations list rather than an error. Base44 keeps a restore’s status for 30 days.
curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/entities/versions/restores/batch/{batch_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"operations": [
{
"counts": {
"deleted": 3,
"reinserted": 1,
"reverted": 12
},
"entity_name": "Invoice",
"operation_id": "68a1c2f0e4f5a6b7c8d9e1a2",
"pre_restore_checkpoint_id": "68a1c30ae4f5a6b7c8d9e1b3",
"status": "succeeded"
}
],
"restore_to": "2026-06-04T14:07:02.115000Z",
"undo_checkpoint_id": "68a1c30ae4f5a6b7c8d9e1b3"
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Response
The restore's progress.
Where each entity in a restore has got to.
One entry per entity in the restore, oldest first. Empty when the app has no restore with this ID.
Show child attributes
Show child attributes
[
{
"counts": {
"deleted": 3,
"reinserted": 1,
"reverted": 12
},
"entity_name": "Invoice",
"operation_id": "68a1c2f0e4f5a6b7c8d9e1a2",
"pre_restore_checkpoint_id": "68a1c30ae4f5a6b7c8d9e1b3",
"status": "succeeded"
}
]
The moment the entities are restored to, as a UTC timestamp in ISO 8601 format with a Z suffix, or null when operations is empty.
"2026-06-04T14:07:02.115000Z"
ID of the checkpoint that undoes the whole restore, or null until Base44 has saved the first backup. Restore the same entities from it to put them all back the way they were before.
"68a1c30ae4f5a6b7c8d9e1b3"
Was this page helpful?