Backups
Quantaprice automatically backs up all data and syncs backups to cloud storage. You can list, create, and restore backups through the Management API.
Automatic Backups
The master node creates a backup every 10 minutes. Each backup captures a consistent snapshot of all data stores (articles, pricelists, prices, VAT rates, rules, etc.).
On first startup, an initial backup is created automatically.
Automatic backup frequency can be configured per deployment. Contact support if you need a different interval.
Where Backups Are Stored
Backups are stored in two locations:
- Local disk on the master node — the 2 most recent backups are kept for fast access
- Cloud object storage (S3) — all backups are synced to durable cloud storage within 60 seconds of creation
New backups are never deleted from local disk until they have been confirmed uploaded to cloud storage.
Retention Policy
Backups are automatically thinned over time to balance storage costs with recovery granularity:
| Age | What's kept |
|---|---|
| 0 - 4 hours | Every backup (~one every 10 minutes) |
| 4 - 24 hours | 1 backup per hour |
| 1 - 7 days | 1 backup per day |
| 1 - 4 weeks | 1 backup per week |
| 1 - 6 months | 1 backup per month |
| Older than 6 months | Deleted |
Retained backups (created manually with retain: true) are exempt from automatic deletion and kept indefinitely.
Retention runs once per hour.
Listing Backups
GET /management/backups
Returns all available backups from both local disk and cloud storage, sorted by creation time (newest first). Each entry includes:
| Field | Description |
|---|---|
id | Backup identifier (e.g. default-2026-02-14T09-15-30.123456Z) |
created | ISO 8601 timestamp |
type | automatic or manual |
retain | Whether this backup is protected from automatic deletion |
Creating a Manual Backup
POST /management/backups
Optional request body:
{
"retain": true
}
Creates an immediate backup. Set retain: true to protect it from the automatic retention policy.
Restoring from a Backup
POST /management/restore
Request body:
{
"backup_id": "default-2026-02-14T09-15-30.123456Z"
}
What happens during restore
- The restore starts immediately and runs in the background
- Write operations are blocked while the restore is in progress — the API returns
503 Service Unavailablewith aRetry-After: 15header for non-management endpoints - Read-only management endpoints remain available so you can monitor restore progress
- All data stores are overwritten with the backup contents
- Search indices are rebuilt automatically
- Replicas resync from the restored master once complete
The service process does not restart — the API stays up throughout the restore, but rejects write traffic until it finishes.
Restore response
The endpoint returns 202 Accepted:
{
"status": "in_progress",
"backup_id": "default-2026-02-14T09-15-30.123456Z",
"started_at": "2026-02-14T09:16:00Z",
"completed_at": null,
"error": null
}
Monitoring restore progress
GET /management/restore/status
Returns the current restore status: idle, in_progress, completed, or failed.
Backup source
- If the backup exists on local disk, it is used directly (fastest)
- If the backup only exists in cloud storage, it is downloaded first before restoring
Best Practices
- Before major data imports, create a manual retained backup so you have a clean rollback point
- Monitor restore status after triggering a restore — the API will return 503 to clients until it completes
- Retained backups are ideal for milestone snapshots (e.g. before a migration or pricing restructure)
- You do not need to stop or restart the service for either backup or restore operations