Cast AI AI Enabler API

(BETA) Provides the API for the AI Enabler.

Operations 12

GET /v1/llm/openai/categorized-prompts GetCategorizedPrompts returns a list of categorized prompts from the AI Enabler #
PUT /v1/llm/openai/categorized-prompts/{categorizedPromptId} UpdateCategorizedPrompt updates the categorized prompt #
GET /v1/llm/openai/chat-completions/reports/api-keys-savings Deprecated: Analytics are available via the analytics API #
GET /v1/llm/openai/chat-completions/reports/api-keys/{apiKeyId}/recommendations Deprecated: Analytics are available via the analytics API #
GET /v1/llm/openai/chat-completions/reports/api-keys/{apiKeyId}/usage Deprecated: Analytics are available via the analytics API #
GET /v1/llm/openai/chat-completions/reports/categories/{categoryId}/recommendations Deprecated: Analytics are available via the analytics API #
GET /v1/llm/openai/chat-completions/reports/categories/{categoryId}/usage Deprecated: Analytics are available via the analytics API #
GET /v1/llm/openai/chat-completions/reports/recommendations Deprecated: Use GetIsOnboarded in the analytics API for onboarding checks. #
GET /v1/llm/openai/chat-completions/reports/usage Deprecated: Analytics are available via the analytics API #
GET /v1/llm/openai/models Returns a list of models available for routing #
GET /v1/llm/openai/routing-events GetRoutingEvents returns a list of routing events #
GET /v1/llm/openai/supported-providers Returns a list of supported providers along with the supported models #

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-aienablerapi-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-aienablerapi-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: CAST.AI API documentation AI Enabler API
  version: 1.0.0
  description: '### Feature maturity indicators (may appear on resources, operations and request/response fields)

    - **(BETA)** - new or experimental features, subject to change

    - **(Deprecated)** - outdated or replaced features (a reason and removal date will be provided in the description)'
servers:
- url: https://api.cast.ai/
  description: US endpoint
- url: https://api.eu.cast.ai/
  description: EU endpoint
security:
- BearerAuth: []
- ApiKeyAuth: []
tags:
- description: (BETA) Provides the API for the AI Enabler.
  name: AIEnablerAPI
