Cast AI Node Template API

Provides resource usage and spot interruption prediction performance metrics per node template.

Operations 4

GET /reporting/v1beta/organizations/{organizationId}/node-templates-metrics Returns resource usage per node template #
POST /reporting/v1beta/organizations/{organizationId}/node-templates-metrics:filtered Returns resource usage per node template with label filtering #
GET /reporting/v1beta/organizations/{organizationId}/node-templates/spot-interruption-prediction-performance-metrics Returns spot interruption prediction performance metrics time-series #
GET /reporting/v1beta/organizations/{organizationId}/node-templates/spot-interruption-prediction-performance-summary Returns spot interruption prediction performance summary #

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-nodetemplateapi-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-nodetemplateapi-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Reporting Node Template API
  version: 0.0.1
  description: Provides resource usage and spot interruption prediction performance metrics per node template.
servers:
- url: https://api.cast.ai/
  description: US endpoint
- url: https://api.eu.cast.ai/
  description: EU endpoint
security:
- BearerAuth: []
- ApiKeyAuth: []
tags:
- name: NodeTemplateAPI
  description: Provides resource usage and spot interruption prediction performance metrics per node template.
paths:
  /reporting/v1beta/organizations/{organizationId}/node-templates-metrics:
    get:
      tags:
      - NodeTemplateAPI
      summary: Returns resource usage per node template
      description: Returns resource metrics and cloud costs per node template, aggregated by the specified time step.
      operationId: NodeTemplateAPI_ListNodeTemplatesMetrics
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
      - name: clusterIds
        in: query
        description: Cluster IDs to filter the report. If empty, all clusters in the organization are included.
        schema:
          type: array
          items:
            type: string
      - name: startTime
        in: query
        description: Start time of the reporting period (inclusive).
        schema:
          type: string
          format: date-time
      - name: endTime
        in: query
        description: End time of the reporting period (exclusive).
        schema:
          type: string
          format: date-time
      - name: step
        in: query
        description: Granularity of data points.
        schema:
          enum:
          - STEP_UNSPECIFIED
          - ONE_DAY
          - ONE_MONTH
          type: string
          format: enum
      - name: timeZone
        in: query
        description: "Optional time zone in IANA format, e.g., 'Europe/Madrid'.\n Default is Etc/UTC."
        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
      - name: filter.operator
        in: query
        description: Logical operator for combining label requirements. Defaults to AND if unset.
        schema:
          enum:
          - FILTER_OPERATOR_UNSPECIFIED
          - AND
          - OR
          type: string
          format: enum
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListNodeTemplatesMetricsResponse'
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
  /reporting/v1beta/organizations/{organizationId}/node-templates-metrics:filtered:
    post:
      tags:
      - NodeTemplateAPI
      summary: Returns resource usage per node template with label filtering
      description: Returns resource metrics and cloud costs per node template, aggregated by the specified time step, with optional filtering by cluster IDs and node labels.
      operationId: NodeTemplateAPI_ListNodeTemplatesMetricsFiltered
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
      - name: clusterIds
        in: query
        description: Cluster IDs to filter the report. If empty, all clusters in the organization are included.
        schema:
          type: array
          items:
            type: string
      - name: startTime
        in: query
        description: Start time of the reporting period (inclusive).
        schema:
          type: string
          format: date-time
      - name: endTime
        in: query
        description: End time of the reporting period (exclusive).
        schema:
          type: string
          format: date-time
      - name: step
        in: query
        description: Granularity of data points.
        schema:
          enum:
          - STEP_UNSPECIFIED
          - ONE_DAY
          - ONE_MONTH
          type: string
          format: enum
      - name: timeZone
        in: query
        description: "Optional time zone in IANA format, e.g., 'Europe/Madrid'.\n Default is Etc/UTC."
        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
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeLabelsFilter'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListNodeTemplatesMetricsResponse'
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
  /reporting/v1beta/organizations/{organizationId}/node-templates/spot-interruption-prediction-performance-metrics:
    get:
      tags:
      - NodeTemplateAPI
      summary: Returns spot interruption prediction performance metrics time-series
      description: Returns avg spot interruption ratio per node template per time bucket at the requested granularity.
      operationId: NodeTemplateAPI_ListSpotInterruptionPredictionPerformanceMetrics
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
      - name: clusterIds
        in: query
        description: Cluster IDs to filter the report. If empty, all clusters in the organization are included.
        schema:
          type: array
          items:
            type: string
      - name: nodeTemplateNames
        in: query
        description: Node template names to filter the report. If empty, all node templates are included.
        schema:
          type: array
          items:
            type: string
      - name: startTime
        in: query
        description: Start time of the reporting period (inclusive).
        schema:
          type: string
          format: date-time
      - name: endTime
        in: query
        description: End time of the reporting period (exclusive).
        schema:
          type: string
          format: date-time
      - name: step
        in: query
        description: Granularity of data points.
        schema:
          enum:
          - STEP_UNSPECIFIED
          - ONE_HOUR
          - ONE_DAY
          - ONE_MONTH
          - FIVE_MINUTES
          type: string
          format: enum
      - name: timeZone
        in: query
        description: "Optional time zone in IANA format, e.g., 'Europe/Madrid'.\n Default is Etc/UTC."
        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/ListSpotInterruptionPredictionPerformanceMetricsResponse'
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
  /reporting/v1beta/organizations/{organizationId}/node-templates/spot-interruption-prediction-performance-summary:
    get:
      tags:
      - NodeTemplateAPI
      summary: Returns spot interruption prediction performance summary
      description: Returns avg spot interruption ratio for the entire period — as a single overall value and broken down per node template.
      operationId: NodeTemplateAPI_GetSpotInterruptionPredictionPerformanceSummary
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: string
      - name: clusterIds
        in: query
        description: Cluster IDs to filter the report. If empty, all clusters in the organization are included.
        schema:
          type: array
          items:
            type: string
      - name: nodeTemplateNames
        in: query
        description: Node template names to filter the report. If empty, all node templates are included.
        schema:
          type: array
          items:
            type: string
      - name: startTime
        in: query
        description: Start time of the reporting period (inclusive).
        schema:
          type: string
          format: date-time
      - name: endTime
        in: query
        description: End time of the reporting period (exclusive).
        schema:
          type: string
          format: date-time
      - name: timeZone
        in: query
        description: "Optional time zone in IANA format, e.g., 'Europe/Madrid'.\n Default is Etc/UTC."
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SpotInterruptionPredictionPerformanceSummary'
        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).'
    SpotInterruptionPredictionPerformanceSummary:
      type: object
      properties:
        avgSpotInterruptionRatio:
          type: number
          description: Overall avg spot interruption ratio across all node templates for the period.
          format: double
        nodeTemplates:
          type: array
          items:
            $ref: '#/components/schemas/SpotInterruptionPredictionPerformanceSummary_NodeTemplateSummary'
          description: Per-node-template avg spot interruption ratio for the period.
      description: Spot interruption prediction performance summary for the entire requested period.
    NodeTemplateMetrics:
      type: object
      properties:
        clusterId:
          type: string
          description: Cluster ID.
        name:
          type: string
          description: Node template name.
        timestamp:
          type: string
          description: Timestamp of this data point (start of day or month depending on step).
          format: date-time
        provisionedAvgHourly:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Average provisioned resources per hour for this period.
        requestedAvgHourly:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Average requested resources per hour for this period.
        usedAvgHourly:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Average used resources per hour for this period.
        provisionedHours:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Total provisioned resource-hours for this period.
        requestedHours:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Total requested resource-hours for this period.
        usedHours:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Total used resource-hours for this period.
        cost:
          allOf:
          - $ref: '#/components/schemas/ResourceCost'
          description: Total cost of resources for this period.
      description: Resource usage data for a node template at a specific time bucket.
    NodeTemplateMetricsTimeSeriesItem:
      type: object
      properties:
        timestamp:
          type: string
          description: Timestamp of this data point (start of day or month depending on step).
          format: date-time
        provisionedAvgHourly:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Average provisioned resources per hour for this period.
        requestedAvgHourly:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Average requested resources per hour for this period.
        usedAvgHourly:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Average used resources per hour for this period.
        provisionedHours:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Total provisioned resource-hours for this period.
        requestedHours:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Total requested resource-hours for this period.
        usedHours:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Total used resource-hours for this period.
        cost:
          allOf:
          - $ref: '#/components/schemas/ResourceCost'
          description: Total cost of resources for this period.
      description: Total resource usage across all node templates at a specific time bucket.
    ListNodeTemplatesMetricsResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/NodeTemplateMetrics'
          description: Resource usage items per node template per time bucket.
        nextPageCursor:
          type: string
          description: Cursor for the next page. Empty if no more pages.
        totalCount:
          type: integer
          description: Total number of items matching the query.
          format: int32
        summary:
          allOf:
          - $ref: '#/components/schemas/NodeTemplateMetricsSummary'
          description: Aggregated summary across all node templates for the entire period.
      description: Response containing node template resource usage data.
    ResourceCost:
      type: object
      properties:
        cpu:
          type: number
          description: CPU cost in USD.
          format: double
        memory:
          type: number
          description: Memory cost in USD.
          format: double
        gpu:
          type: number
          description: GPU cost in USD.
          format: double
        total:
          type: number
          description: Total cost in USD.
          format: double
        tpu:
          type: number
          description: TPU cost in USD.
          format: double
      description: Cloud costs for each resource type over a given period.
    ListSpotInterruptionPredictionPerformanceMetricsResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/NodeTemplatePerformanceMetrics'
          description: Metrics per node template for the requested period at timestep granularity.
        nextPageCursor:
          type: string
          description: Cursor for the next page. Empty if no more pages.
        totalCount:
          type: integer
          description: Total number of items matching the query.
          format: int32
      description: Response containing spot interruption prediction performance metrics per node template.
    NodeTemplatePerformanceMetrics_TimeSeriesItem:
      type: object
      properties:
        timestamp:
          type: string
          description: Timestamp of this data point.
          format: date-time
        avgSpotInterruptionRatio:
          type: number
          description: Avg spot interruption ratio in this time bucket.
          format: double
        totalRunningNodes:
          type: string
          description: Total running spot nodes in this time bucket.
        totalInterruptedNodes:
          type: string
          description: Total interrupted spot nodes in this time bucket.
      description: Avg spot interruption ratio at a specific time bucket.
    NodeTemplatePerformanceMetrics:
      type: object
      properties:
        clusterId:
          type: string
          description: Cluster which the node template belongs to.
        nodeTemplateName:
          type: string
          description: Node template name.
        timeSeries:
          type: array
          items:
            $ref: '#/components/schemas/NodeTemplatePerformanceMetrics_TimeSeriesItem'
          description: Time-series breakdown at the requested granularity.
      description: Spot interruption prediction performance metrics for a specific node template as a time-series.
    ResourceQuantity:
      type: object
      properties:
        cpuCores:
          type: number
          description: CPU cores (e.g., 4.5 means 4500m).
          format: double
        memoryBytes:
          type: number
          description: Memory in bytes.
          format: double
        gpuCount:
          type: number
          description: Number of GPUs.
          format: double
        tpuCount:
          type: number
          description: Number of TPUs.
          format: double
      description: Resource quantities for a given period.
    NodeLabelsFilter:
      type: object
      properties:
        labels:
          type: array
          items:
            $ref: '#/components/schemas/NodeLabelsFilter_LabelValue'
          description: Label requirements to match against node labels.
        operator:
          enum:
          - FILTER_OPERATOR_UNSPECIFIED
          - AND
          - OR
          type: string
          description: Logical operator for combining label requirements. Defaults to AND if unset.
          format: enum
      description: NodeLabelsFilter defines a filter for selecting nodes by their labels.
    SpotInterruptionPredictionPerformanceSummary_NodeTemplateSummary:
      type: object
      properties:
        clusterId:
          type: string
          description: Cluster which the node template belongs to.
        nodeTemplateName:
          type: string
          description: Node template name.
        avgSpotInterruptionRatio:
          type: number
          description: Avg spot interruption ratio for this node template over the period.
          format: double
        totalRunningNodes:
          type: string
          description: Total running nodes for this node template over the period.
        totalInterruptedNodes:
          type: string
          description: Total interrupted spot nodes in this time bucket.
      description: Avg spot interruption ratio for a single node template over the period.
    NodeTemplateMetricsSummary:
      type: object
      properties:
        timeSeries:
          type: array
          items:
            $ref: '#/components/schemas/NodeTemplateMetricsTimeSeriesItem'
          description: Time-series of total resource usage across all node templates per time bucket.
        provisionedAvgHourly:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Average provisioned resources per hour for this period.
        requestedAvgHourly:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Average requested resources per hour for this period.
        usedAvgHourly:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Average used resources per hour for this period.
        provisionedHours:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Total provisioned resource-hours for this period.
        requestedHours:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Total requested resource-hours for this period.
        usedHours:
          allOf:
          - $ref: '#/components/schemas/ResourceQuantity'
          description: Total used resource-hours for this period.
        cost:
          allOf:
          - $ref: '#/components/schemas/ResourceCost'
          description: Total cost of resources for this period.
      description: Aggregated resource usage summary across all node templates for the entire period.
    NodeLabelsFilter_LabelValue:
      required:
      - key
      - operator
      type: object
      properties:
        key:
          type: string
          description: Label key the requirement applies to.
        operator:
          enum:
          - OPERATOR_UNSPECIFIED
          - IN
          - NOT_IN
          - EXISTS
          - DOES_NOT_EXIST
          type: string
          description: Relationship of the key to the values set.
          format: enum
        values:
          type: array
          items:
            type: string
          description: Values to compare against; required for `IN` and `NOT_IN`, must be empty for `EXISTS` and `DOES_NOT_EXIST`.
      description: LabelValue represents a single label selector requirement.
    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/budgetsapi_createbudget.md
  - https://docs.cast.ai/reference/budgetsapi_deletebudget.md
  - https://docs.cast.ai/reference/budgetsapi_getbudget.md
  - https://docs.cast.ai/reference/budgetsapi_listbudgets.md
  - https://docs.cast.ai/reference/budgetsapi_previewbudgetcost.md
  - https://docs.cast.ai/reference/budgetsapi_updatebudget.md
  - https://docs.cast.ai/reference/clusterscoreapi_getclusterrestrictiondetails.md
  - https://docs.cast.ai/reference/clusterscoreapi_listclusterrestrictions.md
  - https://docs.cast.ai/reference/containerlivemigrationapi_getcontainerlivemigrationdetail.md
  - https://docs.cast.ai/reference/containerlivemigrationapi_getcontainerlivemigrationsummary.md
  - https://docs.cast.ai/reference/containerlivemigrationapi_listcontainerlivemigrationevents.md
  - https://docs.cast.ai/reference/containerlivemigrationapi_listcontainerlivemigrationfiltervalues.md
  - https://docs.cast.ai/reference/containerlivemigrationapi_listcontainerlivemigrationincompatibleworkloads.md
  - https://docs.cast.ai/reference/containerlivemigrationapi_listcontainerlivemigrations.md
  - https://docs.cast.ai/reference/containerlivemigrationapi_listcontainerlivemigrationworkloads.md
  - https://docs.cast.ai/reference/instanceapi_getinstancessummary.md
  - https://docs.cast.ai/reference/instanceapi_listinstances.md
  - https://docs.cast.ai/reference/nodeconditioneventsapi_listnodeconditionevents.md
  - https://docs.cast.ai/reference/nodetemplateapi_getspotinterruptionpredictionperformancesummary.md
  - https://docs.cast.ai/reference/nodetemplateapi_listnodetemplatesmetrics.md
  - https://docs.cast.ai/reference/nodetemplateapi_listnodetemplatesmetricsfiltered.md
  - https://docs.cast.ai/reference/nodetemplateapi_listspotinterruptionpredictionperformancemetrics.md
  - https://docs.cast.ai/reference/optimizationapi_runclusteroptimizationsreport.md
  - https://docs.cast.ai/reference/reliabilitymetricsapi_getclusterreliabilitymetrics.md
  - https://docs.cast.ai/reference/reliabilitymetricsapi_getorganizationclustersreliabilitymetrics.md
  - https://docs.cast.ai/reference/valuerealizationapi_getbaselineparams.md
  - https://docs.cast.ai/reference/valuerealizationapi_recalculatebaselineparams.md
  - https://docs.cast.ai/reference/valuerealizationapi_runclustersvaluerealizationreport.md
  - https://docs.cast.ai/reference/valuerealizationapi_runvaluerealizationtimelinereport.md
  - https://docs.cast.ai/reference/valuerealizationapi_runworkloadsvaluerealizationreport.md
  - https://docs.cast.ai/reference/valuerealizationapi_updatebaselineparams.md
  merge:
    pages: 31
    deduped: 179
    conflicts_kept_first: 0