Last Updated: 3/9/2026
API Backups
Returns list with all available backup files.
Only superusers can perform this action.
import from 'pocketbase'; const = new PocketBase('http://127.0.0.1:8090');... await. collection("_superusers"). authWithPassword('test@example.com', '1234567890'); const = await.. getFullList();
import'package:pocketbase/pocketbase.dart''package:pocketbase/pocketbase.dart'; final = PocketBase('http://127.0.0.1:8090''http://127.0.0.1:8090');... await. collection("_superusers" "_superusers"). authWithPassword('test@example.com''test@example.com', '1234567890' '1234567890'); final = await.. getFullList();
API details
GET
/api/backups
Query parameters
| Param | Type | Description |
|---|---|---|
| fields | String | Comma separated string of the fields to return in the JSON response (by default returns all fields). Ex.: ? =*,.. * targets all keys from the specific depth level. In addition, the following field modifiers are also supported: * :excerpt(maxLength, withEllipsis?) Returns a short plain text version of the field string value. Ex.: ?fields=*,description:excerpt(200,true) |
Responses
[{"key":"pb_backup_20230519162514.zip", "modified":"2023-05-19 16:25:57.542Z", "size": 251316185},{"key":"pb_backup_20230518162514.zip", "modified":"2023-05-18 16:25:57.542Z", "size": 251314010}]
{"status": 400, "message":"Failed to load backups filesystem.", "data":{}}
{"status": 401, "message":"The request requires valid record authorization token.", "data":{}}
{"status": 403, "message":"Only superusers can perform this action.", "data":{}}
Creates a new app data backup.
This action will return an error if there is another backup/restore operation already in progress.
Only superusers can perform this action.
import from 'pocketbase'; const = new PocketBase('http://127.0.0.1:8090');... await. collection("_superusers"). authWithPassword('test@example.com', '1234567890'); await.. create('new_backup.zip');
import'package:pocketbase/pocketbase.dart''package:pocketbase/pocketbase.dart'; final = PocketBase('http://127.0.0.1:8090''http://127.0.0.1:8090');... await. collection("_superusers" "_superusers"). authWithPassword('test@example.com''test@example.com', '1234567890' '1234567890'); await.. create('new_backup.zip''new_backup.zip');
API details
POST
/api/backups
Requires Authorization:TOKEN
Body Parameters
| Param | Type | Description |
|---|---|---|
| Optional name | String | The base name of the backup file to create. Must be in the format [a-z0-9_-].zip If not set, it will be auto generated. |
Body parameters could be sent as JSON or multipart/form-data.
Responses
null
{"status": 400, "message":"Try again later - another backup/restore process has already been started.", "data":{}}
{"status": 401, "message":"The request requires valid record authorization token.", "data":{}}
{"status": 403, "message":"The authorized record is not allowed to perform this action.", "data":{}}
Uploads an existing backup zip file.
Only superusers can perform this action.
import from 'pocketbase'; const = new PocketBase('http://127.0.0.1:8090');... await. collection("_superusers"). authWithPassword('test@example.com', '1234567890'); await.. upload({file: new Blob([...])});
import'package:pocketbase/pocketbase.dart''package:pocketbase/pocketbase.dart'; final = PocketBase('http://127.0.0.1:8090''http://127.0.0.1:8090');... await. collection("_superusers" "_superusers"). authWithPassword('test@example.com''test@example.com', '1234567890' '1234567890'); await.. upload(http.MultipartFilehttp... fromBytes('file' 'file',...));
API details
POST
/api/backups/upload
Requires Authorization:TOKEN
Body Parameters
| Param | Type | Description |
|---|---|---|
| Required file | File | The zip archive to upload. |
Uploading files is supported only via multipart/form-data.
Responses
null
{"status": 400, "message":"Something went wrong while processing your request.", "data":{"file":{"code": "validation_invalid_mime_type", "message":"\"test_backup.txt\" mime type must be one of: application/zip."}}}}
{"status": 401, "message":"The request requires valid record authorization token.", "data":{}}
{"status": 403, "message":"The authorized record is not allowed to perform this action.", "data":{}}
Deletes a single backup by its name.
This action will return an error if the backup to delete is still being generated or part of a restore operation.
Only superusers can perform this action.
import from 'pocketbase'; const = new PocketBase('http://127.0.0.1:8090');... await. collection("_superusers"). authWithPassword('test@example.com', '1234567890'); await.. delete('pb_data_backup.zip');
import'package:pocketbase/pocketbase.dart''package:pocketbase/pocketbase.dart'; final = PocketBase('http://127.0.0.1:8090''http://127.0.0.1:8090');... await. collection("_superusers" "_superusers"). authWithPassword('test@example.com''test@example.com', '1234567890' '1234567890'); await.. delete('pb_data_backup.zip''pb_data_backup.zip');
API details
DELETE
/api/backups/key
Requires Authorization:TOKEN
Path parameters
| Param | Type | Description |
|---|---|---|
| key | String | The key of the backup file to delete. |
Responses
null
{"status": 400, "message":"Try again later - another backup/restore process has already been started.", "data":{}}
{"status": 401, "message":"The request requires valid record authorization token.", "data":{}}
{"status": 403, "message":"The authorized record is not allowed to perform this action.", "data":{}}
Restore a single backup by its name and restarts the current running PocketBase process.
This action will return an error if there is another backup/restore operation already in progress.
Only superusers can perform this action.
import from 'pocketbase'; const = new PocketBase('http://127.0.0.1:8090');... await. collection("_superusers"). authWithPassword('test@example.com', '1234567890'); await.. restore('pb_data_backup.zip');
import'package:pocketbase/pocketbase.dart''package:pocketbase/pocketbase.dart'; final = PocketBase('http://127.0.0.1:8090''http://127.0.0.1:8090');... await. collection("_superusers" "_superusers"). authWithPassword('test@example.com''test@example.com', '1234567890' '1234567890'); await.. restore('pb_data_backup.zip''pb_data_backup.zip');
API details
POST
/api/backups/key/restore
Requires Authorization:TOKEN
Path parameters
| Param | Type | Description |
|---|---|---|
| key | String | The key of the backup file to restore. |
Responses
null
{"status": 400, "message":"Try again later - another backup/restore process has already been started.", "data":{}}
{"status": 401, "message":"The request requires valid record authorization token.", "data":{}}
{"status": 403, "message":"The authorized record is not allowed to perform this action.", "data":{}}
Downloads a single backup file.
Only superusers can perform this action.
import from 'pocketbase'; const = new PocketBase('http://127.0.0.1:8090');... await. collection("_superusers"). authWithPassword('test@example.com', '1234567890'); const = await.. getToken(); const =.. getDownloadUrl(,'pb_data_backup.zip');
import'package:pocketbase/pocketbase.dart''package:pocketbase/pocketbase.dart'; final = PocketBase('http://127.0.0.1:8090''http://127.0.0.1:8090');... await. collection("_superusers" "_superusers"). authWithPassword('test@example.com''test@example.com', '1234567890' '1234567890'); final = await.. getToken(); final =.. getDownloadUrl(,'pb_data_backup.zip''pb_data_backup.zip');
API details
GET
/api/backups/key
Path parameters
| Param | Type | Description |
|---|---|---|
| key | String | The key of the backup file to download. |
Query parameters
| Param | Type | Description |
|---|---|---|
| token | String | Superuser file token for granting access to the backup file. |
Responses
{"status": 400, "message":"Filesystem initialization failure.", "data":{}}
{"status": 404, "message":"The requested resource wasn't found.", "data":{}}