Skip to Content
APIApi Backups

Last Updated: 3/9/2026


PocketBase v0.36.6

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

ParamTypeDescription
fieldsStringComma 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

ParamTypeDescription
Optional nameStringThe 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

ParamTypeDescription
Required fileFileThe 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

ParamTypeDescription
keyStringThe 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

ParamTypeDescription
keyStringThe 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

ParamTypeDescription
keyStringThe key of the backup file to download.

Query parameters

ParamTypeDescription
tokenStringSuperuser 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":{}}


Prev: API Crons Next: API Health