Cast AI Machine Learning API

MachineLearningAPI is a transparent gRPC/REST proxy that forwards machine-learning prediction requests from in-cluster Kentroller agents to the underlying spot-interruption-predictor service. Kent-server does not interpret or validate model selection — it only authenticates the caller, records audit context, and forwards the request verbatim. Org-level policy (which models an org is allowed to call) lives in the model provisioning system and is out of scope for this proxy.

Operations 1

POST /kent/v1alpha/organizations/{organizationId}/clusters/{clusterId}/machine-learning/spot-interruptions:predict Proxies a spot interruption prediction request to the ML predictor #

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/kimchi:kimchi-machinelearningapi-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

kimchi-machinelearningapi-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kent Machine Learning API
  version: 0.0.1
  description: 'MachineLearningAPI is a transparent gRPC/REST proxy that forwards machine-learning

    prediction requests from in-cluster Kentroller agents to the underlying

    spot-interruption-predictor service.


    Kent-server does not interpret or validate model selection — it only authenticates

    the caller, records audit context, and forwards the request verbatim. Org-level

    policy (which models an org is allowed to call) lives in the model provisioning

    system and is out of scope for this proxy.'
servers:
- url: https://api.cast.ai/
  description: US endpoint
- url: https://api.eu.cast.ai/
  description: EU endpoint
security:
- BearerAuth: []
- ApiKeyAuth: []
tags:
- name: MachineLearningAPI
  description: 'MachineLearningAPI is a transparent gRPC/REST proxy that forwards machine-learning

    prediction requests from in-cluster Kentroller agents to the underlying

    spot-interruption-predictor service.


    Kent-server does not interpret or validate model selection — it only authenticates

    the caller, records audit context, and forwards the request verbatim. Org-level

    policy (which models an org is allowed to call) lives in the model provisioning

    system and is out of scope for this proxy.'
paths:
  /kent/v1alpha/organizations/{organizationId}/clusters/{clusterId}/machine-learning/spot-interruptions:predict:
    post:
      tags:
      - MachineLearningAPI
      summary: Proxies a spot interruption prediction request to the ML predictor
      description: 'PredictSpotInterruption proxies a request to the spot-interruption-predictor.

        Caller-supplied model_id and per-node inputs are forwarded without modification.'
      operationId: MachineLearningAPI_PredictSpotInterruption
      parameters:
      - name: organizationId
        in: path
        description: "Organization owning the cluster. Used by Kent-server for audit logging and\n authorization. Must match the cluster's organization."
        required: true
        schema:
          type: string
      - name: clusterId
        in: path
        description: "Identifier of the cluster initiating the prediction request. Used by Kent-server\n for audit logging. Not forwarded to the predictor."
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PredictSpotInterruptionRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PredictSpotInterruptionResponse'
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
components:
  schemas:
    Status:
      type: object
      properties:
        code:
          type: integer
          description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
          format: int32
        message:
          type: string
          description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
        details:
          type: array
          items:
            $ref: '#/components/schemas/GoogleProtobufAny'
          description: A list of messages that carry the error details.  There is a common set of message types for APIs to use.
      description: 'The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).'
    PredictSpotInterruptionResponse:
      type: object
      properties:
        predictions:
          readOnly: true
          type: array
          items:
            $ref: '#/components/schemas/Prediction'
          description: The predictions for the best algorithm.
      description: Response message for predicting the best algorithm for the given inputs.
    PredictSpotInterruptionInput:
      required:
      - id
      - cloud
      - region
      - availabilityZoneId
      - instanceType
      - nodeCreateTime
      type: object
      properties:
        id:
          type: string
          description: "A unique node identifier, used to correlate requests and responses.\n Callers use free-form identifiers (NodeClaim names, instance types) —\n not UUIDs — so this is only required to be non-empty."
        cloud:
          enum:
          - CLOUD_UNSPECIFIED
          - AWS
          - GCP
          - AZURE
          type: string
          description: The cloud provider where the node is running.
          format: enum
        region:
          type: string
          description: e.g. "us-west-2", "eu-central-1"
        availabilityZoneId:
          type: string
          description: "A unique, cloud-specific identifier for a zone a node is in\n e.g. https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html (for aws)"
        instanceType:
          type: string
          description: e.g. "t3.medium", "n1-standard-4"
        nodeCreateTime:
          type: string
          description: ISO 8601 format timestamp when the node was created.
          format: date-time
        rebalanceRecommendationTime:
          type: string
          description: "optional - only on AWS\n ISO 8601 format timestamp when the rebalance recommendation was received."
          format: date-time
      description: Input parameters for a single spot interruption prediction.
    Prediction:
      type: object
      properties:
        id:
          readOnly: true
          type: string
          description: "The unique node identifier from the request, used to correlate requests and responses.\n Echoes the free-form request id (NodeClaim name or instance type)."
        interruption:
          readOnly: true
          type: boolean
          description: Whether the spot instance is predicted to be interrupted within the next default time horizon.
        probability:
          readOnly: true
          type: number
          description: The probability of interruption within the next default time horizon.
          format: float
        predictionId:
          readOnly: true
          type: string
          description: "Unique identifier of this prediction, minted by the predictor service.\n Consumers persist it to correlate a single prediction across stores\n (PostgreSQL, ClickHouse) and published messages."
      description: Response message containing the spot interruption prediction and its probability.
    PredictSpotInterruptionRequest:
      required:
      - nodes
      type: object
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/PredictSpotInterruptionInput'
          description: A list of spot nodes to predict interruptions for
        modelId:
          type: string
          description: "Backend selects the best-fit model based on the input features\n unless for specific cases e.g. e2e testing, a/b testing, etc."
      description: Request message for predicting spot interruptions for the given inputs.
    GoogleProtobufAny:
      type: object
      properties:
        '@type':
          type: string
          description: The type of the serialized message.
      additionalProperties: true
      description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
