Replicated vms API
The vms API from Replicated — 8 operation(s) for vms.
The vms API from Replicated — 8 operation(s) for vms.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/replicated-vms-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
description: Manage enterprise portal users, install options, branding, documentation, email templates, and access control.
title: Vendor API V3 apps Vms API
contact:
name: Replicated, Inc.
url: http://www.replicated.com/
email: info@replicated.com
version: 3.0.0
servers:
- url: https://api.replicated.com/vendor/v3
tags:
- name: vms
paths:
/vm:
post:
security:
- api_key: []
description: 'Required RBAC Policy: kots/vm/create'
tags:
- vms
summary: Create a test vm.
operationId: createVM
parameters:
- name: DryRun
in: query
schema:
type: boolean
responses:
'200':
$ref: '#/components/responses/createVMDryRunResponse'
'201':
$ref: '#/components/responses/createVMResponse'
'400':
$ref: '#/components/responses/createVMErrorResponse'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVMParametersBody'
/vm/versions:
get:
security:
- api_key: []
tags:
- vms
summary: List vm versions.
operationId: listVMVersions
responses:
'200':
$ref: '#/components/responses/listVMVersionsResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
/vm/{vm_id}:
get:
security:
- api_key: []
description: 'Required RBAC Policy: kots/vm/[:vmid]'
tags:
- vms
summary: Get the details for a test vm.
operationId: getVM
parameters:
- x-go-name: VMID
description: VM identifier
name: vm_id
in: path
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/getVMResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
delete:
security:
- api_key: []
description: 'Required RBAC Policy: kots/vm/[:vmid]/delete'
tags:
- vms
summary: Delete a test vm.
operationId: deleteVM
parameters:
- x-go-name: VMID
description: VM identifier
name: vm_id
in: path
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/deleteVMResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
/vm/{vm_id}/port:
post:
security:
- api_key: []
description: 'Required RBAC Policy: kots/vm/[:vmid]/port/expose'
tags:
- vms
summary: Exposes a port on a vm.
operationId: createVMPort
parameters:
- x-go-name: VMID
description: VM identifier
name: vm_id
in: path
required: true
schema:
type: string
responses:
'201':
$ref: '#/components/responses/createVMPortResponse'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
type: object
required:
- port
- protocols
properties:
is_wildcard:
description: IsWildcard
type: boolean
x-go-name: IsWildcard
port:
description: Port Number
type: integer
format: int64
x-go-name: Port
protocols:
description: Protocols
type: array
items:
$ref: '#/components/schemas/PortProtocol'
x-go-name: Protocols
/vm/{vm_id}/ports:
get:
security:
- api_key: []
description: 'Required RBAC Policy: kots/vm/[:vmid]/port/list'
tags:
- vms
summary: Lists ports for a vm.
operationId: listVMPorts
parameters:
- x-go-name: VMID
description: VM identifier
name: vm_id
in: path
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/listVMPortsResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
/vm/{vm_id}/tags:
put:
security:
- api_key: []
description: 'Required RBAC Policy: kots/vm/tag/update'
tags:
- vms
summary: Update the tags for a vm.
operationId: updateVMTags
parameters:
- x-go-name: VMID
description: VM identifier
name: vm_id
in: path
required: true
schema:
type: string
responses:
'201':
$ref: '#/components/responses/updateVMTagsResponse'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
type: object
properties:
tags:
type: array
items:
$ref: '#/components/schemas/Tag'
x-go-name: Tags
/vm/{vm_id}/ttl:
put:
security:
- api_key: []
description: 'Required RBAC Policy: kots/vm/ttl/update'
tags:
- vms
summary: Update ttl for a VM.
operationId: updateVMTTL
parameters:
- x-go-name: VMID
description: VM identifier
name: vm_id
in: path
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/updateVMTTLResponse'
'400':
$ref: '#/components/responses/updateVMTTLErrorResponse'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
requestBody:
content:
application/json:
schema:
type: object
properties:
ttl:
type: string
x-go-name: TTL
/vms:
get:
security:
- api_key: []
description: 'Required RBAC Policy: kots/vm/list'
tags:
- vms
summary: List test vms.
operationId: listVMs
responses:
'200':
$ref: '#/components/responses/listVMsResponse'
'400':
$ref: '#/components/responses/responseErrBadRequest'
'401':
$ref: '#/components/responses/responseErrUnauthorized'
'403':
$ref: '#/components/responses/responseErrForbidden'
'404':
$ref: '#/components/responses/responseErrNotFound'
servers:
- url: https://api.replicated.com/vendor/v3
components:
schemas:
VMValidationError:
type: object
properties:
errors:
type: array
items:
type: string
x-go-name: Errors
supported_distributions:
type: array
items:
$ref: '#/components/schemas/VMSupportedDistributionAndVersions'
x-go-name: SupportedDistributions
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
VMAddonPort:
type: object
properties:
name:
type: string
x-go-name: Name
protocol_http:
type: boolean
x-go-name: ProtocolHTTP
protocol_https:
type: boolean
x-go-name: ProtocolHTTPS
protocol_ws:
type: boolean
x-go-name: ProtocolWS
protocol_wss:
type: boolean
x-go-name: ProtocolWSS
upstream_port:
type: integer
format: int64
x-go-name: UpstreamPort
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
VMDistributionStatus:
type: object
properties:
enabled:
type: boolean
x-go-name: Enabled
status:
type: string
x-go-name: Status
status_message:
type: string
x-go-name: StatusMessage
versions:
type: string
x-go-name: Versions
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
VMSupportedDistributionAndVersions:
type: object
properties:
instance_type_details:
type: object
additionalProperties:
$ref: '#/components/schemas/InstanceTypeSpec'
x-go-name: InstanceTypeDetails
instance_types:
type: array
items:
type: string
x-go-name: InstanceTypes
short_name:
type: string
x-go-name: ShortName
status:
$ref: '#/components/schemas/VMDistributionStatus'
version_details:
type: array
items:
$ref: '#/components/schemas/VMSupportedVersion'
x-go-name: VersionDetails
versions:
type: array
items:
type: string
x-go-name: Versions
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
VMAddonStatus:
type: string
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
InstanceTypeSpec:
type: object
properties:
memory_gib:
type: integer
format: int64
x-go-name: MemoryGiB
vcpus:
type: integer
format: int64
x-go-name: VCPUs
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/cmx/types
VMPort:
type: object
properties:
addon_guid:
type: string
x-go-name: AddonGUID
addon_id:
type: string
x-go-name: AddonShortID
created_at:
type: string
format: date-time
x-go-name: CreatedAt
exposed_ports:
type: array
items:
$ref: '#/components/schemas/VMExposedPort'
x-go-name: ExposedPorts
hostname:
type: string
x-go-name: Hostname
port_name:
type: string
x-go-name: PortName
state:
$ref: '#/components/schemas/VMAddonStatus'
upstream_port:
type: integer
format: int64
x-go-name: UpstreamPort
vm_guid:
type: string
x-go-name: VMGUID
vm_id:
type: string
x-go-name: VMShortID
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
VM:
type: object
properties:
actor:
$ref: '#/components/schemas/Actor'
addons:
type: array
items:
$ref: '#/components/schemas/VMAddon'
x-go-name: Addons
assigned_at:
type: string
format: date-time
x-go-name: AssignedAt
created_at:
type: string
format: date-time
x-go-name: CreatedAt
credits_per_hour:
type: integer
format: int64
x-go-name: CreditsPerHour
direct_ssh_endpoint:
type: string
x-go-name: DirectSSHEndpoint
direct_ssh_port:
type: integer
format: int64
x-go-name: DirectSSHPort
disk_gib:
type: integer
format: int64
x-go-name: DiskGiB
distribution:
type: string
x-go-name: Distribution
expires_at:
type: string
format: date-time
x-go-name: ExpiresAt
flat_fee:
type: integer
format: int64
x-go-name: FlatFee
guid:
type: string
x-go-name: GUID
id:
type: string
x-go-name: ShortID
instance_type:
type: string
x-go-name: InstanceType
last_scheduling_status:
type: string
x-go-name: LastSchedulingStatus
name:
type: string
x-go-name: Name
network_id:
type: string
x-go-name: NetworkID
overlayfs:
type: boolean
x-go-name: Overlayfs
rbac_policy_id:
type: string
x-go-name: RBACPolicyID
running_at:
type: string
format: date-time
x-go-name: RunningAt
status:
$ref: '#/components/schemas/VMStatus'
tags:
type: array
items:
$ref: '#/components/schemas/Tag'
x-go-name: Tags
team_id:
type: string
x-go-name: TeamID
total_credits:
type: integer
format: int64
x-go-name: TotalCredits
ttl:
type: string
x-go-name: TTL
version:
type: string
x-go-name: Version
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
VMStatus:
type: string
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
CreateVMError:
type: object
properties:
maxDiskGiB:
type: integer
format: int64
x-go-name: MaxDiskGiB
maxMemoryGiB:
type: integer
format: int64
x-go-name: MaxMemoryGiB
maxVCPUs:
type: integer
format: int64
x-go-name: MaxVCPUs
message:
type: string
x-go-name: Message
validationError:
$ref: '#/components/schemas/VMValidationError'
x-go-package: github.com/replicatedhq/vandoor/handlers/vendor-api/replv3/vm
VMSupportedVersion:
type: object
properties:
version:
type: string
x-go-name: Version
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
Tag:
type: object
properties:
key:
type: string
x-go-name: Key
value:
type: string
x-go-name: Value
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/cmx/types
VMExposedPort:
type: object
properties:
exposed_port:
type: integer
format: int64
x-go-name: ExposedPort
protocol:
$ref: '#/components/schemas/PortProtocol'
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
CreateVMParametersBody:
type: object
properties:
anthropic_api_key:
description: OpenClaw VM credentials — required when Distribution == "openclaw"
type: string
x-go-name: AnthropicAPIKey
count:
type: integer
format: int64
x-go-name: Count
disk_gib:
type: integer
format: int64
x-go-name: DiskGiB
distribution:
type: string
x-go-name: Distribution
instance_type:
type: string
x-go-name: InstanceType
name:
type: string
x-go-name: Name
network_id:
type: string
x-go-name: NetworkID
network_policy:
type: string
x-go-name: NetworkPolicy
overlayfs:
description: 'Overlayfs enables overlay filesystem management for the VM rootfs on the host.
Gated by the cmx_overlayfs feature flag.'
type: boolean
x-go-name: Overlayfs
public_keys:
type: array
items:
type: string
x-go-name: PublicKeys
rbac_policy_id:
description: 'RBACPolicyID is the ID of an existing RBAC policy to assign to the VM.
When set, OIDC client credentials are generated and injected into the VM via
the Firecracker metadata service (MMDS), enabling the replicated CLI inside
the VM to authenticate with vendor-api automatically.'
type: string
x-go-name: RBACPolicyID
replicated_api_key:
description: 'ReplicatedAPIKey is a vendor-api token for the replicated CLI inside the VM.
Required for openclaw VMs when rbac_policy_id is not set. Mutually exclusive
with rbac_policy_id — exactly one must be provided for openclaw VMs.'
type: string
x-go-name: ReplicatedAPIKey
tags:
type: array
items:
$ref: '#/components/schemas/Tag'
x-go-name: Tags
telegram_bot_token:
type: string
x-go-name: TelegramBotToken
telegram_user_id:
type: string
x-go-name: TelegramUserID
ttl:
type: string
x-go-name: TTL
version:
type: string
x-go-name: Version
x-go-package: github.com/replicatedhq/vandoor/handlers/vendor-api/replv3/vm
Actor:
type: object
properties:
description:
type: string
x-go-name: Description
id:
type: string
x-go-name: ID
link:
type: string
x-go-name: Link
timestamp:
type: string
format: date-time
x-go-name: Timestamp
type:
type: string
x-go-name: Type
x-go-package: github.com/replicatedhq/vandoor/pkg/models/types
PortProtocol:
type: string
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/cmx/types
VMAddon:
type: object
properties:
created_at:
type: string
format: date-time
x-go-name: CreatedAt
guid:
type: string
x-go-name: GUID
id:
type: string
x-go-name: ShortID
port:
$ref: '#/components/schemas/VMAddonPort'
ready_at:
type: string
format: date-time
x-go-name: ReadyAt
status:
$ref: '#/components/schemas/VMAddonStatus'
terminated_at:
type: string
format: date-time
x-go-name: TerminatedAt
total_credits:
type: integer
format: int64
x-go-name: TotalCredits
vm_guid:
type: string
x-go-name: VMGUID
vm_id:
type: string
x-go-name: VMShortID
x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/vm/types
responses:
responseErrUnauthorized:
description: Return if the caller is not authorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
x-go-name: Message
createVMResponse:
description: CreateVMResponse contains the response to create a vm
content:
application/json:
schema:
type: object
properties:
vms:
type: array
items:
$ref: '#/components/schemas/VM'
x-go-name: VMs
responseErrForbidden:
description: Returned if the caller does not have the needed permission
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
message:
type: string
x-go-name: Message
messageCode:
type: string
x-go-name: MessageCode
x-go-name: Error
createVMErrorResponse:
description: CreateVMErrorResponse contains error information
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVMError'
listVMVersionsResponse:
description: ListVMVersionsResponse contains the response to list clusters
content:
application/json:
schema:
type: object
properties:
error:
type: string
x-go-name: Error
vm-versions:
type: array
items:
$ref: '#/components/schemas/VMSupportedDistributionAndVersions'
x-go-name: VMs
getVMResponse:
description: GetVMResponse contains the response to get vm details
content:
application/json:
schema:
type: object
properties:
error:
type: string
x-go-name: Error
vm:
$ref: '#/components/schemas/VM'
updateVMTTLErrorResponse:
description: UpdateVMTTLErrorResponse contains error information
content:
application/json:
schema:
type: object
properties:
message:
type: string
x-go-name: Message
createVMPortResponse:
description: CreateVMPortResponse contains the response to a create vm port request
content:
application/json:
schema:
type: object
properties:
addon:
$ref: '#/components/schemas/VMAddon'
port:
$ref: '#/components/schemas/VMPort'
updateVMTagsResponse:
description: UpdateVMTagsResponse contains the response to update a vm tags
content:
application/json:
schema:
type: object
properties:
error:
type: string
x-go-name: Error
vm:
$ref: '#/components/schemas/VM'
listVMsResponse:
description: ListVMsResponse contains the response to list vms
content:
application/json:
schema:
type: object
properties:
error:
type: string
x-go-name: Error
totalVMs:
type: integer
format: int64
x-go-name: TotalVMs
vms:
type: array
items:
$ref: '#/components/schemas/VM'
x-go-name: VMs
deleteVMResponse:
description: DeleteVMResponse contains the response to delete a vm
content:
application/json:
schema:
type: object
properties:
error:
type: string
x-go-name: Error
createVMDryRunResponse:
description: CreateVMDryRunResponse contains the response to a dry run of creating a vm
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/CreateVMError'
total_cost:
type: integer
format: int64
x-go-name: TotalCost
ttl:
type: string
x-go-name: TTL
updateVMTTLResponse:
description: UpdateVMTTLResponse contains the response to update a VM ttl
content:
application/json:
schema:
type: object
properties:
error:
type: string
x-go-name: Error
vm:
$ref: '#/components/schemas/VM'
listVMPortsResponse:
description: ListVMPortsResponse contains the response to a list vm [prts] request
content:
application/json:
schema:
type: object
properties:
addons:
type: array
items:
$ref: '#/components/schemas/VMAddon'
x-go-name: Addons
ports:
type: array
items:
$ref: '#/components/schemas/VMPort'
x-go-name: Ports
responseErrNotFound:
description: Returned on resource not found
content:
application/json:
schema:
type: object
properties:
message:
type: string
x-go-name: Message
responseErrBadRequest:
description: Returned on bad input
content:
application/json:
schema:
type: object
properties:
error_code:
description: Error code if available
type: string
x-go-name: ErrorCode
message:
description: Error message text if available
type: string
x-go-name: Message
securitySchemes:
api_key:
type: apiKey
name: Authorization
in: header