Cortex Custom Metrics API

The Custom Metrics API from Cortex — 4 operation(s) for custom metrics.

Operations 9

GET /api/v1/eng-intel/custom-metrics List custom metric definitions #
POST /api/v1/eng-intel/custom-metrics Create a custom metric definition #
DELETE /api/v1/eng-intel/custom-metrics/{customMetricKey} Delete a custom metric definition #
GET /api/v1/eng-intel/custom-metrics/{customMetricKey} Retrieve a custom metric definition #
PUT /api/v1/eng-intel/custom-metrics/{customMetricKey} Update a custom metric definition #
DELETE /api/v1/eng-intel/custom-metrics/{customMetricKey}/entity/{tagOrId} Delete custom metrics data points #
GET /api/v1/eng-intel/custom-metrics/{customMetricKey}/entity/{tagOrId} Retrieve custom metrics data points #
POST /api/v1/eng-intel/custom-metrics/{customMetricKey}/entity/{tagOrId} Add custom metrics data point #
POST /api/v1/eng-intel/custom-metrics/{customMetricKey}/entity/{tagOrId}/bulk Add custom metrics data points in bulk #

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/cortex-idp:cortex-idp-custom-metrics-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

cortex-idp-custom-metrics-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: The Cortex REST API provides programmatic access to the data in the catalog, Scorecards, and more.
  title: Cortex Custom Metrics API
  version: v1
servers:
- url: https://api.getcortexapp.com
  description: Cortex Cloud API host
