Replicated vms API

The vms API from Replicated — 8 operation(s) for vms.

Operations 9

POST /vm Create a test vm. #
GET /vm/versions List vm versions. #
GET /vm/{vm_id} Get the details for a test vm. #
DELETE /vm/{vm_id} Delete a test vm. #
POST /vm/{vm_id}/port Exposes a port on a vm. #
GET /vm/{vm_id}/ports Lists ports for a vm. #
PUT /vm/{vm_id}/tags Update the tags for a vm. #
PUT /vm/{vm_id}/ttl Update ttl for a VM. #
GET /vms List test vms. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/replicated-vms-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

replicated-vms-api-openapi.yml Raw ↑
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