How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Freestyle VM API

APIs for managing lightweight virtual machines (VMs) to run your code in isolated environments.

Freestyle VM API is one of 11 APIs that Freestyle publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 2 JSON Schema definitions.

Tagged areas include vm. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, a JSON-LD context, and 2 JSON Schemas.

This API exposes 37 operations across 30 paths, and defines 90 schemas. It is described by OpenAPI 3.2.0, at version 0.1.0.

Requests are made against a single base URL, https://api.freestyle.sh.

37 operations 30 paths 90 schemas 3 DELETE15 GET1 PATCH17 POST1 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.2.0
API Version
0.1.0
Server
https://api.freestyle.sh
Authentication
HTTP Bearer
Contact
License
Closed Source
Resource Areas
1

Authentication & Security 1

Freestyle VM API declares 1 security scheme for authenticating requests. It accepts HTTP bearer tokens (bearerAuth). By default, every request must be authenticated.

Paths & Operations 37

Across 30 paths, the API surfaces 37 operations — 3 DELETE, 15 GET, 1 PATCH, 17 POST, 1 PUT. Each is listed below with its method, path, parameters, and response codes.

VM 37

APIs for managing lightweight virtual machines (VMs) to run your code in isolated environments.

GET
/v1/vms
List VMs
list_vms 5 params → 200500
POST
/v1/vms
Create VM
create_vm body → 200
GET
/v1/vms/builds/{build_id}
Fetch a single build by id.
get_build 1 param → 200404500
GET
/v1/vms/builds/{build_id}/phases
Append-only timeline of phases this build passed through. Phases are ordered by startedat; the last entry is the current phase.
list_build_phases 1 param → 200404500
GET
/v1/vms/snapshots
List all snapshots.
list_snapshots 3 params → 200400500
POST
/v1/vms/snapshots
Create a snapshot by creating a temporary VM, starting it, snapshotting it, then deleting the VM. Supports multi-layer recursive specs via spec.snapshot.
create_snapshot body → 200
GET
/v1/vms/snapshots/{snapshot_id}
Fetch a single snapshot by id. Returns deleted/failed rows too — useful for opening a deep-link to a layer-snapshot that's since been cleaned up.
get_snapshot 1 param → 200404500
DELETE
/v1/vms/snapshots/{snapshot_id}
Delete a snapshot
delete_snapshot 1 param → 200404409500
PATCH
/v1/vms/snapshots/{snapshot_id}
Update snapshot metadata
update_snapshot 1 param body → 200404500
POST
/v1/vms/{id}/resize
Resize VM
resize_vm 1 param body → 200400404500
GET
/v1/vms/{vm_id}
Get VM
get_vm 1 param → 200500
DELETE
/v1/vms/{vm_id}
Delete VM
delete_vm 1 param → 200500
POST
/v1/vms/{vm_id}/await
Wait for VM to stop
wait_vm 1 param → 200500
GET
/v1/vms/{vm_id}/build
Fetch the build that produced a VM. Joins through vmrecords.buildid.
get_build_for_vm 1 param → 200404500
POST
/v1/vms/{vm_id}/exec-await
Execute command in VM and await result
exec_await 1 param body → 200408500
GET
/v1/vms/{vm_id}/files/{filepath}
Get file from VM
get_file 2 params → 200400404500
PUT
/v1/vms/{vm_id}/files/{filepath}
Put file to VM
put_file 2 params body → 200400404500
POST
/v1/vms/{vm_id}/fork
Fork VM
fork_vm 1 param body → 200403500
POST
/v1/vms/{vm_id}/kill
Kill VM
kill_vm 1 param → 200500
POST
/v1/vms/{vm_id}/optimize
Suspends a VM and reallocates storage for more efficient forking.
optimize_vm 1 param → 200500
POST
/v1/vms/{vm_id}/snapshot
Create a snapshot of a VM. The snapshot is stored in a special snapshots folder and cannot be booted directly, but can be used to create new VMs.
snapshot_vm 1 param body → 200
POST
/v1/vms/{vm_id}/start
Start VM
start_vm 1 param body → 200
GET
/v1/vms/{vm_id}/stats/stream
Stream live VM stats (memory + CPU) as NDJSON. Sourced from inside the guest — untrusted, do not use for billing.
stats_stream 2 params
POST
/v1/vms/{vm_id}/stop
Stop VM
stop_vm 1 param → 200400500
POST
/v1/vms/{vm_id}/suspend
Suspend VM
suspend_vm 1 param → 200500
POST
/v1/vms/{vm_id}/systemd/restart
Restart multiple systemd services
batch_restart_services 1 param body → 200500
GET
/v1/vms/{vm_id}/systemd/services
List all systemd services for a VM
list_services 1 param → 200500
POST
/v1/vms/{vm_id}/systemd/services
Create a new systemd service
create_service 1 param body → 200409500
DELETE
/v1/vms/{vm_id}/systemd/services/{service_id}
Delete a systemd service
delete_service 2 params → 200404500
GET
/v1/vms/{vm_id}/systemd/services/{service_id}/logs
Get logs for a systemd service
get_service_logs 4 params → 200404500
GET
/v1/vms/{vm_id}/systemd/services/{service_id}/status
Get status of a systemd service
get_service_status 2 params → 200404500
POST
/v1/vms/{vm_id}/systemd/start
Start multiple systemd services
batch_start_services 1 param body → 200500
POST
/v1/vms/{vm_id}/systemd/stop
Stop multiple systemd services
batch_stop_services 1 param body → 200500
GET
/v1/vms/{vm_id}/terminals
List all terminal sessions for a VM
list_terminals 1 param → 200500
GET
/v1/vms/{vm_id}/terminals/{terminal_id}/logs
Get terminal logs as plain text array
get_terminal_logs 2 params → 200500
GET
/v1/vms/{vm_id}/terminals/{terminal_id}/xterm-256color
Get terminal output with xterm formatting
get_terminal_xterm 2 params → 200500
POST
/v1/vms/{vm_id}/watch-files
Watch VM Files
watch_files 1 param

