Replicated cmx API

The cmx API from Replicated — 5 operation(s) for cmx.

Operations 6

GET /cmx/history List CMX usage history. #
GET /cmx/quotas List CMX quotas. #
GET /cmx/stats Get CMX usage stats. #
GET /cmx/user/public-keys Get public keys for the authenticated user. #
POST /cmx/user/public-keys Add a public key for the authenticated user. #
DELETE /cmx/user/public-keys/{user_id}/{fingerprint} Delete a public key for the authenticated user. #

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/replicated-cmx-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 email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

replicated-cmx-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Manage enterprise portal users, install options, branding, documentation, email templates, and access control.
  title: Vendor API V3 apps Cmx API
  contact:
    name: Replicated, Inc.
    url: http://www.replicated.com/
    email: info@replicated.com
  version: 3.0.0
servers:
- url: https://api.replicated.com/vendor/v3
tags:
- name: cmx
paths:
  /cmx/history:
    get:
      security:
      - api_key: []
      description: List CMX usage history for both VMs and clusters.
      tags:
      - cmx
      summary: List CMX usage history.
      operationId: listCMXHistory
      parameters:
      - x-go-name: PageSize
        description: Page size
        name: pageSize
        in: query
        schema:
          type: integer
          format: int64
          default: 20
      - x-go-name: CurrentPage
        description: Current page
        name: currentPage
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: SortColumn
        description: Sort column
        name: sortColumn
        in: query
        schema:
          type: string
      - x-go-name: SortDesc
        description: Sort descending
        name: sortDesc
        in: query
        schema:
          type: boolean
      - x-go-name: StartTimeStr
        description: Specify a start time in the format "YYYY-MM-DDTHH:MM:SSZ".
        name: start-time
        in: query
        schema:
          type: string
      - x-go-name: EndTimeStr
        description: Specify an end time in the format "YYYY-MM-DDTHH:MM:SSZ".
        name: end-time
        in: query
        schema:
          type: string
      - x-go-name: ActorFilter
        description: Filter history by actor type or name, e.g. "user" or "Replicated CLI".
        name: actor-filter
        in: query
        schema:
          type: string
      - x-go-name: TagFilter
        description: Filter history by tag, e.g. "tag1=value1".
        name: tag-filter
        in: query
        schema:
          type: string
      - x-go-name: TagSortKey
        description: 'Sort history by a specific key, e.g. "terminated_at" would sort by

          termination time.'
        name: tag-sort-key
        in: query
        schema:
          type: string
      - x-go-name: DistributionType
        description: Filter by distribution type
        name: distribution-type
        in: query
        schema:
          type: string
          enum:
          - kubernetes
          - vm
      - x-go-name: TotalOnly
        description: Only return the total count of items.  Supports filtering using other parameters.
        name: count-only
        in: query
        schema:
          type: boolean
      responses:
        '200':
          $ref: '#/components/responses/listCMXHistoryResponse'
        '400':
          $ref: '#/components/responses/responseErrBadRequest'
        '401':
          $ref: '#/components/responses/responseErrUnauthorized'
        '403':
          $ref: '#/components/responses/responseErrForbidden'
        '404':
          $ref: '#/components/responses/responseErrNotFound'
      servers:
      - url: https://api.replicated.com/vendor/v3
  /cmx/quotas:
    get:
      security:
      - api_key: []
      tags:
      - cmx
      summary: List CMX quotas.
      operationId: listCMXQuotas
      responses:
        '200':
          $ref: '#/components/responses/listCMXQuotasResponse'
        '400':
          $ref: '#/components/responses/responseErrBadRequest'
        '401':
          $ref: '#/components/responses/responseErrUnauthorized'
        '403':
          $ref: '#/components/responses/responseErrForbidden'
        '404':
          $ref: '#/components/responses/responseErrNotFound'
      servers:
      - url: https://api.replicated.com/vendor/v3
  /cmx/stats:
    get:
      security:
      - api_key: []
      description: 'Required RBAC Policy: kots/cluster/list'
      tags:
      - cmx
      summary: Get CMX usage stats.
      operationId: getCMXStats
      responses:
        '200':
          $ref: '#/components/responses/getCMXStatsResponse'
        '400':
          $ref: '#/components/responses/responseErrBadRequest'
        '401':
          $ref: '#/components/responses/responseErrUnauthorized'
        '403':
          $ref: '#/components/responses/responseErrForbidden'
        '404':
          $ref: '#/components/responses/responseErrNotFound'
      servers:
      - url: https://api.replicated.com/vendor/v3
  /cmx/user/public-keys:
    get:
      security:
      - api_key: []
      description: Returns all SSH public keys associated with the authenticated user in their team.
      tags:
      - cmx
      summary: Get public keys for the authenticated user.
      operationId: getUserPublicKeys
      responses:
        '200':
          $ref: '#/components/responses/getUserPublicKeysResponse'
        '400':
          $ref: '#/components/responses/responseErrBadRequest'
        '401':
          $ref: '#/components/responses/responseErrUnauthorized'
      servers:
      - url: https://api.replicated.com/vendor/v3
    post:
      security:
      - api_key: []
      description: Adds an SSH public key associated with the authenticated user in their team.
      tags:
      - cmx
      summary: Add a public key for the authenticated user.
      operationId: addUserPublicKey
      responses:
        '201':
          $ref: '#/components/responses/addUserPublicKeyResponse'
        '400':
          $ref: '#/components/responses/responseErrBadRequest'
        '401':
          $ref: '#/components/responses/responseErrUnauthorized'
      servers:
      - url: https://api.replicated.com/vendor/v3
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - public_key
              - user_id
              properties:
                public_key:
                  description: SSH public key to add
                  type: string
                  x-go-name: PublicKey
                user_id:
                  description: GitHub username or identifier for the public key
                  type: string
                  x-go-name: UserID
  /cmx/user/public-keys/{user_id}/{fingerprint}:
    delete:
      security:
      - api_key: []
      description: 'Deletes an SSH public key associated with the authenticated user in their team.

        Synced keys (from GitHub) cannot be deleted.'
      tags:
      - cmx
      summary: Delete a public key for the authenticated user.
      operationId: deleteUserPublicKey
      parameters:
      - description: The user ID (GitHub username or identifier) associated with the public key
        name: user_id
        in: path
        required: true
        schema:
          type: string
      - description: The SHA256 fingerprint of the public key to delete
        name: fingerprint
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/deleteUserPublicKeyResponse'
        '400':
          $ref: '#/components/responses/responseErrBadRequest'
        '401':
          $ref: '#/components/responses/responseErrUnauthorized'
        '404':
          $ref: '#/components/responses/responseErrNotFound'
      servers:
      - url: https://api.replicated.com/vendor/v3
