Modulify

List site backups

list_backups

Lists the snapshots taken of a site, newest first, with the name, who took it, when, its size and how many pages and components it holds.

POST /v1/list_backupsScopesites:readRead only

Backups typed manual were taken deliberately. Backups typed automatic were taken by the platform, either as the scheduled snapshot or as the safety copy made right before a restore, which is the one named Pre-restore Backup. These snapshots hold a site's pages and components, not its source files, whose history list_code_backups lists.

It returns 8 per page, so pass offset to page further back, and the response carries the total count. Use a row's _id as the backupId for restore_backup and delete_backup. Each row also carries a BackupId, which names the stored file rather than the backup row. Either one is accepted, and the tool tells the client to prefer the _id.

Request

Call it with a POST to https://api.modulify.ai/v1/list_backups, sending the inputs below as a JSON object. The token needs the sites:read scope.

It only reads and changes nothing, so retrying it is safe.

curl -X POST https://api.modulify.ai/v1/list_backups \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"projectId":"PROJECT_ID","workspaceId":"WORKSPACE_ID"}'

Over MCP, the same method is the list_backups tool.

Inputs

Input Type Required Description
projectId string Yes The site id, from list_sites.
workspaceId string Yes The workspace the site belongs to.
offset integer No How many backups to skip, for paging. Defaults to 0.

Response

Every call answers with the JSON envelope of success, message, data, code and version. data holds the result described above, and on a method that returns a total, count carries it. The response headers carry the call's X-Request-Id and what is left of your per-minute budget in X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Errors explains every status code a call can answer with.