Skip to content

List cloud backups ​

List backups for the signed-in client account and selected provider. This endpoint does not read current local profile directory sizes or restore a profile.

Request ​

http
GET /api/listCloudBackups
api-key: REPLACE_WITH_LOCAL_API_KEY

Keep the client running, signed in with an active VIP (Pro) membership, and authorized for both local_api and cloud sync. Copy the actual local base URL and api-key from the client API screen; the API port is dynamic and is not the browser CDP port. See Overview and authentication.

Query parameters ​

ParameterTypeRequiredDescription
providerstringNoExactly oss or webdav. Defaults to the client's global cloud-sync provider.
pageintegerNoPositive integer, starting at 1; default 1. Must be within JavaScript's safe integer range.
pageSizeintegerNo1–1000; default 50.

Only these three query parameters are accepted; unknown parameters return HTTP 400. Pagination values must be positive decimal integer strings without leading zeros; empty values, 0, negatives, fractions, or out-of-range values are rejected, not silently adjusted. Each pagination parameter has its own default; they need not be supplied together.

Valid backups are deduplicated and sorted by cloudId in case-sensitive ASCII ascending order before pagination. There is no user-supplied sort parameter.

For webdav, configure the server, account, and base directory in the client first. The endpoint uses only those saved settings. Do not pass WebDAV URLs, usernames, authentication passwords, or a webdav object as parameters.

cURL ​

Replace both placeholders with values from the client API screen before running. These examples use Bash syntax and contain no usable credentials.

bash
BASE_URL='http://127.0.0.1:REPLACE_WITH_API_PORT'
API_KEY='REPLACE_WITH_LOCAL_API_KEY'
curl --get "${BASE_URL}/api/listCloudBackups" \
  --header "api-key: ${API_KEY}" \
  --data-urlencode 'provider=oss' \
  --data-urlencode 'page=1' \
  --data-urlencode 'pageSize=50'

Python ​

python
import requests

base_url = "http://127.0.0.1:REPLACE_WITH_API_PORT"
response = requests.get(
    f"{base_url}/api/listCloudBackups",
    headers={"api-key": "REPLACE_WITH_LOCAL_API_KEY"},
    params={"provider": "oss", "page": 1, "pageSize": 50},
    timeout=60,
)
response.raise_for_status()
print(response.json())

Success response ​

HTTP 200; all identifiers and names below are fictional.

json
{
  "success": true,
  "data": [
    {
      "cloudId": "8f2b6a91-3d74-4c65-9e20-5a1c7d8b9034",
      "name": "EXAMPLE_CLOUD_PROFILE",
      "provider": "oss",
      "envSizeBytes": 10485760,
      "envSizeMB": "10.00",
      "localIds": [12, 35]
    }
  ],
  "total": 1,
  "page": 1,
  "pageSize": 50,
  "provider": "oss"
}
FieldTypeMeaning
successbooleantrue for a successful listing.
dataobject[]Backups on the requested page in cloudId ASCII ascending order; may be empty.
data[].cloudIdstringCloud backup identifier, not a local profile ID.
data[].namestringName from cloud metadata; may be empty.
data[].providerstringSelected oss or webdav provider.
data[].envSizeBytesintegerNon-negative backup size in bytes from cloud metadata; unavailable or invalid size becomes 0.
data[].envSizeMBstringenvSizeBytes / 1024 / 1024, formatted to two decimal places.
data[].localIdsinteger[]Positive local profile IDs already bound to this backup and provider; empty if none match.
totalintegerNumber of valid, deduplicated backups before pagination, not the page length.
page, pageSizeintegerEffective pagination values. A page past the end returns an empty data array.
providerstringEffective provider for the whole response.

Names and sizes come from cloud metadata, not live local disk contents: OSS uses the cloud listing metadata; WebDAV uses .meta.json names and the .dat object's reported size. localIds requires the same cloudId and provider. For WebDAV it also requires the same configured server, account, and base directory; a matching cloud ID on another WebDAV configuration is not enough.

localIds indicates an association, not whether automatic cloud sync is enabled. A restored profile with automatic sync disabled can still appear here.

Use cloudId with Restore a cloud backup. Existing localIds do not make restore overwrite those profiles.

Errors ​

Errors produced by the new endpoint use this shape:

json
{
  "success": false,
  "code": "INVALID_PARAMETERS",
  "error": "Invalid request parameters"
}
HTTPcodeMeaning
400INVALID_PARAMETERSUnknown query parameter or invalid pagination.
400INVALID_PROVIDERProvider is not exactly oss or webdav.
400WEBDAV_CONFIG_REQUIREDSaved client WebDAV configuration is missing or invalid.
401AUTH_REQUIRED / LOGIN_REQUIREDClient sign-in is required. A missing or invalid api-key is also 401, from global middleware.
403VIP_REQUIREDCloud VIP access is missing or expired. Missing local_api authorization also returns 403, from global middleware.
409CLOUD_SESSION_CHANGEDThe client switched accounts during the operation. Check the current account before trying again.
502CLOUD_BACKUP_LIST_FAILED / WEBDAV_AUTH_FAILEDCloud listing failed, or the saved WebDAV credentials were rejected.
503CLOUD_SYNC_UNAVAILABLEThe client's cloud-sync module is unavailable.
504REQUEST_TIMEOUTA detected cloud transport timeout.

Existing global authentication middleware may return only success and error, with no code. Check both the HTTP status and body; see Errors and response compatibility.