paths:
  /v1/llm/openai/categorized-prompts:
    get:
      operationId: AIEnablerAPI_GetCategorizedPrompts
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetCategorizedPromptsResponse'
          description: A successful response.
      summary: GetCategorizedPrompts returns a list of categorized prompts from the AI Enabler
      tags:
      - AIEnablerAPI
  /v1/llm/openai/categorized-prompts/{categorizedPromptId}:
    put:
      operationId: AIEnablerAPI_UpdateCategorizedPrompt
      parameters:
      - in: path
        name: categorizedPromptId
        required: true
        schema:
          type: string
      - in: query
        name: feedbackScore
        required: true
        schema:
          default: FEEDBACK_SCORE_UNSPECIFIED
          enum:
          - FEEDBACK_SCORE_UNSPECIFIED
          - BAD
          - GOOD
          type: string
      - in: query
        name: feedback
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.UpdateCategorizedPromptResponse'
          description: A successful response.
      summary: UpdateCategorizedPrompt updates the categorized prompt
      tags:
      - AIEnablerAPI
  /v1/llm/openai/chat-completions/reports/api-keys-savings:
    get:
      operationId: AIEnablerAPI_GetChatCompletionsAPIKeysSavingsReport
      parameters:
      - in: query
        name: fromTime
        schema:
          format: date-time
          type: string
      - in: query
        name: toTime
        schema:
          format: date-time
          type: string
      - in: query
        name: categoryId
        schema:
          type: string
      - in: query
        name: routed
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetChatCompletionsAPIKeysSavingsReportResponse'
          description: A successful response.
      summary: 'Deprecated: Analytics are available via the analytics API'
      tags:
      - AIEnablerAPI
  /v1/llm/openai/chat-completions/reports/api-keys/{apiKeyId}/recommendations:
    get:
      operationId: AIEnablerAPI_GetChatCompletionsAPIKeysRecommendationsReport
      parameters:
      - in: path
        name: apiKeyId
        required: true
        schema:
          type: string
      - in: query
        name: fromTime
        schema:
          format: date-time
          type: string
      - in: query
        name: toTime
        schema:
          format: date-time
          type: string
      - in: query
        name: routed
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetChatCompletionsRecommendationsReportResponse'
          description: A successful response.
      summary: 'Deprecated: Analytics are available via the analytics API'
      tags:
      - AIEnablerAPI
  /v1/llm/openai/chat-completions/reports/api-keys/{apiKeyId}/usage:
    get:
      operationId: AIEnablerAPI_GetChatCompletionsAPIKeyUsageReport
      parameters:
      - in: path
        name: apiKeyId
        required: true
        schema:
          type: string
      - in: query
        name: fromTime
        schema:
          format: date-time
          type: string
      - in: query
        name: toTime
        schema:
          format: date-time
          type: string
      - in: query
        name: routed
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetChatCompletionsAPIKeyUsageReportResponse'
          description: A successful response.
      summary: 'Deprecated: Analytics are available via the analytics API'
      tags:
      - AIEnablerAPI
  /v1/llm/openai/chat-completions/reports/categories/{categoryId}/recommendations:
    get:
      operationId: AIEnablerAPI_GetChatCompletionsCategoryRecommendationsReport
      parameters:
      - in: path
        name: categoryId
        required: true
        schema:
          type: string
      - in: query
        name: fromTime
        schema:
          format: date-time
          type: string
      - in: query
        name: toTime
        schema:
          format: date-time
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetChatCompletionsCategoryRecommendationsReportResponse'
          description: A successful response.
      summary: 'Deprecated: Analytics are available via the analytics API'
      tags:
      - AIEnablerAPI
  /v1/llm/openai/chat-completions/reports/categories/{categoryId}/usage:
    get:
      operationId: AIEnablerAPI_GetChatCompletionsCategoryUsageReport
      parameters:
      - in: path
        name: categoryId
        required: true
        schema:
          type: string
      - in: query
        name: fromTime
        schema:
          format: date-time
          type: string
      - in: query
        name: toTime
        schema:
          format: date-time
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetChatCompletionsCategoryUsageReportResponse'
          description: A successful response.
      summary: 'Deprecated: Analytics are available via the analytics API'
      tags:
      - AIEnablerAPI
  /v1/llm/openai/chat-completions/reports/recommendations:
    get:
      operationId: AIEnablerAPI_GetChatCompletionsRecommendationsReport
      parameters:
      - in: query
        name: fromTime
        schema:
          format: date-time
          type: string
      - in: query
        name: toTime
        schema:
          format: date-time
          type: string
      - in: query
        name: routed
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetChatCompletionsRecommendationsReportResponse'
          description: A successful response.
      summary: 'Deprecated: Use GetIsOnboarded in the analytics API for onboarding checks.'
      tags:
      - AIEnablerAPI
  /v1/llm/openai/chat-completions/reports/usage:
    get:
      operationId: AIEnablerAPI_GetChatCompletionsUsageReport
      parameters:
      - in: query
        name: fromTime
        schema:
          format: date-time
          type: string
      - in: query
        name: toTime
        schema:
          format: date-time
          type: string
      - in: query
        name: routed
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetChatCompletionsUsageReportResponse'
          description: A successful response.
      summary: 'Deprecated: Analytics are available via the analytics API'
      tags:
      - AIEnablerAPI
  /v1/llm/openai/models:
    get:
      operationId: AIEnablerAPI_GetModels
      parameters:
      - in: query
        name: providerName
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetModelsResponse'
          description: A successful response.
      summary: Returns a list of models available for routing
      tags:
      - AIEnablerAPI
  /v1/llm/openai/routing-events:
    get:
      operationId: AIEnablerAPI_GetRoutingEvents
      parameters:
      - in: query
        name: promptId
        required: true
        schema:
          type: string
      - in: query
        name: fromTime
        schema:
          format: date-time
          type: string
      - in: query
        name: toTime
        schema:
          format: date-time
          type: string
      - in: query
        name: page.limit
        schema:
          format: uint64
          type: string
      - description: 'Cursor that defines token indicating where to start the next page.

          Empty value indicates to start from beginning of the dataset.'
        in: query
        name: page.cursor
        schema:
          type: string
      - explode: true
        in: query
        name: type
        schema:
          items:
            enum:
            - EVENT_TYPE_INVALID
            - EVENT_TYPE_PROMPT_RECEIVED
            - EVENT_TYPE_PROMPT_CATEGORIZED
            - EVENT_TYPE_LOOKUP_PROVIDERS_AND_MODELS
            - EVENT_TYPE_ORDER_PROVIDERS_AND_MODELS
            - EVENT_TYPE_PICK_PROVIDER_AND_MODEL
            - EVENT_TYPE_ROUTE_REQUEST
            type: string
          type: array
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetRoutingEventsResponse'
          description: A successful response.
      summary: GetRoutingEvents returns a list of routing events
      tags:
      - AIEnablerAPI
  /v1/llm/openai/supported-providers:
    get:
      operationId: AIEnablerAPI_GetSupportedProviders
      parameters:
      - in: query
        name: supportedInPlayground
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aioptimizer.v1.GetSupportedProvidersResponse'
          description: A successful response.
      summary: Returns a list of supported providers along with the supported models
      tags:
      - AIEnablerAPI
