CUDO Compute Machines API

Bare-metal machines are dedicated physical servers for high-performance computing, offering full control and isolation from other users. Related guide: [Bare metal](https://www.cudocompute.com/docs/bare-metal)

Operations 8

GET /v1/machines-types List machine types #
GET /v1/machines/operating-systems List machine operating systems #
GET /v1/projects/{projectId}/machines List machines #
POST /v1/projects/{projectId}/machines Create a machine #
DELETE /v1/projects/{projectId}/machines/{id} Delete a machine #
GET /v1/projects/{projectId}/machines/{id} Get a machine #
PATCH /v1/projects/{projectId}/machines/{id} Update a machine #
POST /v1/projects/{projectId}/machines/{id}/deploy Deploy an operating system onto a machine #

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/cudo-compute:cudo-compute-machines-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

cudo-compute-machines-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: The CUDO Compute API is organized around REST. Our API uses predictable resource-oriented URLs, accepts and returns JSON-encoded requests and responses, and uses standard HTTP response codes, authentication, and verbs where possible.
  title: CUDO Compute service Machines API
  version: 1.0.0
servers:
- url: https://rest.compute.cudo.org/
security:
- bearerAuth: []
tags:
- description: 'Bare-metal machines are dedicated physical servers for high-performance computing, offering full control and isolation from other users.


    Related guide: Bare metal'
  name: Machines
paths:
  /v1/machines-types:
    get:
      description: Lists the types of bare-metal machines that can be provisioned.
      operationId: ListMachineTypes
      parameters:
      - in: query
        name: pageNumber
        schema:
          format: int32
          type: integer
      - in: query
        name: pageSize
        schema:
          format: int32
          type: integer
      - description: Return custom prices for a specific project.
        in: query
        name: projectId
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListMachineTypesResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
          description: An unexpected error response.
      summary: List machine types
      tags:
      - Machines
  /v1/machines/operating-systems:
    get:
      description: Lists operating systems that can be deployed to bare-metal machines.
      operationId: ListMachineOperatingSystems
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListMachineOperatingSystemsResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
          description: An unexpected error response.
      summary: List machine operating systems
      tags:
      - Machines
  /v1/projects/{projectId}/machines:
    get:
      description: Lists bare-metal machines within a project.
      operationId: ListMachines
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - in: query
        name: pageNumber
        schema:
          format: int32
          type: integer
      - in: query
        name: pageSize
        schema:
          format: int32
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListMachinesResponse'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
          description: An unexpected error response.
      summary: List machines
      tags:
      - Machines
    post:
      description: Creates a new bare-metal machine.
      operationId: CreateMachine
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                architecture:
                  readOnly: true
                  type: string
                commitmentTerm:
                  $ref: '#/components/schemas/CommitmentTerm'
                cpuCores:
                  format: int32
                  readOnly: true
                  type: integer
                cpuModel:
                  readOnly: true
                  type: string
                cpuSpeedMhz:
                  format: int32
                  readOnly: true
                  type: integer
                createBy:
                  readOnly: true
                  type: string
                createTime:
                  format: date-time
                  readOnly: true
                  type: string
                customSshKeys:
                  items:
                    type: string
                  type: array
                dataCenterId:
                  type: string
                diskSizeGib:
                  format: int32
                  readOnly: true
                  type: integer
                disks:
                  format: int32
                  readOnly: true
                  type: integer
                externalIpAddresses:
                  items:
                    type: string
                  readOnly: true
                  type: array
                gpuModelId:
                  readOnly: true
                  type: string
                gpus:
                  format: int32
                  readOnly: true
                  type: integer
                hostname:
                  readOnly: true
                  type: string
                id:
                  type: string
                machineTypeId:
                  type: string
                memoryGib:
                  format: int32
                  readOnly: true
                  type: integer
                os:
                  type: string
                powerState:
                  $ref: '#/components/schemas/MachinePowerState'
                priceHr:
                  $ref: '#/components/schemas/Decimal'
                sshKeySource:
                  $ref: '#/components/schemas/SshKeySource'
                startScript:
                  type: string
                state:
                  $ref: '#/components/schemas/Machine.State'
                userData:
                  description: 'DEPRECATED: use `startScript` to run a script on boot, and `sshKeySource` or `customSshKeys` to set authorized ssh keys'
                  title: userData
                  type: string
                  deprecated: true
              required:
              - dataCenterId
              - id
              - machineTypeId
              - os
              title: Create machine params
              type: object
        description: Create machine params
        required: true
        x-originalParamName: machine
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Machine'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
          description: An unexpected error response.
      summary: Create a machine
      tags:
      - Machines
  /v1/projects/{projectId}/machines/{id}:
    delete:
      description: Deletes a bare-metal machine. Machines that are still within a commitment term cannot be deleted.
      operationId: DeleteMachine
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
          description: An unexpected error response.
      summary: Delete a machine
      tags:
      - Machines
    get:
      description: Gets the details of a bare-metal machine.
      operationId: GetMachine
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Machine'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
          description: An unexpected error response.
      summary: Get a machine
      tags:
      - Machines
    patch:
      description: Updates a bare-metal machine.
      operationId: UpdateMachine
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                architecture:
                  readOnly: true
                  type: string
                commitmentTerm:
                  $ref: '#/components/schemas/CommitmentTerm'
                cpuCores:
                  format: int32
                  readOnly: true
                  type: integer
                cpuModel:
                  readOnly: true
                  type: string
                cpuSpeedMhz:
                  format: int32
                  readOnly: true
                  type: integer
                createBy:
                  readOnly: true
                  type: string
                createTime:
                  format: date-time
                  readOnly: true
                  type: string
                customSshKeys:
                  items:
                    type: string
                  type: array
                dataCenterId:
                  type: string
                diskSizeGib:
                  format: int32
                  readOnly: true
                  type: integer
                disks:
                  format: int32
                  readOnly: true
                  type: integer
                externalIpAddresses:
                  items:
                    type: string
                  readOnly: true
                  type: array
                gpuModelId:
                  readOnly: true
                  type: string
                gpus:
                  format: int32
                  readOnly: true
                  type: integer
                hostname:
                  readOnly: true
                  type: string
                machineTypeId:
                  type: string
                memoryGib:
                  format: int32
                  readOnly: true
                  type: integer
                os:
                  type: string
                powerState:
                  $ref: '#/components/schemas/MachinePowerState'
                priceHr:
                  $ref: '#/components/schemas/Decimal'
                sshKeySource:
                  $ref: '#/components/schemas/SshKeySource'
                startScript:
                  type: string
                state:
                  $ref: '#/components/schemas/Machine.State'
                userData:
                  description: 'DEPRECATED: use `startScript` to run a script on boot, and `sshKeySource` or `customSshKeys` to set authorized ssh keys'
                  title: userData
                  type: string
                  deprecated: true
              required:
              - dataCenterId
              - machineTypeId
              - os
              title: Update machine params
              type: object
        description: Update machine params
        required: true
        x-originalParamName: machine
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Machine'
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
          description: An unexpected error response.
      summary: Update a machine
      tags:
      - Machines
  /v1/projects/{projectId}/machines/{id}/deploy:
    post:
      description: Deploys an operating system onto a bare-metal machine. All data on the machine will be lost.
      operationId: DeployMachineOS
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeployMachineOSBody'
        required: true
        x-originalParamName: body
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: A successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
          description: An unexpected error response.
      summary: Deploy an operating system onto a machine
      tags:
      - Machines
components:
  schemas:
    Image:
      properties:
        description:
          type: string
        displayName:
          type: string
        id:
          type: string
        installedPackages:
          items:
            $ref: '#/components/schemas/Package'
          type: array
        name:
          type: string
        platform:
          type: string
        sizeGib:
          format: int32
          type: integer
      required:
      - id
      - name
      - description
      - displayName
      - platform
      - sizeGib
      - installedPackages
      type: object
    Package:
      properties:
        description:
          type: string
        name:
          type: string
        version:
          type: string
      required:
      - name
      - description
      - version
      type: object
    SshKeySource:
      default: SSH_KEY_SOURCE_UNKNOWN
      enum:
      - SSH_KEY_SOURCE_UNKNOWN
      - SSH_KEY_SOURCE_PROJECT
      - SSH_KEY_SOURCE_USER
      - SSH_KEY_SOURCE_NONE
      type: string
    Decimal:
      description: 'A representation of a decimal value, such as 2.5. Clients may convert values

        into language-native decimal formats, such as Java''s [BigDecimal][] or

        Python''s [decimal.Decimal][].


        [BigDecimal]:

        https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html

        [decimal.Decimal]: https://docs.python.org/3/library/decimal.html'
      properties:
        value:
          description: "The decimal value, as a string.\n\nThe string representation consists of an optional sign, `+` (`U+002B`)\nor `-` (`U+002D`), followed by a sequence of zero or more decimal digits\n(\"the integer\"), optionally followed by a fraction, optionally followed\nby an exponent.\n\nThe fraction consists of a decimal point followed by zero or more decimal\ndigits. The string must contain at least one digit in either the integer\nor the fraction. The number formed by the sign, the integer and the\nfraction is referred to as the significand.\n\nThe exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`)\nfollowed by one or more decimal digits.\n\nServices **should** normalize decimal values before storing them by:\n\n  - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`).\n  - Replacing a zero-length integer value with `0` (`.5` -> `0.5`).\n  - Coercing the exponent character to lower-case (`2.5E8` -> `2.5e8`).\n  - Removing an explicitly-provided zero exponent (`2.5e0` -> `2.5`).\n\nServices **may** perform additional normalization based on its own needs\nand the internal decimal implementation selected, such as shifting the\ndecimal point and exponent value together (example: `2.5e-1` <-> `0.25`).\nAdditionally, services **may** preserve trailing zeroes in the fraction\nto indicate increased precision, but are not required to do so.\n\nNote that only the `.` character is supported to divide the integer\nand the fraction; `,` **should not** be supported regardless of locale.\nAdditionally, thousand separators **should not** be supported. If a\nservice does support them, values **must** be normalized.\n\nThe ENBF grammar is:\n\n    DecimalString =\n      [Sign] Significand [Exponent];\n\n    Sign = '+' | '-';\n\n    Significand =\n      Digits ['.'] [Digits] | [Digits] '.' Digits;\n\n    Exponent = ('e' | 'E') [Sign] Digits;\n\n    Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' };\n\nServices **should** clearly document the range of supported values, the\nmaximum supported precision (total number of digits), and, if applicable,\nthe scale (number of digits after the decimal point), as well as how it\nbehaves when receiving out-of-bounds values.\n\nServices **may** choose to accept values passed as input even when the\nvalue has a higher precision or scale than the service supports, and\n**should** round the value to fit the supported scale. Alternatively, the\nservice **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC)\nif precision would be lost.\n\nServices **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in\ngRPC) if the service receives a value outside of the supported range."
          type: string
      type: object
    MachineTypePrice:
      properties:
        commitmentTerm:
          $ref: '#/components/schemas/CommitmentTerm'
        dataCenterId:
          type: string
        ipv4PriceHr:
          $ref: '#/components/schemas/Decimal'
        machineTypeId:
          type: string
        priceHr:
          $ref: '#/components/schemas/Decimal'
      required:
      - dataCenterId
      - machineTypeId
      - commitmentTerm
      - priceHr
      - ipv4PriceHr
      type: object
    ListMachineOperatingSystemsResponse:
      properties:
        images:
          items:
            $ref: '#/components/schemas/Image'
          type: array
      required:
      - images
      type: object
    CommitmentTerm:
      default: COMMITMENT_TERM_NONE
      enum:
      - COMMITMENT_TERM_NONE
      - COMMITMENT_TERM_1_MONTH
      - COMMITMENT_TERM_3_MONTHS
      - COMMITMENT_TERM_6_MONTHS
      - COMMITMENT_TERM_12_MONTHS
      - COMMITMENT_TERM_24_MONTHS
      - COMMITMENT_TERM_36_MONTHS
      - COMMITMENT_TERM_60_MONTHS
      type: string
    Status:
      properties:
        code:
          format: int32
          type: integer
        details:
          items:
            $ref: '#/components/schemas/Any'
          type: array
        message:
          type: string
      type: object
    NetworkType:
      default: NETWORK_TYPE_UNSPECIFIED
      enum:
      - NETWORK_TYPE_UNSPECIFIED
      - ETHERNET
      - INFINIBAND
      type: string
    MachinePowerState:
      default: MACHINE_POWER_STATE_UNSPECIFIED
      enum:
      - MACHINE_POWER_STATE_UNSPECIFIED
      - 'ON'
      - 'OFF'
      - POWERING_ON
      - POWERING_OFF
      - REBOOTING
      type: string
    Machine:
      properties:
        architecture:
          readOnly: true
          type: string
        commitmentTerm:
          $ref: '#/components/schemas/CommitmentTerm'
        cpuCores:
          format: int32
          readOnly: true
          type: integer
        cpuModel:
          readOnly: true
          type: string
        cpuSpeedMhz:
          format: int32
          readOnly: true
          type: integer
        createBy:
          readOnly: true
          type: string
        createTime:
          format: date-time
          readOnly: true
          type: string
        customSshKeys:
          items:
            type: string
          type: array
        dataCenterId:
          type: string
        diskSizeGib:
          format: int32
          readOnly: true
          type: integer
        disks:
          format: int32
          readOnly: true
          type: integer
        externalIpAddresses:
          items:
            type: string
          readOnly: true
          type: array
        gpuModelId:
          readOnly: true
          type: string
        gpus:
          format: int32
          readOnly: true
          type: integer
        hostname:
          readOnly: true
          type: string
        id:
          type: string
        machineTypeId:
          type: string
        memoryGib:
          format: int32
          readOnly: true
          type: integer
        os:
          type: string
        powerState:
          $ref: '#/components/schemas/MachinePowerState'
        priceHr:
          $ref: '#/components/schemas/Decimal'
        projectId:
          type: string
        sshKeySource:
          $ref: '#/components/schemas/SshKeySource'
        startScript:
          type: string
        state:
          $ref: '#/components/schemas/Machine.State'
        userData:
          description: 'DEPRECATED: use `startScript` to run a script on boot, and `sshKeySource` or `customSshKeys` to set authorized ssh keys'
          title: userData
          type: string
          deprecated: true
      required:
      - dataCenterId
      - id
      - machineTypeId
      - os
      - projectId
      type: object
    ListMachineTypesResponse:
      properties:
        machineTypes:
          items:
            $ref: '#/components/schemas/MachineType'
          type: array
        pageNumber:
          format: int32
          type: integer
        pageSize:
          format: int32
          type: integer
        totalCount:
          format: int32
          type: integer
      required:
      - totalCount
      - pageNumber
      - pageSize
      type: object
    ListMachinesResponse:
      properties:
        machines:
          items:
            $ref: '#/components/schemas/Machine'
          type: array
        pageNumber:
          format: int32
          type: integer
        pageSize:
          format: int32
          type: integer
        totalCount:
          format: int32
          type: integer
      required:
      - totalCount
      - pageNumber
      - pageSize
      type: object
    MachineType:
      properties:
        architecture:
          type: string
        cpuCores:
          format: int32
          type: integer
        cpuModel:
          type: string
        cpuSpeedMhz:
          format: int32
          type: integer
        dataCenterId:
          description: The data center in which this machine type is available.
          type: string
        diskSizeGib:
          format: int32
          type: integer
        disks:
          format: int32
          type: integer
        gpuModelId:
          type: string
        gpus:
          format: int32
          type: integer
        id:
          description: The unique identifier for this machine type within the data center.
          type: string
        machinesFree:
          description: The number of machines available for deployment.
          format: int32
          readOnly: true
          type: integer
        memoryGib:
          format: int32
          type: integer
        networkType:
          $ref: '#/components/schemas/NetworkType'
        prices:
          description: The list of prices available for this machine type for varying commitment terms.
          items:
            $ref: '#/components/schemas/MachineTypePrice'
          readOnly: true
          type: array
      required:
      - dataCenterId
      - id
      - architecture
      - cpuCores
      - cpuSpeedMhz
      - cpuModel
      - memoryGib
      - disks
      - diskSizeGib
      - gpus
      - networkType
      type: object
    Any:
      additionalProperties: {}
      properties:
        '@type':
          type: string
      type: object
    Machine.State:
      default: STATE_UNSPECIFIED
      enum:
      - STATE_UNSPECIFIED
      - CREATING
      - ACTIVE
      - DEPLOYING
      - DELETING
      - FAILED
      - UPDATING
      type: string
    DeployMachineOSBody:
      properties:
        customSshKeys:
          items:
            type: string
          type: array
        os:
          type: string
        sshKeySource:
          $ref: '#/components/schemas/SshKeySource'
        startScript:
          type: string
        userData:
          description: 'DEPRECATED: use `startScript` to run a script on boot, and `sshKeySource` or `customSshKeys` to set authorized ssh keys'
          title: userData
          type: string
          deprecated: true
      required:
      - os
      type: object
  securitySchemes:
    bearerAuth:
      description: API key authentication. API keys should be passed using the format `Bearer API_KEY`.
      in: header
      name: Authorization
      type: apiKey
x-provenance:
  method: harvested
  publisher: CUDO Compute
  source: https://docs.cudocompute.com/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)