Cast AI Policies V2API API

PoliciesV2API handles interaction with V2 customer policies. V2 removes deprecated fields and eliminates sync with node templates.

Operations 2

GET /cluster-autoscaler/v2/clusters/{clusterId}/policies Get cluster policies #
PATCH /cluster-autoscaler/v2/clusters/{clusterId}/policies Update cluster policies #

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-policiesv2api-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-policiesv2api-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cluster Autoscaler Policies V2API API
  version: 0.0.1
  description: 'PoliciesV2API handles interaction with V2 customer policies.

    V2 removes deprecated fields and eliminates sync with node templates.'
servers:
- url: https://api.cast.ai/
  description: US endpoint
- url: https://api.eu.cast.ai/
  description: EU endpoint
security:
- BearerAuth: []
- ApiKeyAuth: []
tags:
- name: PoliciesV2API
  description: 'PoliciesV2API handles interaction with V2 customer policies.

    V2 removes deprecated fields and eliminates sync with node templates.'
paths:
  /cluster-autoscaler/v2/clusters/{clusterId}/policies:
    get:
      tags:
      - PoliciesV2API
      summary: Get cluster policies
      description: Gets V2 policies configuration for the target cluster.
      operationId: PoliciesV2API_GetClusterPolicies
      parameters:
      - name: clusterId
        in: path
        description: The ID of the cluster.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoliciesV2'
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
    patch:
      tags:
      - PoliciesV2API
      summary: Update cluster policies
      description: Updates cluster's V2 policies configuration.
      operationId: PoliciesV2API_UpdateClusterPolicies
      parameters:
      - name: clusterId
        in: path
        description: The ID of the cluster.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoliciesV2'
            example:
              enabled: true
              unschedulablePods:
                enabled: true
                podPinner:
                  enabled: true
                partialTemplateMatchingEnabled: false
              clusterLimits:
                enabled: true
                cpu:
                  maxCores: 100
              nodeDownscaler:
                emptyNodesEnabled: true
                emptyNodesDelay: 300s
              scopedMode: false
              version: '1'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoliciesV2'
        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.
    UnschedulablePodsPolicy:
      type: object
      properties:
        enabled:
          type: boolean
          default: false
          description: Enable/disable unschedulable pods detection policy.
        podPinner:
          allOf:
          - $ref: '#/components/schemas/PodPinner'
          description: Defines the CAST AI Pod Pinner component settings.
        partialTemplateMatchingEnabled:
          type: boolean
          default: false
          description: Marks whether partial matching should be used when deciding which custom node template to select.
      description: "UnschedulablePodsPolicy defines autoscaler's behavior when unschedulable pods are detected.\n V2 Simplification:\n - Removed: headroom, headroom_spot (deprecated)\n - Removed: node_constraints, custom_instances_enabled (managed via Node Template API)\n - Removed: disk_gib_to_cpu_ratio (deprecated)\n - Kept: pod_pinner (all fields from V1)\n - Added: partial_template_matching_enabled (moved from top-level in V1)"
    PoliciesV2:
      type: object
      properties:
        enabled:
          type: boolean
          default: false
          description: Enable/disable all policies (global master switch).
        unschedulablePods:
          allOf:
          - $ref: '#/components/schemas/UnschedulablePodsPolicy'
          description: Policy defining autoscaler's behavior when unschedulable pods were detected.
        clusterLimits:
          allOf:
          - $ref: '#/components/schemas/ClusterLimitsPolicy'
          description: Defines minimum and maximum amount of CPU the cluster can have.
        nodeDownscaler:
          allOf:
          - $ref: '#/components/schemas/NodeDownscalerPolicy'
          description: Node Downscaler defines policies for removing nodes based on the configured conditions.
        scopedMode:
          type: boolean
          default: false
          description: "Run the node autoscaler in scoped mode. Only pods with the appropriate toleration will trigger node scale-up decisions,\n and only nodes provisioned by the autoscaler will be eligible for downscaling."
        version:
          type: string
          description: "Policy version for optimistic locking.\n When updating: provide the version you're updating from.\n When creating: omit or set to 0.\n In responses: always populated with current version."
      description: "PoliciesV2 defines the autoscaling policies details for V2.\n V2 removes deprecated fields (headroom, spot_instances) and eliminates bidirectional sync with node templates.\n Node constraints and custom instances are managed via the Node Template API.\n Evictor is managed via the standalone Evictor API."
    ClusterLimitsPolicy:
      type: object
      properties:
        enabled:
          type: boolean
          default: false
          description: Enable/disable cluster size limits policy.
        cpu:
          allOf:
          - $ref: '#/components/schemas/ClusterLimitsCpu'
          description: Defines the minimum and maximum amount of CPUs for cluster's worker nodes.
      description: ClusterLimitsPolicy defines minimum and maximum amount of CPU the cluster can have.
    PodPinner:
      type: object
      properties:
        enabled:
          type: boolean
          default: false
          description: Enable/disable the Pod Pinner policy. This will either enable or disable the Pod Pinner component's automatic management in your cluster.
        status:
          enum:
          - POD_PINNER_STATUS_UNSPECIFIED
          - POD_PINNER_STATUS_UNKNOWN
          - POD_PINNER_STATUS_COMPATIBLE
          - POD_PINNER_STATUS_MISSING
          - POD_PINNER_STATUS_INCOMPATIBLE
          - POD_PINNER_STATUS_INCOMPATIBLE_VERSION
          type: string
          description: Status provides indication whether the Pod Pinner policy will be synced with Pod Pinner helm chart - it will only be done if status is "Compatible"
          format: enum
      description: "PodPinner defines the CAST AI Pod Pinner component settings.\n All fields copied from V1 for compatibility."
    NodeDownscalerPolicy:
      type: object
      properties:
        emptyNodesEnabled:
          type: boolean
          default: false
          description: Enable/disable the empty worker nodes policy.
        emptyNodesDelay:
          pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
          type: string
          default: 300s
          description: "Period to wait before removing an empty node.\n Increasing the value makes the cluster more responsive to dynamic workloads at the expense of higher cost."
      description: "NodeDownscalerPolicy defines policies for removing nodes based on the configured conditions.\n V2 Simplification:\n - Evictor removed (managed via standalone Evictor API)\n - Empty nodes settings are flattened (no nested message)\n - Policy is always present in responses (non-optional)"
    ClusterLimitsCpu:
      required:
      - maxCores
      type: object
      properties:
        minCores:
          minimum: 1
          type: integer
          default: 1
          description: "Defines the minimum allowed amount of CPUs in the whole cluster.\n Deprecated: Min CPU limit is no longer enforced."
          format: int32
        maxCores:
          minimum: 2
          type: integer
          default: 20
          description: Defines the maximum allowed amount of vCPUs in the whole cluster.
          format: int32
      description: ClusterLimitsCpu defines the minimum and maximum amount of vCPUs for cluster's worker nodes.
  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/autoscalinghealthindicatorsapi_listhealthindicators.md
  - https://docs.cast.ai/reference/autoscalingwatchdogapi_reportwatchdogevents.md
  - https://docs.cast.ai/reference/clusteradvisorapi_cancelanalysis.md
  - https://docs.cast.ai/reference/clusteradvisorapi_createanalysis.md
  - https://docs.cast.ai/reference/clusteradvisorapi_getanalysis.md
  - https://docs.cast.ai/reference/clusteradvisorapi_getanalysisvariant.md
  - https://docs.cast.ai/reference/clusteradvisorapi_listanalyses.md
  - https://docs.cast.ai/reference/clusteradvisorapi_listanalysisvariants.md
  - https://docs.cast.ai/reference/hibernationjobsapi_createhibernationjob.md
  - https://docs.cast.ai/reference/hibernationjobsapi_gethibernationjob.md
  - https://docs.cast.ai/reference/hibernationjobsapi_pausecluster.md
  - https://docs.cast.ai/reference/hibernationjobsapi_resumecluster.md
  - https://docs.cast.ai/reference/hibernationschedulesapi_createhibernationschedule.md
  - https://docs.cast.ai/reference/hibernationschedulesapi_deletehibernationschedule.md
  - https://docs.cast.ai/reference/hibernationschedulesapi_gethibernationschedule.md
  - https://docs.cast.ai/reference/hibernationschedulesapi_listhibernationschedules.md
  - https://docs.cast.ai/reference/hibernationschedulesapi_updatehibernationschedule.md
  - https://docs.cast.ai/reference/nodetemplatesapi_updatecapacityreservationconstraints.md
  - https://docs.cast.ai/reference/policiesv2api_getclusterpolicies.md
  - https://docs.cast.ai/reference/policiesv2api_updateclusterpolicies.md
  - https://docs.cast.ai/reference/rebalancingconfigapi_searchrebalancingnodefilters.md
  - https://docs.cast.ai/reference/rebalancingconfigapi_searchrebalancingnodefiltervalues.md
  - https://docs.cast.ai/reference/rebalancingconfigapi_searchrebalancingnodes.md
  - https://docs.cast.ai/reference/rebalancingconfigapi_searchrebalancingworkloads.md
  merge:
    pages: 24
    deduped: 200
    conflicts_kept_first: 0