API Endpoints
Instances
Power
Backups
Firewall
Teams
Tasks
Endpoint Reference
Returns a list of all active virtual machine instances for the authenticated account.
{
"uuid": "vm-abc123",
"name": "my-instance",
"ip_address": "your.public.ip.address",
"cpu_cores": 8,
"memory": 32,
"storage": 100,
"gpu_count": 1,
"gpu_model": "RTX A4000",
"power_status": "running",
"created_at": "2024-01-15T10:30:00Z"
}
List all available VM templates that can be used when creating instances.
{
"templates": [
{
"name": "UBUNTU-22-04",
"vmid": 100,
"display_name": "Ubuntu 22.04 Server",
"os_type": "linux",
"has_nvidia": false
},
{
"name": "UBUNTU-22-04-NV-DK",
"vmid": 101,
"display_name": "Ubuntu 22.04 + NVIDIA + Docker",
"os_type": "linux",
"has_nvidia": true
}
],
"total": 2
}
Creates a new instance using standardized configurations. This is the recommended way to launch instances.
Parameters
| Name | Type | Description |
|---|---|---|
| region required | body | Region to deploy in (e.g., 'us-east-1') |
| instance_type required | body | Instance type (e.g., 'gpu_1x_a4000') |
| ssh_key required | body | SSH public key for access |
| name | body | Custom instance name |
| username | body | Login username (default: ubuntu) |
| metadata | body | Key-value pairs for organization |
| template_name | body | OS template (e.g., 'UBUNTU-22-04-NV'). Use /instances/templates to list. Defaults: NVIDIA template for GPU instances, base for CPU. |
| iso_url | body | ISO URL for custom OS (max 4GB). Use instead of template_name for Windows, SteamOS, etc. VM boots from ISO for installation. |
{
"region": "igl",
"instance_type": "gpu_1x_a4000",
"ssh_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB...",
"name": "my-gpu-instance",
"username": "ubuntu",
"metadata": {
"project": "ml-training"
},
"template_name": "UBUNTU-22-04-NV"
}
{
"task_id": "task_abc123",
"vm_uuid": "vm_xyz789",
"assigned_ip": "your.public.ip.address",
"status": "PENDING"
}
Creates a fully customized Instance with exact resource specifications.
Parameters
| Name | Type | Description |
|---|---|---|
| region required | body | Region to deploy in (e.g., 'igl') |
| vcpus required | body | Number of virtual CPU cores |
| memory_gib required | body | Memory in GiB |
| storage_gib required | body | Storage in GiB |
| gpu_count required | body | Number of GPUs (0 for CPU-only) |
| gpu_model | body | GPU model (e.g., 'A4000', 'A6000'). Required if gpu_count > 0 |
| ssh_key required | body | SSH public key for access |
| name | body | Custom instance name |
| template_name | body | OS template name |
{
"region": "igl",
"vcpus": 16,
"memory_gib": 64,
"storage_gib": 500,
"gpu_count": 2,
"gpu_model": "A4000",
"ssh_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB...",
"name": "custom-ml-server"
}
{
"task_id": "task_abc123",
"vm_uuid": "vm_xyz789",
"assigned_ip": "your.public.ip.address",
"status": "PENDING"
}
Retrieves comprehensive details about a specific virtual machine instance.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"uuid": "vm-abc123",
"name": "my-instance",
"ip_address": "your.public.ip.address",
"cpu_cores": 8,
"memory": 32,
"storage": 100,
"gpu_count": 1,
"gpu_model": "RTX A4000",
"power_status": "running",
"region": "igl",
"created_at": "2024-01-15T10:30:00Z"
}
Deletes an instance and releases all associated resources.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"task_id": "task_abc123",
"status": "PENDING",
"message": "Instance deletion queued"
}
Lists all available instance types and their configurations, along with current capacity in regions.
{
"data": [
{
"id": "gpu_1x_a4000",
"instance_type": {
"name": "gpu_1x_a4000",
"description": "Single GPU Instance",
"price_cents_per_hour": 45,
"specs": {
"vcpus": 8,
"memory_gib": 32,
"storage_gib": 250,
"gpus": 1,
"gpu_model": "A4000"
}
},
"regions_with_capacity_available": [...]
}
]
}
Updates the display name of an existing instance.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
| name required | body | New name (3-64 chars, alphanumeric with hyphens/underscores) |
{
"name": "my-production-server"
}
{
"message": "Instance renamed successfully",
"instance_id": "vm-abc123",
"new_name": "my-production-server"
}
Get real-time CPU, memory, disk I/O, and network statistics for an instance.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"instance_id": "vm-abc123",
"status": "running",
"cpu": {"usage_percent": 25.5, "cores": 8},
"memory": {
"used_bytes": 8589934592,
"total_bytes": 17179869184,
"usage_percent": 50.0
},
"disk": {"read_bytes_sec": 1048576, "write_bytes_sec": 524288},
"network": {"in_bytes_sec": 102400, "out_bytes_sec": 51200},
"uptime_seconds": 86400
}
Get a VNC proxy ticket for remote console access to the instance.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"instance_id": "vm-abc123",
"ticket": "PVEVNC:...",
"port": 5900,
"host": "phl-gpu-01.bluelobster.ai"
}
Retrieves instance history for the authenticated account within the specified time range.
Parameters
| Name | Type | Description |
|---|---|---|
| start_time | body | Start of time range (ISO 8601 format) |
| end_time | body | End of time range (ISO 8601 format) |
| instance_id | body | Filter by specific instance UUID |
{
"logs": [
{
"instance_id": "vm-abc123",
"event": "created",
"timestamp": "2024-01-15T10:30:00Z",
"details": {...}
}
],
"total": 1
}
Powers on a stopped instance.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"task_id": "task_abc123",
"status": "PENDING",
"message": "VM power on queued",
"instance_id": "vm-abc123"
}
Performs a graceful shutdown of the specified instance.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"task_id": "task_abc123",
"status": "PENDING",
"message": "VM shutdown queued",
"instance_id": "vm-abc123"
}
Immediate forced shutdown. Equivalent to pulling the power plug. **May cause data loss.**
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"task_id": "task_abc123",
"status": "PENDING",
"message": "VM force shutdown queued",
"instance_id": "vm-abc123"
}
Hard reboot of the instance. Stops and starts the VM.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"task_id": "task_abc123",
"status": "PENDING",
"message": "VM reboot queued",
"instance_id": "vm-abc123"
}
Power cycle the instance (stop + start). Use after renaming for hostname changes to take effect.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"task_id": "task_abc123",
"status": "PENDING",
"message": "VM power cycle queued",
"instance_id": "vm-abc123"
}
Create a backup of the instance. The instance continues running during backup.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"message": "Backup started",
"task_id": "task_abc123",
"instance_id": "vm-abc123"
}
List all available backups for an instance.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"instance_id": "vm-abc123",
"storage": "wil-pbs-01",
"backups": [
{
"volid": "wil-pbs-01:backup/vm/100/2024-01-15T10:30:00Z",
"size_bytes": 48530000000,
"size_human": "45.2 GB",
"created_at": "2024-01-15T10:30:00Z",
"format": "pbs-vm"
}
],
"total": 1,
"backup_in_progress": null,
"restore_in_progress": null
}
Restore an instance from a backup. **WARNING: This overwrites all current data.**
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
| backup_volid required | body | Volume ID of backup to restore (from list backups) |
{
"backup_volid": "wil-pbs-01:backup/vm/100/2024-01-15T10:30:00Z"
}
{
"message": "Restore started",
"task_id": "task_abc123",
"instance_id": "vm-abc123",
"backup_volid": "wil-pbs-01:backup/vm/100/2024-01-15T10:30:00Z"
}
List all backups across all VMs for your account.
{
"backups": [
{
"volid": "wil-pbs-01:backup/vm/100/2024-01-15T10:30:00Z",
"instance_id": "vm-abc123",
"instance_name": "my-instance",
"size_bytes": 48530000000,
"size_human": "45.2 GB",
"created_at": "2024-01-15T10:30:00Z",
"notes": "Pre-upgrade backup"
}
],
"total": 1
}
Delete a backup from PBS storage. This action cannot be undone.
Parameters
| Name | Type | Description |
|---|---|---|
| volid required | query | PBS volume ID of the backup to delete (from list backups) |
{
"success": true,
"message": "Backup deletion started",
"task_id": "task_abc123",
"volid": "wil-pbs-01:backup/vm/100/2024-01-15T10:30:00Z"
}
Restore a backup to any compatible VM. Useful for migrating data between instances.
Parameters
| Name | Type | Description |
|---|---|---|
| volid required | body | PBS volume ID of the backup to restore |
| target_instance_id required | body | UUID of the target instance to restore to |
{
"message": "Restore started",
"task_id": "task_abc123",
"target_instance_id": "vm-xyz789",
"backup_volid": "wil-pbs-01:backup/vm/100/2024-01-15T10:30:00Z"
}
Get total backup storage used by your account with billing breakdown. Includes free tier (250GB) and billable overage.
{
"total_bytes": 107374182400,
"total_gb": 100.0,
"total_formatted": "100.00 GB",
"free_tier_bytes": 268435456000,
"free_tier_gb": 250.0,
"billable_bytes": 0,
"billable_gb": 0,
"backup_count": 5,
"monthly_cost_cents": 0,
"monthly_cost_formatted": "$0.00/mo",
"is_free": true,
"usage_percent": 40.0
}
Update the notes for a backup.
Parameters
| Name | Type | Description |
|---|---|---|
| volid required | query | PBS volume ID of the backup |
| notes required | body | New notes for the backup |
{
"notes": "Pre-upgrade backup - stable version"
}
{
"success": true,
"message": "Notes updated",
"volid": "wil-pbs-01:backup/vm/100/2024-01-15T10:30:00Z"
}
Get the automatic backup schedule for an instance.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"instance_id": "vm-abc123",
"enabled": true,
"frequency": "daily",
"time_utc": "03:00",
"retention_count": 7,
"last_backup": "2024-01-15T03:00:00Z",
"next_backup": "2024-01-16T03:00:00Z"
}
Create or update the automatic backup schedule for an instance.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
| enabled | body | Enable or disable the schedule (default: true) |
| frequency | body | Backup frequency: 'daily', 'weekly', 'monthly' |
| time_utc | body | Time to run backup in UTC (e.g., '03:00') |
| retention_count | body | Number of backups to retain (default: 7) |
{
"enabled": true,
"frequency": "daily",
"time_utc": "03:00",
"retention_count": 7
}
{
"success": true,
"message": "Backup schedule created",
"instance_id": "vm-abc123",
"schedule": {
"enabled": true,
"frequency": "daily",
"time_utc": "03:00",
"retention_count": 7
}
}
Delete the automatic backup schedule for an instance.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"success": true,
"message": "Backup schedule deleted",
"instance_id": "vm-abc123"
}
Get current firewall configuration including enabled status, policies, and rules.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"enabled": true,
"policy_in": "DROP",
"policy_out": "ACCEPT",
"rules": [
{
"pos": 0,
"type": "in",
"action": "ACCEPT",
"proto": "tcp",
"dport": "22",
"comment": "SSH access",
"enable": 1
}
]
}
Enable/disable firewall and set default inbound/outbound policies.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
| enable | body | Enable (true) or disable (false) firewall |
| policy_in | body | Default inbound policy: ACCEPT or DROP |
| policy_out | body | Default outbound policy: ACCEPT or DROP |
{
"enable": true,
"policy_in": "DROP",
"policy_out": "ACCEPT"
}
{
"status": "success",
"message": "Firewall options updated",
"firewall": {
"enabled": true,
"policy_in": "DROP",
"policy_out": "ACCEPT",
"rules": []
}
}
Add a new firewall rule. Rules are evaluated in order (position 0 first).
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
| type required | body | Direction: 'in' or 'out' |
| action required | body | Action: ACCEPT, DROP, or REJECT |
| proto | body | Protocol: tcp, udp, icmp (default: tcp) |
| dport | body | Destination port(s): 22, 80:443, or 80,443 |
| sport | body | Source port(s) |
| source | body | Source IP/CIDR (e.g., 192.168.1.0/24) |
| dest | body | Destination IP/CIDR |
| comment | body | Rule description |
| enable | body | 1=enabled (default), 0=disabled |
{
"type": "in",
"action": "ACCEPT",
"proto": "tcp",
"dport": "22",
"comment": "SSH access"
}
{
"status": "success",
"message": "Firewall rule added",
"rule": {
"pos": 0,
"type": "in",
"action": "ACCEPT",
"proto": "tcp",
"dport": "22",
"comment": "SSH access"
}
}
Get details of a specific firewall rule by position.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
| pos required | path | Rule position (0-based) |
{
"pos": 0,
"type": "in",
"action": "ACCEPT",
"proto": "tcp",
"dport": "22",
"source": "10.0.0.0/8",
"comment": "SSH from private network",
"enable": 1
}
Delete a firewall rule by position. Subsequent rules shift positions.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
| pos required | path | Rule position (0-based) |
{
"status": "success",
"message": "Firewall rule at position 0 deleted"
}
Assign an instance to a team for organization and access control.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
| team_id required | body | Team UUID to assign to |
{
"team_id": "team-uuid-here"
}
{
"success": true,
"message": "Instance assigned to team",
"instance_id": "vm-abc123",
"team_id": "team-uuid-here"
}
Remove an instance from its assigned team.
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Instance UUID |
{
"success": true,
"message": "Instance removed from team",
"instance_id": "vm-abc123"
}
List all instances assigned to a specific team.
Parameters
| Name | Type | Description |
|---|---|---|
| team_id required | path | Team UUID |
{
"team_id": "team-uuid-here",
"team_name": "ML Team",
"instances": [
{
"uuid": "vm-abc123",
"name": "training-server",
"ip_address": "your.public.ip.address",
"power_status": "running"
}
],
"total": 1
}
List recent tasks for your account.
Parameters
| Name | Type | Description |
|---|---|---|
| limit | query | Max results (default: 50, max: 100) |
| days | query | Days to look back (default: 1, max: 7) |
| status | query | Filter: PENDING, PROCESSING, COMPLETED, FAILED |
{
"tasks": [
{
"task_id": "task_abc123",
"status": "COMPLETED",
"operation": "create_instance",
"created_at": "2024-01-15T10:30:00Z"
}
],
"total": 1,
"limit": 50
}
Get status of an async task (instance creation, deletion, etc.).
Parameters
| Name | Type | Description |
|---|---|---|
| id required | path | Task ID |
{
"task_id": "task_abc123",
"status": "COMPLETED",
"operation": "create_instance",
"vm_uuid": "vm_xyz789",
"ip_address": "your.public.ip.address",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:32:00Z"
}
Check API and service health status.
{
"status": "healthy",
"timestamp": "2024-01-15T10:30:00Z"
}
Reference
Task States
Async operations return a task_id. Poll the task endpoint to check status:
| PENDING | Task queued for processing |
| PROCESSING | Task actively executing |
| COMPLETED | Task finished successfully |
| FAILED | Task encountered an error |
Recommended polling interval: 2-5 seconds
Error Handling
All errors return JSON with error and message fields:
{"error": "unauthorized", "message": "Invalid or missing API key"}
Status Codes
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 403 | Forbidden - Insufficient permissions |
| 404 | Not Found - Resource doesn't exist |
| 409 | Conflict - Resource unavailable |
| 500 | Server Error |