API reference
Backups
Scheduled backups, destinations, restores and the customer's own backups.
List the account's backups
GET/api/v1/accounts/{id}/backups
Parameters
| Name | In |
|---|---|
id | path |
Responses
- 200 OK
Body
Field Type itemsarray of Entry - 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 409 Conflict: not-ready
- 500 Internal Server Error: internal
Download a backup
GET/api/v1/accounts/{id}/backups/{sid}/download
Parameters
| Name | In |
|---|---|
id | path |
sid | path |
Responses
- 200 OK
- 400 Bad Request: file-operation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 409 Conflict: not-ready
- 500 Internal Server Error: internal
Browse the files of a backup
GET/api/v1/accounts/{id}/backups/{sid}/files
Parameters
| Name | In |
|---|---|
id | path |
sid | path |
path | query |
Responses
- 200 OK
Body
Field Type itemsarray of map of any pathstring taken_atinteger - 400 Bad Request: file-operation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 409 Conflict: not-ready
- 500 Internal Server Error: internal
Restore files from a backup
POST/api/v1/accounts/{id}/backups/{sid}/restore-files
Parameters
| Name | In |
|---|---|
id | path |
sid | path |
Request body
| Field | Type |
|---|---|
overwrite | boolean |
path | string |
to | string |
Responses
- 202 Accepted (runs in the background)
Body
Field Type job_idstring - 400 Bad Request: validation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 409 Conflict: not-ready
- 500 Internal Server Error: internal
Create a full backup of the account
POST/api/v1/accounts/{id}/backups/full
Parameters
| Name | In |
|---|---|
id | path |
Request body
| Field | Type |
|---|---|
destination | string |
host | string |
password | string |
path | string |
port | integer |
tls | string |
user | string |
Responses
- 202 Accepted (runs in the background)
Body
Field Type job_idstring - 400 Bad Request: validation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 409 Conflict: busy, not-ready
- 500 Internal Server Error: internal
Download a database backup
GET/api/v1/accounts/{id}/backups/partial/databases/{db}
Parameters
| Name | In |
|---|---|
id | path |
db | path |
Responses
- 200 OK
- 400 Bad Request: file-operation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 409 Conflict: not-ready
- 500 Internal Server Error: internal
Download the email filters
GET/api/v1/accounts/{id}/backups/partial/filters
Parameters
| Name | In |
|---|---|
id | path |
Responses
- 200 OK
Body
Field Type filtersalwaysarray of HostingExportedFilter formatalwaysstring versionalwaysinteger - 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 409 Conflict: not-ready
- 500 Internal Server Error: internal
Download a domain's forwarders
GET/api/v1/accounts/{id}/backups/partial/forwarders/{did}
Parameters
| Name | In |
|---|---|
id | path |
did | path |
Responses
- 200 OK
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 409 Conflict: not-ready
- 500 Internal Server Error: internal
Download a home directory backup
GET/api/v1/accounts/{id}/backups/partial/home
Parameters
| Name | In |
|---|---|
id | path |
Responses
- 200 OK
- 400 Bad Request: file-operation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 409 Conflict: not-ready
- 500 Internal Server Error: internal
Restore a partial backup
POST/api/v1/accounts/{id}/backups/partial/restore
Takes an uploaded partial backup: kind=home|database (restored by a job) or forwarders|filters (added right away). Multipart fields: kind, file, and database / domain_id / overwrite as needed.
Parameters
| Name | In |
|---|---|
id | path |
Responses
- 200 OK
Body
Field Type addedinteger notesarray of string skippedinteger - 202 Accepted (runs in the background)
Body
Field Type job_idstring - 400 Bad Request: invalid-body, invalid-file, upload, validation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 409 Conflict: not-ready
- 422 Unprocessable Entity: rejected
- 500 Internal Server Error: internal
Backup status of every account
GET/api/v1/backup/accounts
Responses
- 200 OK
Body
Field Type itemsarray of map of any - 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 500 Internal Server Error: internal
Get the backup configuration
GET/api/v1/backup/config
Responses
- 200 OK
Body
Field Type configStoreBackupConfig diskobject Field Type freealwaysinteger totalalwaysinteger - 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 500 Internal Server Error: internal
Save the backup configuration
PUT/api/v1/backup/config
Request body
| Field | Type |
|---|---|
backup_dir | string |
db_mode | string |
enabled | boolean |
excludes | array of string |
include | StoreBackupInclude |
min_free_pct | integer |
retain_local | boolean |
retention | StoreBackupRetention |
schedule | StoreBackupSchedule |
strict_retention | boolean |
type | string |
updated_at | integer |
Responses
- 200 OK
Body
Field Type configStoreBackupConfig diskobject Field Type freealwaysinteger totalalwaysinteger - 400 Bad Request: validation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 500 Internal Server Error: internal
List backup destinations
GET/api/v1/backup/destinations
Responses
- 200 OK
Body
Field Type itemsarray of StoreBackupDestination - 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 500 Internal Server Error: internal
Add a backup destination
POST/api/v1/backup/destinations
Request body
| Field | Type |
|---|---|
config | HostingDestConfig |
enabled | boolean |
name | string |
new_key | boolean |
secret | string |
timeout_s | integer |
type | string |
Responses
- 200 OK
- 400 Bad Request: validation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 500 Internal Server Error: internal
Delete a backup destination
DELETE/api/v1/backup/destinations/{did}
Parameters
| Name | In |
|---|---|
did | path |
Responses
- 204 Done, no content
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 500 Internal Server Error: internal
Update a backup destination
PUT/api/v1/backup/destinations/{did}
Parameters
| Name | In |
|---|---|
did | path |
Request body
| Field | Type |
|---|---|
config | HostingDestConfig |
enabled | boolean |
name | string |
new_key | boolean |
secret | string |
timeout_s | integer |
type | string |
Responses
- 200 OK
- 400 Bad Request: validation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 500 Internal Server Error: internal
Test a backup destination
POST/api/v1/backup/destinations/{did}/validate
Parameters
| Name | In |
|---|---|
did | path |
Responses
- 200 OK
Body
Field Type destinationStoreBackupDestination okboolean - 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 500 Internal Server Error: internal
Run the backup now
POST/api/v1/backup/run
Request body
| Field | Type |
|---|---|
account_ids | array of string |
Responses
- 202 Accepted (runs in the background)
Body
Field Type job_idstring - 400 Bad Request: not-found
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 409 Conflict: busy
- 500 Internal Server Error: internal
List backup runs
GET/api/v1/backup/runs
Responses
- 200 OK
Body
Field Type itemsarray of StoreBackupRun - 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 500 Internal Server Error: internal
List backups by day or account
GET/api/v1/backup/snapshots
By day (?date=2026-10-15, server time) or by account (?username=), for the restore screens.
Parameters
| Name | In |
|---|---|
date | query |
username | query |
Responses
- 200 OK
Body
Field Type datesarray of string itemsarray of StoreBackupSnapshot timezonestring - 400 Bad Request: invalid-date
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 500 Internal Server Error: internal
List restores
GET/api/v1/restores
Responses
- 200 OK
Body
Field Type itemsarray of StoreRestoreJob - 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 500 Internal Server Error: internal
Restore accounts from a backup
POST/api/v1/restores
Request body
| Field | Type |
|---|---|
options | HostingRestoreOptions |
snapshot_ids | array of string |
Responses
- 202 Accepted (runs in the background)
Body
Field Type itemsarray of map of string - 400 Bad Request: not-found, validation
- 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 500 Internal Server Error: internal
Get a restore
GET/api/v1/restores/{rid}
Parameters
| Name | In |
|---|---|
rid | path |
Responses
- 200 OK
Body
Field Type account_idstring created_atalwaysinteger created_byalwaysstring finished_atinteger idalwaysstring job_idstring modealwaysstring progressalwaysinteger snapshot_idstring sourcealwaysstring started_atinteger statusalwaysstring target_usernamealwaysstring - 401 Unauthorized: no session, or an invalid or expired token
- 403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)
- 404 Not Found: not-found
- 500 Internal Server Error: internal