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 Case | Recommended 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