Cast AI Node Pools API

Provides an API to manage Karpenter NodePools

Operations 2

GET /kent/v1alpha/organizations/{organizationId}/clusters/{clusterId}/node-pools Lists NodePools #
PUT /kent/v1alpha/organizations/{organizationId}/clusters/{clusterId}/node-pools/{name} Updates a NodePool #

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-nodepoolsapi-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-nodepoolsapi-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kent Node Pools API
  version: 0.0.1
  description: Provides an API to manage Karpenter NodePools
servers:
- url: https://api.cast.ai/
  description: US endpoint
- url: https://api.eu.cast.ai/
  description: EU endpoint
security:
- BearerAuth: []
- ApiKeyAuth: []
tags:
- name: NodePoolsAPI
  description: Provides an API to manage Karpenter NodePools
paths:
  /kent/v1alpha/organizations/{organizationId}/clusters/{clusterId}/node-pools:
    get:
      tags:
      - NodePoolsAPI
      summary: Lists NodePools
      description: add listnodepools rpc
      operationId: NodePoolsAPI_ListNodePools
      parameters:
      - name: organizationId
        in: path
        description: The ID of the Organization.
        required: true
        schema:
          type: string
      - name: clusterId
        in: path
        description: The cluster to be registered.
        required: true
        schema:
          type: string
      - name: page.limit
        in: query
        description: Defines the number of items that should be returned
        schema:
          type: string
      - name: page.cursor
        in: query
        description: "Cursor that defines token indicating where to start the next page.\n Empty value indicates to start from beginning of the dataset."
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListNodePoolsResponse'
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
  /kent/v1alpha/organizations/{organizationId}/clusters/{clusterId}/node-pools/{name}:
    put:
      tags:
      - NodePoolsAPI
      summary: Updates a NodePool
      description: Updates an existing NodePool.
      operationId: NodePoolsAPI_UpdateNodePool
      parameters:
      - name: organizationId
        in: path
        description: The ID of the Organization.
        required: true
        schema:
          type: string
      - name: clusterId
        in: path
        description: The ID of the cluster whose NodePool is being updated.
        required: true
        schema:
          type: string
      - name: name
        in: path
        description: The name of the NodePool being updated.
        required: true
        schema:
          type: string
      - name: expectedResourceVersion
        in: query
        description: The resourceVersion observed by the UI on the prior read.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodePool'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateNodePoolResponse'
        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).'
    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.
    NodeClaimTemplateSpec:
      type: object
      properties:
        taints:
          type: array
          items:
            $ref: '#/components/schemas/Taint'
          description: Taints will be applied to the NodeClaim's node.
        startupTaints:
          type: array
          items:
            $ref: '#/components/schemas/Taint'
          description: StartupTaints are taints that are applied to nodes upon startup which are expected to be removed automatically
        requirements:
          type: array
          items:
            $ref: '#/components/schemas/Requirement'
          description: Requirements are layered with GetLabels and applied to every node.
        nodeClassRef:
          allOf:
          - $ref: '#/components/schemas/NodeClassRef'
          description: NodeClassRef is a reference to an object that defines provider specific configuration
        terminationGracePeriod:
          pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
          type: string
          description: "TerminationGracePeriod is the maximum duration the controller will wait before forcefully deleting the pods on a node, measured from when deletion is first initiated.\n JSON format: protojson Duration (seconds with \"s\" suffix, e.g. \"172800s\"). No CRD\n default: when absent, karpenter waits indefinitely for pods to drain (absent is a\n persistent state). \"Never\" is not a valid value for this field."
        expireAfter:
          type: string
          description: "ExpireAfter is the duration the controller will wait before terminating a node.\n Pass-through string in the k8s format: Go duration (\"720h\", \"2592000s\") or \"Never\"\n for no expiry. When the key is absent on an update, the k8s API server materializes\n the CRD default \"720h\". List emits the Go-normalized form (e.g. \"720h0m0s\") or \"Never\"."
      description: NodeClaimTemplateSpec describes the desired state of the NodeClaim in the NodePool
    Taint:
      type: object
      properties:
        key:
          type: string
          description: Key is the identifier for the taint.
        value:
          type: string
          description: Value is the string value of the taint.
        effect:
          type: string
          description: Effect is the effect of the taint.
      description: A Kubernetes taint.
    NodePool:
      type: object
      properties:
        id:
          type: string
          description: ID is the unique identifier of the NodePool.
        apiVersion:
          type: string
          description: APIVersion defines the versioned schema of this representation of an object.
        kind:
          type: string
          description: Kind is a string value representing the REST resource this object represents.
        metadata:
          allOf:
          - $ref: '#/components/schemas/Metadata'
          description: "Metadata contains the standard object metadata.\n Deprecated: use canonical_metadata and the top-level resource_version\n instead. Retained (and still populated) for backward compatibility."
        spec:
          allOf:
          - $ref: '#/components/schemas/NodePoolSpec'
          description: Spec is the specification of the desired behavior of the NodePool.
        status:
          allOf:
          - $ref: '#/components/schemas/NodePoolStatus'
          description: Status represents information about the status of a NodePool.
        resourceVersion:
          type: string
          description: "ResourceVersion is the Kubernetes resourceVersion of this NodePool as\n served by the API server. Read it from the List response and pass it as\n expected_resource_version on UpdateNodePool for optimistic concurrency.\n It is a top-level field (not part of metadata) because it is the API's\n concurrency token rather than descriptive metadata, matching\n expected_resource_version / applied_resource_version on the update\n contract. On update requests the value sent here is ignored."
        canonicalMetadata:
          allOf:
          - $ref: '#/components/schemas/ObjectMetadata'
          description: "CanonicalMetadata is the standard object metadata. Replaces the\n deprecated metadata field."
      description: Karpenter NodePool definition
    ListNodePoolsResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/NodePool'
          description: The list of NodePools.
        nextPageCursor:
          type: string
          description: The cursor to the next page.
      description: Response message for listing NodePools.
    Requirement:
      type: object
      properties:
        key:
          type: string
          description: 'key: The label key for the requirement (e.g., "kubernetes.io/arch").'
        operator:
          type: string
          description: 'operator: The operator for matching (e.g., "In", "NotIn", "Exists", "DoesNotExist").'
        values:
          type: array
          items:
            type: string
          description: 'values: The list of acceptable values for the requirement (e.g., ["amd64"], ["arm64"]).'
      description: 'Requirement: A requirement constraint for pod scheduling (typically architecture).'
    NodePoolStatus:
      type: object
      properties:
        resources:
          type: object
          additionalProperties:
            type: string
          description: Resources is the list of resources that have been provisioned.
        nodeClassObservedGeneration:
          type: string
          description: NodeClassObservedGeneration represents the observed nodeClass generation for referenced nodeClass.
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/Condition'
          description: Conditions contains signals for health and readiness
      description: NodePoolStatus defines the observed state of NodePool
    Condition:
      type: object
      properties:
        lastTransitionTime:
          type: string
          description: 'last_transition_time: The last time the condition transitioned from one status to another (RFC3339 format).'
          format: date-time
        status:
          type: string
          description: 'status: The status of the condition ("True", "False", or "Unknown").'
        type:
          type: string
          description: 'type: The type of condition (e.g., "Ready", "SubnetsReady", "SecurityGroupsReady", "AMIsReady").'
        message:
          type: string
          description: 'message: A human-readable message indicating details about the transition.'
        reason:
          type: string
          description: 'reason: A programmatic identifier indicating the reason for the condition''s last transition.'
      description: 'Condition: Represents the state of a particular aspect of the EC2NodeClass resource.'
    ObjectMetadata:
      type: object
      properties:
        name:
          type: string
          description: "name: The unique name of the resource. Cluster-scoped for the karpenter\n CRDs using this message."
        namespace:
          type: string
          description: "namespace: The namespace for namespaced resources. Always empty for\n the cluster-scoped karpenter CRDs; kept for ObjectMeta fidelity."
        labels:
          type: object
          additionalProperties:
            type: string
          description: 'labels: Key-value pairs used for organizing and selecting resources.'
        annotations:
          type: object
          additionalProperties:
            type: string
          description: 'annotations: Additional metadata for tools and libraries.'
      description: "ObjectMetadata is the canonical, shared object metadata for the karpenter\n CRD resources exposed by the Kent API (NodePool, EC2NodeClass,\n AKSNodeClass). It replaces the per-API Metadata/ObjectMeta messages,\n which are deprecated and retained only for backward compatibility until\n consumers migrate to the canonical_metadata field.\n\n resourceVersion is deliberately NOT part of this message: it is the API's\n concurrency token rather than descriptive metadata, and lives as the\n top-level resource_version field on each CRD message (paired with\n expected_resource_version / applied_resource_version on the update\n contract)."
    Budget:
      type: object
      properties:
        reasons:
          type: array
          items:
            type: string
          description: Reasons is a list of disruption methods that this budget applies to.
        nodes:
          type: string
          description: Nodes dictates the maximum number of NodeClaims owned by this NodePool that can be terminating at once.
        schedule:
          type: string
          description: Schedule specifies when a budget begins being active, following the upstream cronjob syntax
        duration:
          type: string
          description: Duration determines how long a Budget is active since each Schedule hit.
      description: Budget defines when Karpenter will restrict the number of Node Claims that can be terminating simultaneously.
    Disruption:
      type: object
      properties:
        consolidateAfter:
          type: string
          description: "ConsolidateAfter is the duration the controller will wait before attempting to\n terminate nodes that are underutilized, or \"Never\" to disable consolidation.\n Required by the karpenter CRD whenever spec.disruption is present: no default\n materializes, and an absent value is a validation error."
        consolidationPolicy:
          type: string
          description: ConsolidationPolicy describes which nodes Karpenter can disrupt through its consolidation algorithm
        budgets:
          type: array
          items:
            $ref: '#/components/schemas/Budget'
          description: Budgets is a list of Budgets.
      description: Disruption contains the parameters that relate to Karpenter's disruption logic
    NodeClaimTemplate:
      type: object
      properties:
        metadata:
          allOf:
          - $ref: '#/components/schemas/Metadata'
          description: Standard object metadata.
        spec:
          allOf:
          - $ref: '#/components/schemas/NodeClaimTemplateSpec'
          description: Spec is the specification of the desired behavior of the NodeClaim.
      description: NodeClaimTemplate is a template of possibilities for the provisioning logic to launch a NodeClaim with.
    NodeClassRef:
      type: object
      properties:
        kind:
          type: string
          description: Kind of the referent;
        name:
          type: string
          description: Name of the referent;
        group:
          type: string
          description: Group API version of the referent
      description: A reference to an object that defines provider specific configuration
    Metadata:
      type: object
      properties:
        name:
          type: string
          description: Name must be unique within a namespace. NodeOverlays are cluster-scoped.
        labels:
          type: object
          additionalProperties:
            type: string
          description: Labels are key/value pairs that can be used to organize and categorize objects.
        annotations:
          type: object
          additionalProperties:
            type: string
          description: Annotations are unstructured key/value pairs that can be used by external tooling.
        createTime:
          type: string
          description: CreationTimestamp is when this NodeOverlay was created.
          format: date-time
      description: Standard object metadata.
    NodePoolSpec:
      type: object
      properties:
        template:
          allOf:
          - $ref: '#/components/schemas/NodeClaimTemplate'
          description: Template contains the template of possibilities for the provisioning logic to launch a NodeClaim with.
        disruption:
          allOf:
          - $ref: '#/components/schemas/Disruption'
          description: Disruption contains the parameters that relate to Karpenter's disruption logic
        limits:
          type: object
          additionalProperties:
            type: string
          description: Limits define a set of bounds for provisioning capacity.
        weight:
          type: integer
          description: Weight is the priority given to the nodepool during scheduling
          format: int32
      description: NodePoolSpec is the top level nodepool specificatio
    UpdateNodePoolResponse:
      type: object
      properties:
        nodePool:
          allOf:
          - $ref: '#/components/schemas/NodePool'
          description: The updated NodePool.
        appliedResourceVersion:
          type: string
          description: The new resourceVersion after the write.
      description: Response message for updating a NodePool.
  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