Skip to main content

Backups

Automated database backups and storage object versioning to protect your data and enable point-in-time recovery.

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.

ScheduleTimeRetentionType
Daily03:00 UTC7 daysAutomatic
WeeklySunday 03:00 UTC30 daysAutomatic
Monthly1st of month90 daysAutomatic
ManualOn demand90 daysUser triggered
Backups are named 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.

Restore creates a new managed database. Bind it to the target environment and redeploy to switch over.
# 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"
1

Trigger restore via API

Use POST /api/v1/resources/{DB_ID}/restore passing a targetTime (ISO 8601) for point-in-time recovery.
2

Wait for the new database to be ready

Poll GET /api/v1/resources/{restoreId} until status === "ready" (~5 min).
3

Bind the restored database

Bind the restored resource to the environment that should use it, then redeploy the app so managed env vars are refreshed.
4

Delete the old database (optional)

Once verified, delete the original DB via 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.

versioning.ts
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')
Versioning storage is billed like normal storage — each version counts toward your storage quota. Use lifecycle policies to automatically clean up old versions.

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)