components:
  schemas:
    aioptimizer.v1.OrderProvidersAndModelsEvent:
      properties:
        items:
          items:
            $ref: '#/components/schemas/aioptimizer.v1.ProviderModelItem'
          type: array
      required:
      - items
      type: object
    aioptimizer.v1.Routing:
      properties:
        from:
          $ref: '#/components/schemas/aioptimizer.v1.RoutingModel'
        to:
          $ref: '#/components/schemas/aioptimizer.v1.RoutingModel'
      required:
      - from
      - to
      type: object
    aioptimizer.v1.APIKeyUsageItem:
      properties:
        timestamp:
          type: string
        dailyCost:
          type: string
        dailyCostPerMilTokens:
          type: string
        requestCount:
          format: int32
          type: integer
        tokenCount:
          $ref: '#/components/schemas/aioptimizer.v1.TokenCount'
      required:
      - dailyCost
      - dailyCostPerMilTokens
      - requestCount
      - timestamp
      - tokenCount
      type: object
    aioptimizer.v1.PromptCategorizedEvent:
      properties:
        category:
          type: string
      required:
      - category
      type: object
    aioptimizer.v1.RecommendationsSummary:
      properties:
        costs:
          $ref: '#/components/schemas/aioptimizer.v1.Costs'
        recommendedModelCosts:
          $ref: '#/components/schemas/aioptimizer.v1.Costs'
        originalCost:
          type: string
        achievedSavings:
          type: string
        achievedSavingsPercentage:
          type: string
      required:
      - achievedSavings
      - achievedSavingsPercentage
      - costs
      - originalCost
      - recommendedModelCosts
      type: object
    aioptimizer.v1.ProviderModelItem:
      properties:
        providerId:
          type: string
        provider:
          type: string
        providerName:
          type: string
        model:
          type: string
        promptPricePerMil:
          type: string
        completionPricePerMil:
          type: string
        score:
          format: double
          type: number
        rank:
          format: double
          type: number
        freeCredits:
          type: string
        priority:
          format: int32
          type: integer
        isRateLimited:
          type: boolean
      required:
      - completionPricePerMil
      - freeCredits
      - isRateLimited
      - model
      - priority
      - promptPricePerMil
      - provider
      - providerName
      - rank
      - score
      type: object
    aioptimizer.v1.RoutingEvent:
      properties:
        id:
          type: string
        organizationId:
          type: string
        promptId:
          type: string
        type:
          $ref: '#/components/schemas/aioptimizer.v1.EventType'
        event:
          $ref: '#/components/schemas/aioptimizer.v1.Event'
        createdAt:
          format: date-time
          type: string
      required:
      - createdAt
      - event
      - id
      - organizationId
      - promptId
      - type
      type: object
    aioptimizer.v1.TokenCount:
      properties:
        in:
          format: int32
          type: integer
        out:
          format: int32
          type: integer
      required:
      - in
      - out
      type: object
    aioptimizer.v1.PromptReceivedEvent:
      properties:
        promptId:
          type: string
        routerQualityWeight:
          format: double
          type: number
      required:
      - promptId
      type: object
    aioptimizer.v1.RouteRequestEvent:
      properties:
        providerId:
          type: string
        provider:
          type: string
        providerName:
          type: string
        model:
          type: string
        responseStatus:
          format: int32
          type: integer
        responseDurationMs:
          format: int32
          type: integer
      required:
      - model
      - provider
      - providerName
      - responseDurationMs
      - responseStatus
      type: object
    aioptimizer.v1.SupportedProvider:
      properties:
        provider:
          type: string
        models:
          description: Represents the routable models supported by the provider.
          items:
            $ref: '#/components/schemas/aioptimizer.v1.SupportedProviderModel'
          type: array
        pricingUrl:
          type: string
        websiteUrl:
          type: string
        rateLimitsPerModel:
          type: boolean
      required:
      - models
      - pricingUrl
      - provider
      - rateLimitsPerModel
      - websiteUrl
      type: object
    aioptimizer.v1.Costs:
      properties:
        daily:
          type: string
        total:
          type: string
        totalPerTokensIn:
          type: string
        totalPerTokensOut:
          type: string
        perMilTokens:
          type: string
        perMilTokensIn:
          type: string
        perMilTokensOut:
          type: string
      required:
      - daily
      - perMilTokens
      - perMilTokensIn
      - perMilTokensOut
      - total
      - totalPerTokensIn
      - totalPerTokensOut
      type: object
    aioptimizer.v1.RateLimitConfig:
      description: Rate limit configuration for a model.
      properties:
        requestsPerMinute:
          format: int32
          type: integer
        requestsPerHour:
          format: int32
          type: integer
        requestsPerDay:
          format: int32
          type: integer
        tokensPerMinute:
          format: int32
          type: integer
        tokensPerDay:
          format: int32
          type: integer
      type: object
    aioptimizer.v1.GetRoutingEventsResponse:
      properties:
        items:
          items:
            $ref: '#/components/schemas/aioptimizer.v1.RoutingEvent'
          type: array
        nextCursor:
          type:
          - string
          - 'null'
      required:
      - items
      type: object
    aioptimizer.v1.APIKeysSavingsItem:
      properties:
        id:
          type: string
        alias:
          type: string
        requestCount:
          format: int32
          type: integer
        tokenCount:
          $ref: '#/components/schemas/aioptimizer.v1.TokenCount'
        costs:
          $ref: '#/components/schemas/aioptimizer.v1.Costs'
        recommendedModelCosts:
          $ref: '#/components/schemas/aioptimizer.v1.Costs'
        provider:
          type: string
        originalCost:
          type: string
        achievedSavings:
          type: string
        achievedSavingsPercentage:
          type: string
        routed:
          type: boolean
      required:
      - achievedSavings
      - achievedSavingsPercentage
      - alias
      - costs
      - id
      - originalCost
      - provider
      - recommendedModelCosts
      - requestCount
      - routed
      - tokenCount
      type: object
    aioptimizer.v1.UpdateCategorizedPromptResponse:
      type: object
    aioptimizer.v1.AWSProviderModelMeta:
      properties:
        regions:
          items:
            type: string
          type: array
      type: object
    aioptimizer.v1.GetSupportedProvidersResponse:
      properties:
        supportedProviders:
          items:
            $ref: '#/components/schemas/aioptimizer.v1.SupportedProvider'
          type: array
      type: object
    aioptimizer.v1.CategorizedPrompt:
      properties:
        prompt:
          type: string
        category:
          type: string
        reasoning:
          type: string
        id:
          type: string
        provider:
          type: string
        model:
          type: string
        feedbackScore:
          $ref: '#/components/schemas/aioptimizer.v1.FeedbackScore'
        feedback:
          type: string
      required:
      - category
      - feedback
      - feedbackScore
      - id
      - model
      - prompt
      - provider
      - reasoning
      type: object
    aioptimizer.v1.GetModelsResponse:
      properties:
        models:
          items:
            type: string
          type: array
      type: object
    aioptimizer.v1.UsageItem:
      properties:
        timestamp:
          type: string
        dailyCost:
          type: string
        dailyCostPerMilTokens:
          type: string
        costPerApiKey:
          additionalProperties:
            type: string
          type: object
        costPerCategory:
          additionalProperties:
            type: string
          type: object
      required:
      - costPerApiKey
      - costPerCategory
      - dailyCost
      - dailyCostPerMilTokens
      - timestamp
      type: object
    aioptimizer.v1.GetChatCompletionsAPIKeysSavingsReportResponse:
      properties:
        items:
          items:
            $ref: '#/components/schemas/aioptimizer.v1.APIKeysSavingsItem'
          type: array
      type: object
    aioptimizer.v1.Event:
      properties:
        promptReceived:
          $ref: '#/components/schemas/aioptimizer.v1.PromptReceivedEvent'
        promptCategorized:
          $ref: '#/components/schemas/aioptimizer.v1.PromptCategorizedEvent'
        lookupProvidersAndModels:
          $ref: '#/components/schemas/aioptimizer.v1.LookupProvidersAndModelsEvent'
        orderProvidersAndModels:
          $ref: '#/components/schemas/aioptimizer.v1.OrderProvidersAndModelsEvent'
        pickProviderAndModel:
          $ref: '#/components/schemas/aioptimizer.v1.PickProviderAndModelEvent'
        routeRequest:
          $ref: '#/components/schemas/aioptimizer.v1.RouteRequestEvent'
      type: object
    aioptimizer.v1.GetCategorizedPromptsResponse:
      properties:
        categorizedPrompts:
          items:
            $ref: '#/components/schemas/aioptimizer.v1.CategorizedPrompt'
          type: array
      type: object
    aioptimizer.v1.EventType:
      default: EVENT_TYPE_INVALID
      description: EventType defines possible types for prompt routing events.
      enum:
      - EVENT_TYPE_INVALID
      - EVENT_TYPE_PROMPT_RECEIVED
      - EVENT_TYPE_PROMPT_CATEGORIZED
      - EVENT_TYPE_LOOKUP_PROVIDERS_AND_MODELS
      - EVENT_TYPE_ORDER_PROVIDERS_AND_MODELS
      - EVENT_TYPE_PICK_PROVIDER_AND_MODEL
      - EVENT_TYPE_ROUTE_REQUEST
      type: string
    aioptimizer.v1.LookupProvidersAndModelsEvent:
      properties:
        items:
          items:
            $ref: '#/components/schemas/aioptimizer.v1.ProviderModelItem'
          type: array
      required:
      - items
      type: object
    aioptimizer.v1.GetChatCompletionsUsageReportResponse:
      properties:
        stepSeconds:
          format: int32
          type: integer
        items:
          items:
            $ref: '#/components/schemas/aioptimizer.v1.UsageItem'
          type: array
      type: object
    aioptimizer.v1.SupportedProviderModel:
      properties:
        name:
          type: string
        maxInputTokens:
          format: int32
          type: integer
        promptPricePerMilTokens:
          type: string
        completionPricePerMilTokens:
          type: string
        isRoutable:
          type: boolean
        modalities:
          description: The list of modalities the model supports. Can be a list of "text", "image", "audio", etc.
          items:
            type: string
          type: array
        type:
          description: The type of the hosted model. Can be "chat", "embeddings", "completion", "audio_transcription", etc.
          type: string
        aws:
          $ref: '#/components/schemas/aioptimizer.v1.AWSProviderModelMeta'
        rateLimits:
          $ref: '#/components/schemas/aioptimizer.v1.RateLimitConfig'
        cacheReadPricePerMilTokens:
          description: Price per 1M cached input tokens (cache read). "0" if the model does not support prompt caching.
          type: string
      required:
      - completionPricePerMilTokens
      - isRoutable
      - maxInputTokens
      - modalities
      - name
      - promptPricePerMilTokens
      - type
      type: object
    aioptimizer.v1.PickProviderAndModelEvent:
      properties:
        providerId:
          type: string
        provider:
          type: string
        providerName:
          type: string
        model:
          type: string
        promptPricePerMil:
          type: string
        completionPricePerMil:
          type: string
      required:
      - completionPricePerMil
      - model
      - promptPricePerMil
      - provider
      - providerName
      type: object
    aioptimizer.v1.FeedbackScore:
      default: FEEDBACK_SCORE_UNSPECIFIED
      description: Feedback score for the prompt.
      enum:
      - FEEDBACK_SCORE_UNSPECIFIED
      - BAD
      - GOOD
      type: string
    aioptimizer.v1.CategoryUsageItem:
      properties:
        timestamp:
          type: string
        dailyCost:
          type: string
        dailyCostPerMilTokens:
          type: string
        costPerApiKey:
          additionalProperties:
            type: string
          type: object
        requestCount:
          format: int32
          type: integer
        tokenCount:
          $ref: '#/components/schemas/aioptimizer.v1.TokenCount'
      required:
      - costPerApiKey
      - dailyCost
      - dailyCostPerMilTokens
      - requestCount
      - timestamp
      - tokenCount
      type: object
    aioptimizer.v1.RoutingModel:
      properties:
        model:
          type: string
        fineTuned:
          type: boolean
        provider:
          type: string
      required:
      - fineTuned
      - model
      - provider
      type: object
    aioptimizer.v1.GetChatCompletionsAPIKeyUsageReportResponse:
      properties:
        stepSeconds:
          format: int32
          type: integer
        items:
          items:
            $ref: '#/components/schemas/aioptimizer.v1.APIKeyUsageItem'
          type: array
      type: object
    aioptimizer.v1.GetChatCompletionsCategoryRecommendationsReportResponse:
      properties:
        summary:
          $ref: '#/components/schemas/aioptimizer.v1.RecommendationsSummary'
        recommendation:
          $ref: '#/components/schemas/aioptimizer.v1.RecommendationsItem'
      type: object
    aioptimizer.v1.GetChatCompletionsRecommendationsReportResponse:
      properties:
        isOnboarded:
          type: boolean
        summary:
          $ref: '#/components/schemas/aioptimizer.v1.RecommendationsSummary'
        items:
          items:
            $ref: '#/components/schemas/aioptimizer.v1.RecommendationsItem'
          type: array
      type: object
    aioptimizer.v1.GetChatCompletionsCategoryUsageReportResponse:
      properties:
        stepSeconds:
          format: int32
          type: integer
        items:
          items:
            $ref: '#/components/schemas/aioptimizer.v1.CategoryUsageItem'
          type: array
      type: object
    aioptimizer.v1.RecommendationsItem:
      properties:
        id:
          type: string
        category:
          type: string
        requestCount:
          format: int32
          type: integer
        routing:
          $ref: '#/components/schemas/aioptimizer.v1.Routing'
        tokenCount:
          $ref: '#/components/schemas/aioptimizer.v1.TokenCount'
        costs:
          $ref: '#/components/schemas/aioptimizer.v1.Costs'
        recommendedModelCosts:
          $ref: '#/components/schemas/aioptimizer.v1.Costs'
        originalCost:
          type: string
        achievedSavings:
          type: string
        achievedSavingsPercentage:
          type: string
        routed:
          type: boolean
        originalModel:
          type: string
      required:
      - achievedSavings
      - achievedSavingsPercentage
      - category
      - costs
      - id
      - originalCost
      - originalModel
      - recommendedModelCosts
      - requestCount
      - routed
      - routing
      - tokenCount
      type: object
  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/aienablerapi_getcategorizedprompts.md
  - https://docs.cast.ai/reference/aienablerapi_getchatcompletionsapikeysrecommendationsreport.md
  - https://docs.cast.ai/reference/aienablerapi_getchatcompletionsapikeyssavingsreport.md
  - https://docs.cast.ai/reference/aienablerapi_getchatcompletionsapikeyusagereport.md
  - https://docs.cast.ai/reference/aienablerapi_getchatcompletionscategoryrecommendationsreport.md
  - https://docs.cast.ai/reference/aienablerapi_getchatcompletionscategoryusagereport.md
  - https://docs.cast.ai/reference/aienablerapi_getchatcompletionsrecommendationsreport.md
  - https://docs.cast.ai/reference/aienablerapi_getchatcompletionsusagereport.md
  - https://docs.cast.ai/reference/aienablerapi_getmodels.md
  - https://docs.cast.ai/reference/aienablerapi_getroutingevents.md
  - https://docs.cast.ai/reference/aienablerapi_getsupportedproviders.md
  - https://docs.cast.ai/reference/aienablerapi_updatecategorizedprompt.md
  - https://docs.cast.ai/reference/aienablerplaygroundapi_createplaygroundchatcompletions.md
  - https://docs.cast.ai/reference/aienablerprovidersapi_deleteprovider.md
  - https://docs.cast.ai/reference/aienablerprovidersapi_getproviders.md
  - https://docs.cast.ai/reference/aienablerprovidersapi_prioritizeproviders.md
  - https://docs.cast.ai/reference/aienablerprovidersapi_registerproviders.md
  - https://docs.cast.ai/reference/aienablerprovidersapi_updateprovider.md
  - https://docs.cast.ai/reference/aienablersettingsapi_getsettings.md
  - https://docs.cast.ai/reference/aienablersettingsapi_upsertsettings.md
  - https://docs.cast.ai/reference/allocationgroupapi_createallocationgroup.md
  - https://docs.cast.ai/reference/allocationgroupapi_deleteallocationgroup.md
  - https://docs.cast.ai/reference/allocationgroupapi_getallocationgroup.md
  - https://docs.cast.ai/reference/allocationgroupapi_getallocationgroupcostsummaries.md
  - https://docs.cast.ai/reference/allocationgroupapi_getallocationgroupcosttimedsummaries.md
  - https://docs.cast.ai/reference/allocationgroupapi_getallocationgroupefficiencysummary.md
  - https://docs.cast.ai/reference/allocationgroupapi_getallocationgrouptotalcosttimed.md
  - https://docs.cast.ai/reference/allocationgroupapi_getallocationgroupworkloadcosts.md
  - https://docs.cast.ai/reference/allocationgroupapi_getallocationgroupworkloadsefficiency.md
  - https://docs.cast.ai/reference/allocationgroupapi_getcostallocationgroupdatatransfersummary.md
  - https://docs.cast.ai/reference/allocationgroupapi_getcostallocationgroupdatatransferworkloads.md
  - https://docs.cast.ai/reference/allocationgroupapi_listallocationgroups.md
  - https://docs.cast.ai/reference/allocationgroupapi_updateallocationgroup.md
  - https://docs.cast.ai/reference/auditapi_getauditevent.md
  - https://docs.cast.ai/reference/auditapi_listauditentries.md
  - https://docs.cast.ai/reference/auditapi_listauditevents.md
  - https://docs.cast.ai/reference/auditv2api_getauditevent.md
  - https://docs.cast.ai/reference/auditv2api_getaudithistogram.md
  - https://docs.cast.ai/reference/auditv2api_getauditstats.md
  - https://docs.cast.ai/reference/auditv2api_getrelatedauditevents.md
  - https://docs.cast.ai/reference/auditv2api_listauditevents.md
  - https://docs.cast.ai/reference/authtokenapi_createauthtoken.md
  - https://docs.cast.ai/reference/authtokenapi_deleteauthtoken.md
  - https://docs.cast.ai/reference/authtokenapi_getauthtoken.md
  - https://docs.cast.ai/reference/authtokenapi_listauthtokens.md
  - https://docs.cast.ai/reference/authtokenapi_updateauthtoken.md
  - https://docs.cast.ai/reference/autoscalerapi_cancelrebalancingplan.md
  - https://docs.cast.ai/reference/autoscalerapi_executerebalancingplan.md
  - https://docs.cast.ai/reference/autoscalerapi_generaterebalancingplan.md
  - https://docs.cast.ai/reference/autoscalerapi_getagentscript.md
  - https://docs.cast.ai/reference/autoscalerapi_getclustersettings.md
  - https://docs.cast.ai/reference/autoscalerapi_getclusterworkloads.md
  - https://docs.cast.ai/reference/autoscalerapi_getkarpenterdefinitionsmigrationintent.md
  - https://docs.cast.ai/reference/autoscalerapi_getproblematicnodes.md
  - https://docs.cast.ai/reference/autoscalerapi_getproblematicworkloads.md
  - https://docs.cast.ai/reference/autoscalerapi_getrebalancedworkloads.md
  - https://docs.cast.ai/reference/autoscalerapi_getrebalancingplan.md
  - https://docs.cast.ai/reference/autoscalerapi_listrebalancingplans.md
  - https://docs.cast.ai/reference/autoscalerapi_migratekarpenterdefinitions.md
  - https://docs.cast.ai/reference/autoscalerapi_simulatenodespotinterruption.md
  - https://docs.cast.ai/reference/billing-sso.md
  - https://docs.cast.ai/reference/billingapi_getenterpriseplatformusagedetail.md
  - https://docs.cast.ai/reference/billingapi_getenterpriseplatformusagereport.md
  - https://docs.cast.ai/reference/billingapi_getplatformusagedetail.md
  - https://docs.cast.ai/reference/billingapi_getplatformusagereport.md
  - https://docs.cast.ai/reference/billingapi_getsubscriptiondetails.md
  - https://docs.cast.ai/reference/clusteractionsapi_ackclusteraction.md
  - https://docs.cast.ai/reference/clusteractionsapi_ingestlogs.md
  - https://docs.cast.ai/reference/clusteractionsapi_pollclusteractions.md
  - https://docs.cast.ai/reference/clusterreportapi_getactiveclusters.md
  - https://docs.cast.ai/reference/clusterreportapi_getclusteragentstatus.md


# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kimchi/refs/heads/main/openapi/kimchi-aienablerapi-api-openapi.yml