security:
- bearerAuth: []
tags:
- name: Custom Metrics
paths:
  /api/v1/eng-intel/custom-metrics:
    get:
      description: Returns every custom metric defined in the workspace, sorted by key. API key must have the `View Eng Intelligence` permission. Draft metrics are included only when the key also has the `Configure Eng Intelligence custom metrics` permission.
      operationId: listCustomMetricDefinitions
      parameters:
      - description: Number of results to return per page, between 1 and 1000. Default 250.
        in: query
        name: pageSize
        required: true
        schema:
          type: integer
          format: int32
          default: 250
      - description: Page number to return, 0-indexed. Default 0.
        in: query
        name: page
        required: true
        schema:
          type: integer
          format: int32
          default: 0
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCustomMetricDefinitions'
          description: A page of custom metric definitions
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: List custom metric definitions
      tags:
      - Custom Metrics
      x-cortex-mcp-description: List the custom metrics defined in the workspace, sorted by key. Each definition has its key, name, type (PUBLIC_API or CQL), description, valence, category, and draft flag. Use a key from this list with getCustomMetricData or createCustomMetricData.
      x-cortex-mcp-enabled: 'true'
    post:
      description: Defines a custom metric of type `PUBLIC_API`, which you then record data points against. The key cannot change after creation. API key must have the `Configure Eng Intelligence custom metrics` permission.
      operationId: createCustomMetricDefinition
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomMetricDefinitionRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomMetricDefinition'
          description: The created custom metric definition
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The request body failed validation
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: A custom metric with this key already exists
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Create a custom metric definition
      tags:
      - Custom Metrics
      x-cortex-mcp-description: Define a new PUBLIC_API custom metric so data points can be recorded against its key. The key must be unique, uses letters, digits, and hyphens, and cannot change later. CQL metrics cannot be created through this tool.
      x-cortex-mcp-enabled: 'true'
  /api/v1/eng-intel/custom-metrics/{customMetricKey}:
    delete:
      description: Removes the metric from Eng Intelligence. Its recorded data points stay out of reach, and creating the key again starts with no data. Only `PUBLIC_API` metrics can be deleted through the API. API key must have the `Configure Eng Intelligence custom metrics` permission.
      operationId: deleteCustomMetricDefinition
      parameters:
      - description: Key of the custom metric
        example: deploy-frequency
        in: path
        name: customMetricKey
        required: true
        schema:
          type: string
      responses:
        '204':
          description: The custom metric was deleted
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The metric is a CQL metric
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: No custom metric has this key
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Delete a custom metric definition
      tags:
      - Custom Metrics
      x-cortex-mcp-description: Cortex Custom Metric Definitions API - Read and manage the custom metric keys that custom metric data points are recorded against
      x-cortex-mcp-enabled: 'false'
    get:
      description: API key must have the `View Eng Intelligence` permission. A draft metric returns 404 unless the key also has the `Configure Eng Intelligence custom metrics` permission.
      operationId: getCustomMetricDefinition
      parameters:
      - description: Key of the custom metric
        example: deploy-frequency
        in: path
        name: customMetricKey
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomMetricDefinition'
          description: The custom metric definition
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: No custom metric has this key
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Retrieve a custom metric definition
      tags:
      - Custom Metrics
      x-cortex-mcp-description: Retrieve one custom metric definition by its key. Returns 404 if no custom metric has that key.
      x-cortex-mcp-enabled: 'true'
    put:
      description: Replaces the definition in full, so an omitted optional field is cleared. Only `PUBLIC_API` metrics can be updated through the API. API key must have the `Configure Eng Intelligence custom metrics` permission.
      operationId: updateCustomMetricDefinition
      parameters:
      - description: Key of the custom metric
        example: deploy-frequency
        in: path
        name: customMetricKey
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomMetricDefinitionRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomMetricDefinition'
          description: The updated custom metric definition
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The request body failed validation, or the metric is a CQL metric
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: No custom metric has this key
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Update a custom metric definition
      tags:
      - Custom Metrics
      x-cortex-mcp-description: Replace a PUBLIC_API custom metric definition in full, identified by customMetricKey. Omitted optional fields are cleared, so read the definition first with getCustomMetricDefinition and send every field back. The key and type cannot change, and CQL metrics cannot be updated through this tool.
      x-cortex-mcp-enabled: 'true'
  /api/v1/eng-intel/custom-metrics/{customMetricKey}/entity/{tagOrId}:
    delete:
      description: Deletes custom metric data points for entity.
      operationId: deleteByTimeRange
      parameters:
      - description: Key for the custom metric filter
        in: path
        name: customMetricKey
        required: true
        schema:
          type: string
      - description: The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.
        in: path
        name: tagOrId
        required: true
        schema:
          type: string
          description: Entity identifier - can be a tag or CID
      - description: Start date for the deletion (inclusive)
        in: query
        name: startDate
        required: true
        schema:
          type: string
          format: date-time
      - description: End date for the deletion (inclusive)
        in: query
        name: endDate
        required: true
        schema:
          type: string
          format: date-time
      responses:
        '204':
          description: Successfully deleted data points
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Invalid filters
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Delete custom metrics data points
      tags:
      - Custom Metrics
      x-cortex-mcp-description: Delete custom metric data points within a time range. Disabled for MCP access to preserve metric history
      x-cortex-mcp-enabled: 'false'
    get:
      description: Lists all custom metrics data points for an entity
      operationId: getCustomMetricData
      parameters:
      - description: Key for the custom metric filter
        in: path
        name: customMetricKey
        required: true
        schema:
          type: string
      - description: The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.
        in: path
        name: tagOrId
        required: true
        schema:
          type: string
          description: Entity identifier - can be a tag or CID
      - description: 'Start date for the filter, inclusive (UTC, e.g. 2026-06-22T00:00:00). Default: 6 months ago'
        in: query
        name: startDate
        required: false
        schema:
          type: string
          format: date-time
      - description: End date for the filter, inclusive (UTC, e.g. 2026-06-22T00:00:00)
        in: query
        name: endDate
        required: false
        schema:
          type: string
          format: date-time
      - description: Number of results to return per page, between 1 and 1000. Default 250.
        in: query
        name: pageSize
        required: true
        schema:
          type: integer
          format: int32
          default: 250
      - description: Page number to return, 0-indexed. Default 0.
        in: query
        name: page
        required: true
        schema:
          type: integer
          format: int32
          default: 0
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomMetricDataResponse'
          description: Successfully retrieved custom metrics data points
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Invalid filters
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Retrieve custom metrics data points
      tags:
      - Custom Metrics
      x-cortex-mcp-description: Retrieve custom metric data points for an entity. Returns paginated time-series data for a specific custom metric, with optional filtering by date range to analyze trends and patterns.
      x-cortex-mcp-enabled: 'true'
    post:
      description: Adds a single custom metric data point for entity.
      operationId: createCustomMetricData
      parameters:
      - description: Key for the custom metric filter
        in: path
        name: customMetricKey
        required: true
        schema:
          type: string
      - description: The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.
        in: path
        name: tagOrId
        required: true
        schema:
          type: string
          description: Entity identifier - can be a tag or CID
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomDataRequest'
        required: true
      responses:
        '200':
          description: Successfully added data point
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Invalid filters
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Add custom metrics data point
      tags:
      - Custom Metrics
      x-cortex-mcp-description: Add one data point (value plus an optional timestamp, which defaults to now) to an entity's custom metric, identified by customMetricKey. The metric must already be defined. Timestamps cannot be in the future or more than 2 years old. Every call adds another point, so retrying creates duplicates. Read data back with getCustomMetricData.
      x-cortex-mcp-enabled: 'true'
  /api/v1/eng-intel/custom-metrics/{customMetricKey}/entity/{tagOrId}/bulk:
    post:
      description: Adds multiple custom metric data points for entity.
      operationId: createBulkCustomMetricData
      parameters:
      - description: Key for the custom metric filter
        in: path
        name: customMetricKey
        required: true
        schema:
          type: string
      - description: The tag (`x-cortex-tag`) or unique, auto-generated identifier (CID) for the entity. If the tag contains forward slashes, URL-encode each `/` as `%2F`. The tag is matched exactly as encoded, including leading, trailing, and consecutive slashes, which are preserved and not collapsed (for example, the tag `/services/payments-api` is referenced as `%2Fservices%2Fpayments-api`). Tags containing slashes are supported via the API but not in the Cortex UI; this difference is expected.
        in: path
        name: tagOrId
        required: true
        schema:
          type: string
          description: Entity identifier - can be a tag or CID
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomDataBulkRequest'
        required: true
      responses:
        '200':
          description: Successfully added data points
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Invalid filters
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Add custom metrics data points in bulk
      tags:
      - Custom Metrics
      x-cortex-mcp-description: Add multiple custom metric data points in bulk. Disabled for MCP access to prevent external systems from modifying metric data
      x-cortex-mcp-enabled: 'false'