components:
  schemas:
    CMXQuota:
      type: object
      properties:
        current_value:
          type: integer
          format: int64
          x-go-name: CurrentValue
        default_value:
          type: integer
          format: int64
          x-go-name: DefaultValue
        in_use:
          type: integer
          format: int64
          x-go-name: InUse
        name:
          type: string
          x-go-name: Name
        queued:
          type: integer
          format: int64
          x-go-name: Queued
        unit:
          type: string
          x-go-name: Unit
      x-go-package: github.com/replicatedhq/vandoor/handlers/vendor-api/replv3/cmx
    CMXHistory:
      description: Any non-historical fields have been omitted.
      type: object
      title: CMXHistory represents shared fields of history for various DistributionTypes.
      properties:
        actor:
          $ref: '#/components/schemas/Actor'
        assigned_at:
          type: string
          format: date-time
          x-go-name: AssignedAt
        created_at:
          type: string
          format: date-time
          x-go-name: CreatedAt
        credits_per_hour:
          type: integer
          format: int64
          x-go-name: CreditsPerHour
        disk_gib:
          type: integer
          format: int64
          x-go-name: DiskGiB
        distribution:
          type: string
          x-go-name: Distribution
        distribution_type:
          $ref: '#/components/schemas/DistributionType'
        duration:
          type: integer
          format: int64
          x-go-name: Duration
        expires_at:
          type: string
          format: date-time
          x-go-name: ExpiresAt
        flat_fee:
          type: integer
          format: int64
          x-go-name: FlatFee
        guid:
          type: string
          x-go-name: GUID
        has_network_report:
          type: boolean
          x-go-name: HasNetworkReport
        id:
          type: string
          x-go-name: ShortID
        instance_type:
          type: string
          x-go-name: InstanceType
        minutes_billed:
          type: integer
          format: int64
          x-go-name: MinutesBilled
        name:
          type: string
          x-go-name: Name
        network_id:
          type: string
          x-go-name: NetworkID
        node_groups:
          type: integer
          format: int64
          x-go-name: NodeGroupCount
        nodes:
          type: integer
          format: int64
          x-go-name: ClusterNodeCount
        running_at:
          type: string
          format: date-time
          x-go-name: RunningAt
        status:
          type: string
          x-go-name: Status
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
          x-go-name: Tags
        team_id:
          type: string
          x-go-name: TeamID
        terminated_at:
          type: string
          format: date-time
          x-go-name: TerminatedAt
        total_credits:
          type: integer
          format: int64
          x-go-name: TotalCredits
        ttl:
          type: string
          x-go-name: TTL
        version:
          type: string
          x-go-name: Version
      x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/cmx/types
    DistributionType:
      type: string
      x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/cmx/types
    Tag:
      type: object
      properties:
        key:
          type: string
          x-go-name: Key
        value:
          type: string
          x-go-name: Value
      x-go-package: github.com/replicatedhq/vandoor/pkg/vendor-api/cmx/types
    UserPublicKeyResponse:
      type: object
      title: UserPublicKeyResponse represents a public key in the response.
      properties:
        fingerprint:
          type: string
          x-go-name: Fingerprint
        is_synced:
          type: boolean
          x-go-name: IsSynced
        public_key:
          type: string
          x-go-name: PublicKey
        user_id:
          type: string
          x-go-name: UserID
      x-go-package: github.com/replicatedhq/vandoor/handlers/vendor-api/replv3/cmx
    Actor:
      type: object
      properties:
        description:
          type: string
          x-go-name: Description
        id:
          type: string
          x-go-name: ID
        link:
          type: string
          x-go-name: Link
        timestamp:
          type: string
          format: date-time
          x-go-name: Timestamp
        type:
          type: string
          x-go-name: Type
      x-go-package: github.com/replicatedhq/vandoor/pkg/models/types
  responses:
    listCMXQuotasResponse:
      description: ListCMXQuotasResponse contains the response to list CMX quotas
      content:
        application/json:
          schema:
            type: object
            properties:
              cmx_quotas:
                type: array
                items:
                  $ref: '#/components/schemas/CMXQuota'
                x-go-name: CMXQuotas
    responseErrUnauthorized:
      description: Return if the caller is not authorized
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                x-go-name: Message
    responseErrForbidden:
      description: Returned if the caller does not have the needed permission
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: object
                properties:
                  message:
                    type: string
                    x-go-name: Message
                  messageCode:
                    type: string
                    x-go-name: MessageCode
                x-go-name: Error
    responseErrNotFound:
      description: Returned on resource not found
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                x-go-name: Message
    responseErrBadRequest:
      description: Returned on bad input
      content:
        application/json:
          schema:
            type: object
            properties:
              error_code:
                description: Error code if available
                type: string
                x-go-name: ErrorCode
              message:
                description: Error message text if available
                type: string
                x-go-name: Message
    listCMXHistoryResponse:
      description: ListCMXHistoryResponse contains the response to listing CMX history
      content:
        application/json:
          schema:
            type: object
            properties:
              history:
                type: array
                items:
                  $ref: '#/components/schemas/CMXHistory'
                x-go-name: History
              total:
                type: integer
                format: int64
                x-go-name: Total
    getCMXStatsResponse:
      description: GetCMXStatsResponse contains the response to get CMX stats.
      content:
        application/json:
          schema:
            type: object
            properties:
              cluster_count:
                description: Total number of clusters.
                type: integer
                format: int64
                x-go-name: ClusterCount
              cost:
                description: Total cost of all clusters and VMs in cents.
                type: integer
                format: int64
                x-go-name: Cost
              credit_balance:
                description: Total remaining credit balance in cents.
                type: integer
                format: int64
                x-go-name: CreditBalance
              error:
                type: string
                x-go-name: Error
              usage_minutes:
                description: Total number of usage minutes across clusters and VMs.
                type: integer
                format: int64
                x-go-name: UsageMinutes
              vm_count:
                description: Total number of VMs.
                type: integer
                format: int64
                x-go-name: VMCount
    getUserPublicKeysResponse:
      description: GetUserPublicKeysResponse contains the response for getting user public keys.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                x-go-name: Error
              public_keys:
                type: array
                items:
                  $ref: '#/components/schemas/UserPublicKeyResponse'
                x-go-name: PublicKeys
    addUserPublicKeyResponse:
      description: AddUserPublicKeyResponse contains the response for adding a user public key.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                x-go-name: Error
              public_key:
                $ref: '#/components/schemas/UserPublicKeyResponse'
    deleteUserPublicKeyResponse:
      description: DeleteUserPublicKeyResponse contains the response for deleting a user public key.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                x-go-name: Error
              success:
                type: boolean
                x-go-name: Success
  securitySchemes:
    api_key:
      type: apiKey
      name: Authorization
      in: header