Schemas 90

The contract defines 90 schemas that model the data the API accepts and returns. The most detailed are CreateVmRequest (21 properties), VmTemplate (20 properties), SnapshotSpec (19 properties), SystemdUnitSpec (18 properties). Each schema is shown below with its type and property counts.

BuildState
string
Lifecycle state of a build row.
SnapshotId
string
Branded snapshot ID in the format sc- . Unlike VmShortId, this is a plain String wrapper with no fixed-size array or padding.
DockerCredentials
object
3 properties 3 required
KillVmResponse
object
1 property 1 required
ListBuildPhasesResponse
object
Ordered timeline of phases for a single build. Phases are append-only; consumers wanting the "current phase" pick the last entry. Empty for a build whose top-l…
1 property 1 required
CreateSnapshotRequest
object
5 properties
GitRepositorySpec
object
3 properties 2 required
SystemdListServicesResponse
object
1 property 1 required
SystemdServiceListItem
object
1 property 1 required
SnapshotVmResponse
object
3 properties 2 required
BuildRecord
object
One row in the builds table — a long-running snapshot creation task. Builds do not form trees. Sub-work (Docker pulls, systemd installs, per-layer captures of…
10 properties 6 required
StopVmResponse
object
2 properties 2 required
SnapshotLayerId
string
Branded snapshot layer ID — always a 16-character alphanumeric lowercase string prefixed with "sl-".
PortMapping
object
2 properties 2 required
SnapshotPersistence
JournaldLogItem
object
4 properties 2 required
OptimizeVmResponse
object
2 properties 2 required
VmInstanceId
string
TerminalLogsResponse
object
1 property 1 required
SystemdUnitSpec
object
18 properties 3 required
FileInfo
object
2 properties 2 required
BaseImageSpec
object
Specifies a Docker base image via inline Dockerfile content. Used as an alternative to dockerimage when you want to build a custom image on the fly without a p…
1 property 1 required
GitUser
object
3 properties
FreestyleFile
object
3 properties 1 required
SystemdUnitMode
string
TerminalLogsArrayResponse
object
1 property 1 required
UpdateSnapshotResponses
ExecAwaitRequest
object
3 properties 1 required
CreateVmRequest
object
21 properties
PortConfig
object
2 properties 2 required
DeleteSnapshotResponses
VmTemplate
object
20 properties
SystemdServiceStatus
object
5 properties 5 required
BatchServiceResponse
object
1 property 1 required
ResizeVmResponse
object
VmDeleteEvent
string
ListVmsResponse
object
10 properties 6 required
VMState
string
BatchServiceRequest
object
1 property 1 required
GitOptions
object
2 properties 1 required
ListSnapshotsResponse
object
8 properties 8 required
RequestId
string
Branded request identifier — ri- for newly minted IDs. The wrapped string is otherwise opaque, so legacy UUID-formatted IDs (from in-flight requests during rol…
SystemdRestartPolicyKind
string
BuildPhaseId
string
Branded build phase ID in the format bph- .
SnapshotSpec
object
A cacheable snapshot layer. Recursive via snapshot — an optional inner layer that is materialized into a snapshot before this layer builds. The resulting snaps…
19 properties
ForkedVmResponse
object
3 properties 2 required
SystemdDeleteServiceResponse
object
2 properties 2 required
GitConfig
object
1 property
WaitVmResponse
object
2 properties 2 required
BuildPhase
object
One phase the build passed through. Append-only — rows are never updated. The implicit finishedat of any phase is the next phase row's startedat, or builds.fin…
5 properties 4 required
ForkVmRequest
object
1 property
AccountId
string
Account identifier — either "system" or a user UUID
TerminalSession
object
3 properties 2 required
StartVmRequest
object
4 properties
TerminalListResponse
object
1 property 1 required
VmPersistence
VmSpec
object
Top-level spec for POST /v1/vms. Identifies a reusable unit via name and carries the cacheable snapshot chain that produces this VM's base.
2 properties
SystemdCreateServiceResponse
object
3 properties 3 required
BatchServiceOperationResult
object
3 properties 3 required
ResizeVmRequest
object
3 properties
SuspendVmResponse
object
3 properties 3 required
GetVmResponse
object
7 properties 2 required
CreateVmResponse
object
4 properties 2 required
UpdateSnapshotRequest
object
1 property
ServiceIdItem
object
1 property 1 required
SnapshotVmRequest
object
2 properties
LinuxGroupSpec
object
3 properties 1 required
WriteFileRequest
object
2 properties 1 required
ForkVmResponse
object
2 properties 2 required
VmId
string
VM ID — always 20 alphanumeric lowercase characters. New IDs are fully random. Legacy short IDs are right-padded with '0' on parse.
VmInfo
object
12 properties 2 required
LinuxUserSpec
object
7 properties 1 required
StartedVmResponse
object
3 properties 2 required
SnapshotStateTag
string
Lifecycle state of a snapshot row. Building — saga in flight, late-bound fields NULL. Ready — saga finalized cleanly; usable as a base. Failed — bytes complete…
SnapshotInfo
object
17 properties 8 required
LogEntry
object
2 properties 1 required
FileKind
string
ExecAwaitVmResponse
object
3 properties
FileEncoding
string
File content encoding
WriteFileResponse
VmDomainConfig
object
Domain configuration for a VM, specifying the domain and optional target port
2 properties 1 required
FileSystemResponse
DeleteVmResponses
BuildId
string
Branded build ID in the format bld- .
VmMetricsInfo
object
3 properties 3 required
CreateSnapshotResponse
object
1 property 1 required
SystemdUnitSpecPatch
object
17 properties 1 required
JournaldLogsResponse
object
1 property 1 required
SystemdConfig
object
2 properties
SystemdRestartPolicy
object
4 properties 1 required

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

freestyle-sh-vm-api-openapi.yml Raw ↑

Other APIs Freestyle publishes across the network.

Freestyle Auth API
Freestyle Certs API
Freestyle Cron API
Freestyle DNS API
Freestyle Domains API
Freestyle Execute API
Freestyle Git API
Freestyle Identity API
Freestyle Observability API
Freestyle Web API
Where this information came from

This is an independent, third-party profile of Freestyle VM API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.