Automated Schedules
Daily, weekly, and monthly backups
One-Click Restore
Restore to any backup point instantly
Storage Versioning
Full version history for every object
Encrypted Storage
Backups encrypted at rest
Overview
The Backup service provides automated protection for your data across two layers: database backups and managed storage object versioning.
Backups are stored separately from your app's storage bucket, ensuring backups survive even if you accidentally delete your storage content.
Database Backups
Database backups use continuous archiving plus regular base backups. This enables both snapshot restores and point-in-time recovery (PITR) — meaning you can restore to any second within the retention window, not just daily snapshots.
| Schedule | Time | Retention | Type |
|---|---|---|---|
| Daily | 03:00 UTC | 7 days | Automatic |
| Weekly | Sunday 03:00 UTC | 30 days | Automatic |
| Monthly | 1st of month | 90 days | Automatic |
| Manual | On demand | 90 days | User triggered |
backups/db/{projectId}/{envId}/{timestamp}.sql.gz in managed backup storage. The timestamp uses ISO 8601 format.Listing Backups
View available backups for a database via the Console or the Management API:
# List available backups for a database
curl -H "Authorization: Bearer slx_YOUR_PAT_TOKEN" \
https://sylphx.com/api/v1/resources/{DB_ID}/backups
# Response:
# {
# "available": true,
# "backups": [
# { "name": "pg-abc123-backup-daily", "status": "completed", "completedAt": "2026-03-09T03:00:00Z" },
# { "name": "pg-abc123-backup-wal", "status": "completed", "completedAt": "2026-03-09T11:22:00Z" }
# ]
# }Restoring a Backup
Restoring creates a new database from the backup — it does not overwrite the source. Your original database keeps running throughout the restore process.
# Point-in-time restore (PITR) — restore to any second in history
curl -X POST https://sylphx.com/api/v1/resources/{DB_ID}/restore \
-H "Authorization: Bearer slx_YOUR_PAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"targetTime": "2026-03-09T11:30:00Z"}'
# Restores create a new managed database resource — poll it for status:
# GET /api/v1/resources/{restoreId} → { "status": "ready" }
# List available managed backup snapshots
curl https://sylphx.com/api/v1/resources/{DB_ID}/backups \
-H "Authorization: Bearer slx_YOUR_PAT_TOKEN"Trigger restore via API
POST /api/v1/resources/{DB_ID}/restore passing a targetTime (ISO 8601) for point-in-time recovery.Wait for the new database to be ready
GET /api/v1/resources/{restoreId} until status === "ready" (~5 min).Bind the restored database
Delete the old database (optional)
DELETE /api/v1/resources/{oldDbId}.Storage Versioning
Enable versioning on storage buckets to preserve every version of every object. When versioning is enabled, uploads don't overwrite — they create new versions instead.
import { createClient } from '@sylphx/sdk'
// Connection URL contains both credential and routing — no separate ref needed
const sylphx = createClient(process.env.SYLPHX_URL!)
// Enable versioning on a bucket
await sylphx.storage.enableVersioning('my-bucket')
// List versions for a file
const versions = await sylphx.storage.listVersions('my-bucket', 'uploads/document.pdf')
console.log(versions)
// [
// { versionId: 'v3', lastModified: '2026-02-21', isLatest: true },
// { versionId: 'v2', lastModified: '2026-02-20' },
// { versionId: 'v1', lastModified: '2026-02-19' }
// ]
// Restore a previous version
await sylphx.storage.restoreVersion('my-bucket', 'uploads/document.pdf', 'v2')Pricing
Backup storage is billed at the same rate as managed storage:
- Backup storage: $0.025/GB/month
- Restore operations: Free
- Manual backups: Free (up to 10/day)
- Retention: Configurable (default: daily 7d, weekly 30d, monthly 90d)