x-provenance:
  method: searched
  source: https://docs.cast.ai/reference
  harvested: '2026-10-20'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://docs.cast.ai/reference/awsdataproxyapi_getdata.md
  - https://docs.cast.ai/reference/azuredataproxyapi_getdata.md
  - https://docs.cast.ai/reference/clustersapi_onboardclusterscript-1.md
  - https://docs.cast.ai/reference/featuresapi_configurefeature.md
  - https://docs.cast.ai/reference/featuresapi_getclusterfeatureinstallscript.md
  - https://docs.cast.ai/reference/featuresapi_getclusterinstallscript.md
  - https://docs.cast.ai/reference/featuresapi_getfeature.md
  - https://docs.cast.ai/reference/featuresapi_getinstallscript.md
  - https://docs.cast.ai/reference/featuresapi_getorganizationfeatureinstallscript.md
  - https://docs.cast.ai/reference/featuresapi_getorganizationinstallscript.md
  - https://docs.cast.ai/reference/featuresapi_getoverview.md
  - https://docs.cast.ai/reference/featuresapi_getsummary.md
  - https://docs.cast.ai/reference/featuresapi_listfeaturecompatibilities.md
  - https://docs.cast.ai/reference/featuresapi_listfeatureconfigs.md
  - https://docs.cast.ai/reference/featuresapi_listfeatures.md
  - https://docs.cast.ai/reference/kentrollerapi_creatediagnosticreport.md
  - https://docs.cast.ai/reference/kentrollerapi_getdiagnosticreport.md
  - https://docs.cast.ai/reference/kentrollerapi_listdiagnosticreports.md
  - https://docs.cast.ai/reference/machinelearningapi_predictspotinterruption.md
  - https://docs.cast.ai/reference/nodeclassesapi_listaksnodeclasses.md
  - https://docs.cast.ai/reference/nodeclassesapi_listec2nodeclasses.md
  - https://docs.cast.ai/reference/nodeclassesapi_listnodeclasses.md
  - https://docs.cast.ai/reference/nodeclassesapi_updateaksnodeclass.md
  - https://docs.cast.ai/reference/nodeclassesapi_updateec2nodeclass.md
  - https://docs.cast.ai/reference/nodeclassesapi_updatenodeclass.md
  - https://docs.cast.ai/reference/nodeoverlaysapi_getnodeoverlay.md
  - https://docs.cast.ai/reference/nodeoverlaysapi_listnodeoverlays.md
  - https://docs.cast.ai/reference/nodepoolsapi_listnodepools.md
  - https://docs.cast.ai/reference/nodepoolsapi_updatenodepool.md
  - https://docs.cast.ai/reference/nodesapi_deletenode.md
  - https://docs.cast.ai/reference/nodesapi_drainnode.md
  - https://docs.cast.ai/reference/nodesapi_interruptnode.md
  - https://docs.cast.ai/reference/operationsapi_getoperation-3.md
  - https://docs.cast.ai/reference/opspilotreadapi_getresource.md
  - https://docs.cast.ai/reference/opspilotreadapi_listresources.md
  - https://docs.cast.ai/reference/rebalancingapi_cancelrebalancingplan.md
  - https://docs.cast.ai/reference/rebalancingapi_createrebalancingplan.md
  - https://docs.cast.ai/reference/rebalancingapi_executerebalancingplan.md
  - https://docs.cast.ai/reference/rebalancingapi_getrebalancingconstraints.md
  - https://docs.cast.ai/reference/rebalancingapi_getrebalancingplan.md
  - https://docs.cast.ai/reference/rebalancingapi_listrebalancingplans.md
  - https://docs.cast.ai/reference/rebalancingapi_listworkloads.md
  - https://docs.cast.ai/reference/scheduledrebalancingapi_createrebalancingschedule-1.md
  - https://docs.cast.ai/reference/scheduledrebalancingapi_deleterebalancingschedule-1.md
  - https://docs.cast.ai/reference/scheduledrebalancingapi_getrebalancingschedule-1.md
  - https://docs.cast.ai/reference/scheduledrebalancingapi_listrebalancingschedules-1.md
  - https://docs.cast.ai/reference/scheduledrebalancingapi_togglerebalancingschedule.md
  - https://docs.cast.ai/reference/scheduledrebalancingapi_updaterebalancingschedule-1.md
  - https://docs.cast.ai/reference/statusapi_getkentstatus.md
  merge:
    pages: 49
    deduped: 542
    conflicts_kept_first: 0