components:
  schemas:
    ListCustomMetricDefinitions:
      required:
      - customMetrics
      - page
      - total
      - totalPages
      type: object
      properties:
        customMetrics:
          type: array
          items:
            $ref: '#/components/schemas/CustomMetricDefinition'
        page:
          type: integer
          description: Current page number, 0-indexed
          format: int32
        total:
          type: integer
          description: Total number of results
          format: int32
        totalPages:
          type: integer
          description: Total number of pages
          format: int32
      description: A page of custom metric definitions
    ErrorResponse:
      required:
      - message
      - type
      type: object
      properties:
        details:
          type: string
        errorCode:
          type: string
        gatewayHttpStatus:
          type: integer
          format: int32
        httpStatus:
          type: integer
          format: int32
        message:
          type: string
        requestId:
          type: string
        type:
          type: string
          enum:
          - INTEGRATION_MISSING
          - INTEGRATION_UNREGISTERED
          - INTEGRATION_UNSUPPORTED
          - INTEGRATION_GRAPHQL_ERROR
          - INTEGRATION_BAD_REQUEST
          - INTEGRATION_UNAUTHORIZED
          - INTEGRATION_FORBIDDEN
          - INTEGRATION_NOT_FOUND
          - INTEGRATION_UNPROCESSABLE_CONTENT
          - INTEGRATION_RATE_LIMITED
          - INTEGRATION_INTERNAL_ERROR
          - INTEGRATION_NOT_IMPLEMENTED
          - INTEGRATION_BAD_GATEWAY
          - INTEGRATION_UNAVAILABLE
          - INTEGRATION_GATEWAY_TIMEOUT
          - INTEGRATION_TIMED_OUT
          - INTEGRATION_CACHE_ERROR
          - INTEGRATION_UNHANDLED_HTTP_ERROR
          - INTEGRATION_UNHANDLED_EXCEPTION
          - INTEGRATION_UNEXPECTED_ERROR
          - ILLEGAL_ARGUMENT_ERROR
          - BAD_REQUEST
          - FORBIDDEN
          - NOT_FOUND
          - REQUEST_TIMEOUT
          - CONFLICT
          - UNHANDLED_EXCEPTION
          - UNCATEGORIZED
          - SERVICE_CREATOR
          - UNKNOWN_HOST
          - TOO_MANY_REQUESTS
    CustomMetricDefinition:
      required:
      - isDraft
      - key
      - name
      - type
      - valence
      type: object
      properties:
        category:
          type: string
          description: Free-text group for the metric
          example: Delivery
        cqlExpression:
          type: string
          description: The CQL expression behind a `CQL` metric. Null for `PUBLIC_API`.
        description:
          type: string
          description: What the metric measures
        isDraft:
          type: boolean
          description: A draft metric is hidden from Eng Intelligence
        key:
          type: string
          description: Unique key that data points are recorded against
          example: deploy-frequency
        name:
          type: string
          description: Display name
          example: Deploy frequency
        type:
          type: string
          description: '`PUBLIC_API` metrics take data points through the API. `CQL` metrics compute their values from a CQL expression and are read-only through the API.'
          enum:
          - CQL
          - PUBLIC_API
        valence:
          type: string
          description: Whether a higher value is better
          enum:
          - POSITIVE
          - NEGATIVE
          - NEUTRAL
      description: A custom metric defined in the workspace
    CreateCustomMetricDefinitionRequest:
      required:
      - key
      - name
      - valence
      type: object
      properties:
        category:
          type: string
          description: Free-text group for the metric
          example: Delivery
        description:
          type: string
          description: What the metric measures
        isDraft:
          type: boolean
          description: A draft metric still accepts data points but is hidden from Eng Intelligence. Defaults to false.
          default: false
        key:
          type: string
          description: Unique key that data points are recorded against. Letters, digits, and hyphens, 2 to 255 characters, starting and ending with a letter or digit.
          example: deploy-frequency
        name:
          type: string
          description: Display name
          example: Deploy frequency
        valence:
          type: string
          description: Whether a higher value is better. Defaults to NEUTRAL.
          enum:
          - POSITIVE
          - NEGATIVE
          - NEUTRAL
      description: A custom metric to define
    CreateCustomDataBulkDef:
      maxLength: 100
      minLength: 1
      required:
      - timestamp
      - value
      type: object
      properties:
        timestamp:
          type: string
          description: 'Timestamp for the data point in ISO 8601 format. Accepts timezone offsets (e.g., ''2024-08-14T11:00:00Z'' or ''2024-08-14T11:00:00+00:00''). Note: It can''t be earlier than 2 years'
          format: date-time
        value:
          type: number
          description: Value for the data point
          format: double
      description: List of data points
    CreateCustomDataRequest:
      required:
      - value
      type: object
      properties:
        timestamp:
          type: string
          description: 'Timestamp for the data point in ISO 8601 format. Accepts timezone offsets (e.g., ''2024-08-14T11:00:00Z'' or ''2024-08-14T11:00:00+00:00''). Note: It can''t be earlier than 2 years'
          format: date-time
        value:
          type: number
          description: Value for the data point
          format: double
      description: Data point to be added
    CustomMetricDataResponse:
      required:
      - data
      - page
      - total
      - totalPages
      type: object
      properties:
        data:
          type: array
          description: Data points
          items:
            $ref: '#/components/schemas/CustomMetricData'
        page:
          type: integer
          description: Current page number, 0-indexed
          format: int32
        total:
          type: integer
          description: Total number of results
          format: int32
        totalPages:
          type: integer
          description: Total number of pages
          format: int32
    CustomMetricData:
      required:
      - timestamp
      - value
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        value:
          type: number
          format: double
      description: Data points
    CreateCustomDataBulkRequest:
      required:
      - series
      type: object
      properties:
        series:
          maxLength: 100
          minLength: 1
          type: array
          description: List of data points
          items:
            $ref: '#/components/schemas/CreateCustomDataBulkDef'
      description: Data points to be added
    UpdateCustomMetricDefinitionRequest:
      required:
      - name
      - valence
      type: object
      properties:
        category:
          type: string
          description: Free-text group for the metric
          example: Delivery
        description:
          type: string
          description: What the metric measures
        isDraft:
          type: boolean
          description: A draft metric still accepts data points but is hidden from Eng Intelligence. Defaults to false.
          default: false
        name:
          type: string
          description: Display name
          example: Deploy frequency
        valence:
          type: string
          description: Whether a higher value is better. Defaults to NEUTRAL.
          enum:
          - POSITIVE
          - NEGATIVE
          - NEUTRAL
      description: The full replacement state for a custom metric
    TooManyRequestsProblemDetail:
      required:
      - type
      - title
      - status
      type: object
      properties:
        detail:
          type: string
        instance:
          type: string
          format: uri-reference
        retryAfter:
          minimum: 0
          type: integer
          description: The number of seconds until the rate limiting resets.
          format: int32
        status:
          maximum: 599
          minimum: 100
          type: integer
          format: int32
          enum:
          - 429
        title:
          type: string
        type:
          type: string
          format: uri-reference
  responses:
    TooManyRequests:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/TooManyRequestsProblemDetail'
      description: The client has exceeded the rate limit by performing too many requests in a short period. Retry the request after a delay.
      headers:
        Retry-After:
          description: The number of seconds until the rate limiting resets.
          schema:
            minimum: 0
            type: integer
            format: int32
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      description: 'All requests to the Cortex API need to provide an `Authorization: Bearer <token>` header, where `<token>` is an API key created in the Settings page of your workspace.'
      scheme: bearer
      type: http
x-provenance:
  method: harvested
  publisher: Cortex
  source: https://docs.cortex.io/openapi/cortex_swagger.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)