Cast AI Index Recommendations API

IndexRecommendationsAPI provides operations for managing database index recommendations

Operations 1

GET /database-optimizer/index-advisor/v1alpha/organizations/{organizationId}/databases/{databaseId}/index-recommendations List index optimization recommendations #

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-indexrecommendationsapi-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-indexrecommendationsapi-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Database Optimizer Index Recommendations API
  version: 0.0.1
  description: IndexRecommendationsAPI provides operations for managing database index recommendations
servers:
- url: https://api.cast.ai/
  description: US endpoint
- url: https://api.eu.cast.ai/
  description: EU endpoint
security:
- BearerAuth: []
- ApiKeyAuth: []
tags:
- name: IndexRecommendationsAPI
  description: IndexRecommendationsAPI provides operations for managing database index recommendations
paths:
  /database-optimizer/index-advisor/v1alpha/organizations/{organizationId}/databases/{databaseId}/index-recommendations:
    get:
      tags:
      - IndexRecommendationsAPI
      summary: List index optimization recommendations
      description: 'List index optimization recommendations


        Analyzes collected index and execution plan data to provide specific

        recommendations for index optimization.'
      operationId: IndexRecommendationsAPI_ListIndexRecommendations
      parameters:
      - name: organizationId
        in: path
        description: Organization identifier
        required: true
        schema:
          type: string
      - name: databaseId
        in: path
        description: Database ID
        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
      - name: recommendationTypes
        in: query
        description: Recommendation type filter
        schema:
          type: array
          items:
            enum:
            - RECOMMENDATION_TYPE_UNSPECIFIED
            - CREATE_INDEX
            - DROP_INDEX
            - REBUILD_INDEX
            - CONSOLIDATE_INDEXES
            type: string
            format: enum
      - name: fieldMask
        in: query
        description: Field mask for partial responses
        schema:
          type: string
          format: field-mask
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListIndexRecommendationsResponse'
        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).'
    AffectedQuery:
      required:
      - templateHash
      - queryTemplate
      - totalCalls
      - totalExecTimeMs
      - minExecTimeMs
      - meanExecTimeMs
      - maxExecTimeMs
      type: object
      properties:
        templateHash:
          type: string
          description: Template hash of the query
        queryTemplate:
          type: string
          description: Query template (normalised version of the query)
        totalCalls:
          type: string
          description: Total times the query has been executed
        totalExecTimeMs:
          type: number
          description: "Cumulative total execution time for the query\n (-- api-linter: core::0142::time-field-type=disabled\n     aip.dev/not-precedent: We need to do this because it's not a timestamp. --)"
          format: double
        minExecTimeMs:
          type: number
          description: "Minimum execution time for the query\n (-- api-linter: core::0142::time-field-type=disabled\n     aip.dev/not-precedent: We need to do this because it's not a timestamp. --)"
          format: double
        meanExecTimeMs:
          type: number
          description: "Mean average execution time for the query\n (-- api-linter: core::0142::time-field-type=disabled\n     aip.dev/not-precedent: We need to do this because it's not a timestamp. --)"
          format: double
        maxExecTimeMs:
          type: number
          description: "Maximum execution time for the query\n (-- api-linter: core::0142::time-field-type=disabled\n     aip.dev/not-precedent: We need to do this because it's not a timestamp. --)"
          format: double
      description: Query stats for a specific query in a recommendation
    IndexRecommendation:
      required:
      - schemaName
      - tableName
      - recommendationType
      - indexType
      - indexSubtype
      - columns
      - reason
      - estimatedImpact
      - sql
      - createTime
      - databaseName
      - indexName
      - hash
      type: object
      properties:
        schemaName:
          type: string
          description: Target schema name
        tableName:
          type: string
          description: Target table name
        recommendationType:
          enum:
          - RECOMMENDATION_TYPE_UNSPECIFIED
          - CREATE_INDEX
          - DROP_INDEX
          - REBUILD_INDEX
          - CONSOLIDATE_INDEXES
          type: string
          description: Type of recommendation
          format: enum
        indexType:
          enum:
          - INDEX_TYPE_UNSPECIFIED
          - BTREE
          - HASH
          - GIST
          - GIN
          - SPGIST
          - BRIN
          type: string
          description: Type of index
          format: enum
        indexSubtype:
          enum:
          - INDEX_SUBTYPE_UNSPECIFIED
          - COMPOSITE
          - PARTIAL
          - STANDARD
          type: string
          description: Index subtype
          format: enum
        columns:
          type: array
          items:
            type: string
          description: Target columns
        reason:
          type: string
          description: Reason for action
        estimatedImpact:
          type: string
          description: Estimated impact
        sql:
          type: string
          description: Suggested SQL for action
        createTime:
          type: string
          description: Creation timestamp
          format: date-time
        databaseName:
          type: string
          description: Target logical database name
        indexName:
          type: string
          description: Target index name
        hash:
          type: string
          description: Recommendation hash
        indexDefinition:
          type: string
          description: Index DDL definition (for DROP recommendations)
        affectedQueries:
          type: array
          items:
            $ref: '#/components/schemas/AffectedQuery'
          description: Affected queries by the recommendation (create/merge recommendations)
      description: Index optimization recommendation
    RecommendationSummary:
      required:
      - totalCreateIndex
      - totalDropIndex
      - totalCount
      type: object
      properties:
        totalCreateIndex:
          type: integer
          description: Number of create index recommendations
          format: uint32
        totalDropIndex:
          type: integer
          description: Number of drop index recommendations
          format: uint32
        totalCount:
          type: integer
          description: Total number of recommendations
          format: uint32
      description: Recommendations summary
    ListIndexRecommendationsResponse:
      required:
      - items
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/IndexRecommendation'
          description: List of index recommendations
        nextPageCursor:
          type: string
          description: Pagination cursor to retrieve the next page
        summary:
          allOf:
          - $ref: '#/components/schemas/RecommendationSummary'
          description: Summary statistics
      description: Response with index recommendations
    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/advisorapi_batchgetadvisordatabasestats.md
  - https://docs.cast.ai/reference/advisorapi_closeadvisorrecommendation.md
  - https://docs.cast.ai/reference/advisorapi_getadvisorcachegroup.md
  - https://docs.cast.ai/reference/advisorapi_getadvisordatabase.md
  - https://docs.cast.ai/reference/advisorapi_getadvisordatabaseinstance.md
  - https://docs.cast.ai/reference/advisorapi_getadvisorrecommendationdetail.md
  - https://docs.cast.ai/reference/advisorapi_listadvisorcachegroups.md
  - https://docs.cast.ai/reference/advisorapi_listadvisordatabaseinstances.md
  - https://docs.cast.ai/reference/advisorapi_listadvisordatabases.md
  - https://docs.cast.ai/reference/advisorapi_listadvisorrecommendations.md
  - https://docs.cast.ai/reference/advisorapi_listtoprecommendations.md
  - https://docs.cast.ai/reference/advisorapi_markadvisordbagentuninstalled.md
  - https://docs.cast.ai/reference/advisorapi_reopenadvisorrecommendation.md
  - https://docs.cast.ai/reference/advisorapi_resendadvisorvalidationrequest.md
  - https://docs.cast.ai/reference/advisorapi_resetadvisorrecommendations.md
  - https://docs.cast.ai/reference/cachegroupsapi_getindexadvisorcachegroup.md
  - https://docs.cast.ai/reference/cachegroupsapi_listindexadvisorcachegroups.md
  - https://docs.cast.ai/reference/cachegroupsapi_sendagentheartbeat.md
  - https://docs.cast.ai/reference/cachingapi_createcacherule.md
  - https://docs.cast.ai/reference/cachingapi_createproxy.md
  - https://docs.cast.ai/reference/cachingapi_deletecacherule.md
  - https://docs.cast.ai/reference/cachingapi_exchangeproxystate.md
  - https://docs.cast.ai/reference/cachingapi_getinstanceproxycachemetrics.md
  - https://docs.cast.ai/reference/cachingapi_getproxycachemetrics.md
  - https://docs.cast.ai/reference/cachingapi_getproxycachequeryinsights.md
  - https://docs.cast.ai/reference/cachingapi_getproxycachequerytemplate.md
  - https://docs.cast.ai/reference/cachingapi_getproxycachesummary.md
  - https://docs.cast.ai/reference/cachingapi_getproxyconnectionsmetrics.md
  - https://docs.cast.ai/reference/cachingapi_getproxyperformancemetrics.md
  - https://docs.cast.ai/reference/cachingapi_getproxyqueries.md
  - https://docs.cast.ai/reference/cachingapi_listcacherules.md
  - https://docs.cast.ai/reference/cachingapi_reportoperationalmetrics.md
  - https://docs.cast.ai/reference/cachingapi_reportpoolingmetrics.md
  - https://docs.cast.ai/reference/cachingapi_reportquerymetrics.md
  - https://docs.cast.ai/reference/cachingapi_updatecacherule.md
  - https://docs.cast.ai/reference/cachingapi_updateproxydatabase.md
  - https://docs.cast.ai/reference/databaseinstanceconfigapi_reportdatabaseinstanceconfig.md
  - https://docs.cast.ai/reference/databaseinstancesapi_createdatabase.md
  - https://docs.cast.ai/reference/databaseinstancesapi_createdatabaseinstance.md
  - https://docs.cast.ai/reference/databaseinstancesapi_deletedatabase.md
  - https://docs.cast.ai/reference/databaseinstancesapi_deletedatabaseinstance.md
  - https://docs.cast.ai/reference/databaseinstancesapi_getcloudsyncstatus.md
  - https://docs.cast.ai/reference/databaseinstancesapi_getdatabase.md
  - https://docs.cast.ai/reference/databaseinstancesapi_getdatabaseinstancecachingsummary.md
  - https://docs.cast.ai/reference/databaseinstancesapi_getdatabaseinstancedetails.md
  - https://docs.cast.ai/reference/databaseinstancesapi_getdatabaseinstancehealthmetrics.md
  - https://docs.cast.ai/reference/databaseinstancesapi_getdatabaseinstancemetricsfilteroptions.md
  - https://docs.cast.ai/reference/databaseinstancesapi_getdatabaseinstancescloudintegrationsummary.md
  - https://docs.cast.ai/reference/databaseinstancesapi_listcachingpotentialdatabases.md
  - https://docs.cast.ai/reference/databaseinstancesapi_listcloudoptimizationcandidates.md
  - https://docs.cast.ai/reference/databaseinstancesapi_listconnectionpoolingcandidates.md
  - https://docs.cast.ai/reference/databaseinstancesapi_listdatabaseinstancemembers.md
  - https://docs.cast.ai/reference/databaseinstancesapi_listdatabaseinstances.md
  - https://docs.cast.ai/reference/databaseinstancesapi_listtopqueryrecommendations.md
  - https://docs.cast.ai/reference/databaseinstancesapi_updatedatabaseinstance.md
  - https://docs.cast.ai/reference/databasesapi_getcachedatabase.md
  - https://docs.cast.ai/reference/databasesapi_listcachedatabases.md
  - https://docs.cast.ai/reference/dbagentapi_ingestagentheartbeat.md
  - https://docs.cast.ai/reference/dbagentapi_ingestmysqlindexsnapshots.md
  - https://docs.cast.ai/reference/dbagentapi_ingestmysqlquerystats.md
  - https://docs.cast.ai/reference/dbagentapi_ingestmysqltablesmetadata.md
  - https://docs.cast.ai/reference/dbagentapi_ingestpostgresindexsnapshots.md
  - https://docs.cast.ai/reference/dbagentapi_ingestpostgresquerystats.md
  - https://docs.cast.ai/reference/dbagentapi_ingestpostgrestablesmetadata.md
  - https://docs.cast.ai/reference/indexrecommendationsapi_listindexrecommendations.md
  - https://docs.cast.ai/reference/indexsnapshotsapi_batchcreateindexsnapshots.md
  - https://docs.cast.ai/reference/indexsnapshotsapi_batchcreatemysqlindexsnapshots.md
  - https://docs.cast.ai/reference/querystatsapi_batchcreatemysqlquerystats.md
  - https://docs.cast.ai/reference/querystatsapi_batchcreatepgquerystats.md
  - https://docs.cast.ai/reference/querystatsapi_batchcreatequerystats.md
  - https://docs.cast.ai/reference/tablemetadataapi_batchcreatemysqltablesmetadata.md
  - https://docs.cast.ai/reference/tablemetadataapi_batchcreatetablesmetadata.md
  - https://docs.cast.ai/reference/telemetryapi_ingesttelemetryevents.md
  - https://docs.cast.ai/reference/telemetryapi_listtelemetryevents.md
  merge:
    pages: 74
    deduped: 412
    conflicts_kept_first: 0