Docs

Manage Volumes with the Public API

Here are examples to help you manage persistent volumes using the Public API.

Get Project Volumes

List all volumes in a project:

Required
query project($id: String!) {
  project(id: $id) {
    volumes {
      edges {
        node {
          id
          name
          createdAt
        }
      }
    }
  }
}
Variables
{
  "id": "project-id"
}

Get Volume Instance Details

Get details about a volume instance (volume in a specific environment):

Required
query volumeInstance($id: String!) {
  volumeInstance(id: $id) {
    id
    mountPath
    currentSizeMB
    state
    volume {
      id
      name
    }
    serviceInstance {
      serviceName
    }
  }
}
Variables
{
  "id": "volume-instance-id"
}

Create a Volume

Create a new persistent volume attached to a service:

Required
mutation volumeCreate($input: VolumeCreateInput!) {
  volumeCreate(input: $input) {
    id
    name
  }
}
Variables
{
  "input": {
    "projectId": "project-id",
    "serviceId": "service-id",
    "mountPath": "/data"
  }
}

Update a Volume

Rename a volume:

Required
mutation volumeUpdate($volumeId: String!, $input: VolumeUpdateInput!) {
  volumeUpdate(volumeId: $volumeId, input: $input) {
    id
    name
  }
}
Variables
{
  "volumeId": "volume-id",
  "input": {
    "name": "database-storage"
  }
}

Update Volume Instance

Update the mount path for a volume instance:

Required
mutation volumeInstanceUpdate($volumeId: String!, $input: VolumeInstanceUpdateInput!) {
  volumeInstanceUpdate(volumeId: $volumeId, input: $input)
}
Variables
{
  "volumeId": "volume-id",
  "input": {
    "mountPath": "/new/path"
  }
}

Delete a Volume

Required
mutation volumeDelete($volumeId: String!) {
  volumeDelete(volumeId: $volumeId)
}
Variables
{
  "volumeId": "volume-id"
}

Volume Backups

List Backups

Get all backups for a volume instance:

Required
query volumeInstanceBackupList($volumeInstanceId: String!) {
  volumeInstanceBackupList(volumeInstanceId: $volumeInstanceId) {
    id
    name
    createdAt
    expiresAt
    usedMB
    referencedMB
  }
}
Variables
{
  "volumeInstanceId": "volume-instance-id"
}

Create a Backup

Required
mutation volumeInstanceBackupCreate($volumeInstanceId: String!) {
  volumeInstanceBackupCreate(volumeInstanceId: $volumeInstanceId)
}
Variables
{
  "volumeInstanceId": "volume-instance-id"
}

Restore from Backup

Required
mutation volumeInstanceBackupRestore($volumeInstanceBackupId: String!, $volumeInstanceId: String!) {
  volumeInstanceBackupRestore(volumeInstanceBackupId: $volumeInstanceBackupId, volumeInstanceId: $volumeInstanceId)
}
Variables
{
  "volumeInstanceBackupId": "backup-id",
  "volumeInstanceId": "volume-instance-id"
}

Lock a Backup (Prevent Expiration)

Required
mutation volumeInstanceBackupLock($volumeInstanceBackupId: String!, $volumeInstanceId: String!) {
  volumeInstanceBackupLock(volumeInstanceBackupId: $volumeInstanceBackupId, volumeInstanceId: $volumeInstanceId)
}
Variables
{
  "volumeInstanceBackupId": "backup-id",
  "volumeInstanceId": "volume-instance-id"
}

Delete a Backup

Required
mutation volumeInstanceBackupDelete($volumeInstanceBackupId: String!, $volumeInstanceId: String!) {
  volumeInstanceBackupDelete(volumeInstanceBackupId: $volumeInstanceBackupId, volumeInstanceId: $volumeInstanceId)
}
Variables
{
  "volumeInstanceBackupId": "backup-id",
  "volumeInstanceId": "volume-instance-id"
}

Backup Schedules

List Backup Schedules

Required
query volumeInstanceBackupScheduleList($volumeInstanceId: String!) {
  volumeInstanceBackupScheduleList(volumeInstanceId: $volumeInstanceId) {
    id
    name
    cron
    kind
    retentionSeconds
    createdAt
  }
}
Variables
{
  "volumeInstanceId": "volume-instance-id"
}

Common Mount Paths

Use CaseRecommended Mount Path
PostgreSQL/var/lib/postgresql/data
MySQL/var/lib/mysql
MongoDB/data/db
Redis/data
General Storage/data or /app/data
Edit this file on GitHubLast updated Feb 3, 2026