Backups
Backups live on the server that holds the site. Offsite copies are made by that same server.
Reading needs Read only and changes need Manage, unless an endpoint says otherwise. How to read this page.
GET /api/backups
Section titled “GET /api/backups”Every backup on every server, newest first - deleted sites’ and the panel’s own included.
- Level: Read only
- Input:
?siteSlug=&deleted=true|false&type=&serverId=&limit=&offset= - Returns:
{items: Backup[] (+ siteTitle, siteDeleted), total, deletedSites}
GET /api/sites/:slug/backups
Section titled “GET /api/sites/:slug/backups”Backups of one site, each with its offsite copies.
- Level: Read only
- Returns:
{items: Backup[]}
POST /api/sites/:slug/backups
Section titled “POST /api/sites/:slug/backups”Back this site up now.
- Level: Manage
- Notes: Job
- Input:
{note?}
POST /api/backups/:id/restore
Section titled “POST /api/backups/:id/restore”Restore a backup over the live site.
- Level: Manage
- Notes: Job · Destructive
- Input:
{skipPreRestoreBackup?: false}
GET /api/backups/:id/download
Section titled “GET /api/backups/:id/download”Download the archive.
Binary stream - fetch it with curl rather than the console.
- Level: Manage. Holds the site’s database and wp-config.php; a panel snapshot needs Full
- Notes: Not over MCP
- Returns:
tar stream
POST /api/backups/:id/offsite
Section titled “POST /api/backups/:id/offsite”Copy this backup offsite now, or retry a copy that gave up.
- Level: Manage
- Notes: Job
- Input:
{destinationId?}
POST /api/backups/:id/fetch
Section titled “POST /api/backups/:id/fetch”Pull an offsite copy back onto the site’s current server.
- Level: Manage
- Notes: Job
- Input:
{destinationId}
DELETE /api/backups/:id
Section titled “DELETE /api/backups/:id”Delete a backup and, unless told otherwise, its offsite copies.
- Level: Full. A backup is the safety net, so removing one is Full
- Notes: Destructive
- Input:
?keepOffsite=true|false (default false)
GET /api/backups/ids
Section titled “GET /api/backups/ids”The ids of every backup some filters match that a bulk delete could take, across all pages.
- Level: Read only
- Input:
?siteSlug=&deleted=true|false&type=&serverId= (as GET /api/backups) - Returns:
{items: [{id, siteSlug, siteDeleted, status, remoteCopies}], total} - newest first, at most 5000
POST /api/backups/bulk-delete
Section titled “POST /api/backups/bulk-delete”Delete several backups and their offsite copies, named by id.
- Level: Full. A backup is the safety net, so removing one is Full
- Notes: Job · Destructive
- Input:
{ids: [id, ...]} (at most 5000; GET /api/backups/ids turns filters into ids) - Returns:
{job, count}
GET /api/backups/overview
Section titled “GET /api/backups/overview”Offsite health: destinations, last success, 24h counters, failures.
- Level: Read only