> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mixpeek.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Engine Performance

> Get engine performance metrics over time.

Query profiling data logged by the engine's profiling infrastructure.
All queries are automatically filtered to your namespace.

**Time Range:**
- Specify `hours` for recent history (e.g., `hours=24` for last 24 hours)
- OR specify `start_date` and `end_date` for custom range
- Defaults to last 24 hours if neither provided

**Grouping:**
- `minute`: High-resolution (for short time ranges)
- `hour`: Standard resolution (default)
- `day`: For longer time ranges
- `week`, `month`: For historical trends

**Response:**
- Time-series metrics (avg, p50, p95, p99 latencies)
- Summary statistics across the entire time range
- All latencies in milliseconds

**Example:**
```bash
GET /v1/analytics/performance/engine?hours=24&group_by=hour
```



## OpenAPI

````yaml get /v1/analytics/performance/engine
openapi: 3.1.0
info:
  title: Mixpeek API
  description: >-
    This is the Mixpeek API, providing access to various endpoints for data
    processing and retrieval.
  termsOfService: https://mixpeek.com/terms
  contact:
    name: Mixpeek Support
    url: https://mixpeek.com/contact
    email: info@mixpeek.com
  version: '0.82'
servers:
  - url: https://api.mixpeek.com
    description: Production
security:
  - BearerAuth: []
paths:
  /v1/analytics/performance/engine:
    get:
      tags:
        - Analytics
        - Analytics - Performance
      summary: Get Engine Performance
      description: >-
        Get engine performance metrics over time.


        Query profiling data logged by the engine's profiling infrastructure.

        All queries are automatically filtered to your namespace.


        **Time Range:**

        - Specify `hours` for recent history (e.g., `hours=24` for last 24
        hours)

        - OR specify `start_date` and `end_date` for custom range

        - Defaults to last 24 hours if neither provided


        **Grouping:**

        - `minute`: High-resolution (for short time ranges)

        - `hour`: Standard resolution (default)

        - `day`: For longer time ranges

        - `week`, `month`: For historical trends


        **Response:**

        - Time-series metrics (avg, p50, p95, p99 latencies)

        - Summary statistics across the entire time range

        - All latencies in milliseconds


        **Example:**

        ```bash

        GET /v1/analytics/performance/engine?hours=24&group_by=hour

        ```
      operationId: get_engine_performance_v1_analytics_performance_engine_get
      parameters:
        - name: hours
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 720
                minimum: 1
              - type: 'null'
            description: Hours of history (alternative to date range)
            title: Hours
          description: Hours of history (alternative to date range)
        - name: start_date
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date-time
              - type: 'null'
            description: Start date for time range
            title: Start Date
          description: Start date for time range
        - name: end_date
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date-time
              - type: 'null'
            description: End date for time range
            title: End Date
          description: End date for time range
        - name: group_by
          in: query
          required: false
          schema:
            type: string
            pattern: ^(minute|hour|day|week|month)$
            description: Time grouping (minute, hour, day, week)
            default: hour
            title: Group By
          description: Time grouping (minute, hour, day, week)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnginePerformanceResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuth: []
          NamespaceHeader: []
components:
  schemas:
    EnginePerformanceResponse:
      properties:
        time_range:
          $ref: '#/components/schemas/api__analytics__models__TimeRange'
          description: Time range of the query
        metrics:
          items:
            $ref: '#/components/schemas/PerformanceMetric'
          type: array
          title: Metrics
          description: Time-series performance metrics
        summary:
          anyOf:
            - $ref: '#/components/schemas/PerformanceSummary'
            - type: 'null'
          description: Overall summary statistics
        service_health:
          anyOf:
            - $ref: '#/components/schemas/ServiceHealth'
            - type: 'null'
          description: >-
            Per-namespace service-health dimensions: availability,
            degraded/partial rates, timeout/throttle rates and dependency
            health. Unwired dimensions are None with a stated reason, never a
            fabricated zero.
      type: object
      required:
        - time_range
        - metrics
      title: EnginePerformanceResponse
      description: Response for engine performance query.
    ErrorResponse:
      properties:
        success:
          type: boolean
          title: Success
          description: Always false for error responses
          default: false
        status:
          type: integer
          title: Status
          description: HTTP status code for this error
        error:
          $ref: '#/components/schemas/ErrorDetail'
          description: Error details payload
      type: object
      required:
        - status
        - error
      title: ErrorResponse
      description: Error response model.
      examples:
        - error:
            details:
              id: ns_123
              resource: namespace
            message: Namespace not found
            type: NotFoundError
          status: 404
          success: false
    api__analytics__models__TimeRange:
      properties:
        start:
          type: string
          format: date-time
          title: Start
          description: Start time (UTC)
        end:
          type: string
          format: date-time
          title: End
          description: End time (UTC)
      type: object
      required:
        - start
        - end
      title: TimeRange
      description: Time range for analytics queries.
    PerformanceMetric:
      properties:
        time_bucket:
          type: string
          format: date-time
          title: Time Bucket
          description: Time bucket for this metric (hour, day, etc.)
        execution_count:
          type: integer
          title: Execution Count
          description: Number of executions in this period
        avg_latency_ms:
          type: number
          title: Avg Latency Ms
          description: Average latency in milliseconds
        p50_latency_ms:
          type: number
          title: P50 Latency Ms
          description: 50th percentile (median) latency
        p95_latency_ms:
          type: number
          title: P95 Latency Ms
          description: 95th percentile latency
        p99_latency_ms:
          type: number
          title: P99 Latency Ms
          description: 99th percentile latency
        max_latency_ms:
          type: number
          title: Max Latency Ms
          description: Maximum latency observed
      type: object
      required:
        - time_bucket
        - execution_count
        - avg_latency_ms
        - p50_latency_ms
        - p95_latency_ms
        - p99_latency_ms
        - max_latency_ms
      title: PerformanceMetric
      description: Single performance metric data point.
    PerformanceSummary:
      properties:
        total_executions:
          type: integer
          title: Total Executions
          description: Total number of executions
          default: 0
        avg_latency_ms:
          type: number
          title: Avg Latency Ms
          description: Average latency
          default: 0
        p50_latency_ms:
          type: number
          title: P50 Latency Ms
          description: Median latency
          default: 0
        p95_latency_ms:
          type: number
          title: P95 Latency Ms
          description: 95th percentile latency
          default: 0
        p99_latency_ms:
          type: number
          title: P99 Latency Ms
          description: 99th percentile latency
          default: 0
        max_latency_ms:
          type: number
          title: Max Latency Ms
          description: Maximum latency
          default: 0
        total_time_seconds:
          type: number
          title: Total Time Seconds
          description: Total time spent across all executions
          default: 0
      type: object
      title: PerformanceSummary
      description: Summary statistics for performance.
    ServiceHealth:
      properties:
        availability:
          anyOf:
            - type: number
            - type: 'null'
          title: Availability
          description: >-
            Success rate over the latest rollup window: 1 - failed_rate from the
            namespace `_signals` rollup doc. None = no rollup doc for the window
            yet, not zero.
        degraded_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Degraded Rate
          description: >-
            Fraction of executions that degraded, read from the namespace rollup
            doc's degraded_rate. None = not yet computed here, not zero.
        partial_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Partial Rate
          description: >-
            Fraction of executions that degraded but still returned results,
            from the rollup doc's partial_rate. None = not yet computed here,
            not zero.
        timeout_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Timeout Rate
          description: >-
            Fraction of executions that hit a stage-budget ceiling (a stage
            cancelled/skipped for exceeding its hard latency ceiling), read from
            the namespace rollup doc's timeout_rate. None = no rollup doc for
            the window yet, or the doc predates the flag; not zero. A real 0.0
            means no timeouts in the window.
        throttle_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Throttle Rate
          description: >-
            Fraction of executions rejected by a credit/quota cap (the
            UnauthorizedError-on-cap class), read from the namespace rollup
            doc's throttle_rate. None = no rollup doc for the window yet, or the
            doc predates the flag; not zero. A real 0.0 means no cap rejections
            in the window.
        dependency_health:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Dependency Health
          description: >-
            Per-dependency status (shard / embedding / redis / object-store).
            None = no readable per-dependency health registry exists yet; the
            Ownership registry is not present in this codebase, so there is
            nothing to join per-tenant. Not an empty object.
        window_end_ts:
          anyOf:
            - type: number
            - type: 'null'
          title: Window End Ts
          description: >-
            Epoch seconds of the rollup window the rates were read from. None
            when no rollup doc was found.
        freshness_seconds:
          type: integer
          title: Freshness Seconds
          description: >-
            Metrics-availability budget: these health dimensions reflect state
            within this many seconds (the 'within 2 minutes' guarantee). Rollup
            docs are folded at the signals sweep cadence.
          default: 120
        reconciliation:
          type: string
          title: Reconciliation
          description: Stated tolerance for how these counts tie to request logs.
          default: >-
            Rates come from the unsampled per-execution `_signals` ledger (one
            doc per execution) folded into the latest complete rollup window.
            They reconcile to request logs within one rollup window (default 60
            minutes); executions in the in-progress window may not be folded
            yet.
      type: object
      title: ServiceHealth
      description: >-
        Per-namespace service-health dimensions.


        Honest health is the whole point of this block. Every dimension whose

        source is not wired returns None with the reason stated in its Field

        description. None means "not yet computed here", never zero: a
        fabricated

        0.0 or 1.0 would read as perfect health and hide the gap.


        The rollup-backed dimensions (availability, degraded_rate, partial_rate,

        and — timeout_rate, throttle_rate) are READ from the namespace

        rollup doc the signals sweep already writes
        (api/documents/signals_rollup.py,

        namespace_rollup_doc). This block never recomputes the rollup.

        dependency_health remains unwired (None) until a per-dependency registry

        exists.
    ErrorDetail:
      properties:
        message:
          type: string
          title: Message
          description: Human-readable error message
        type:
          type: string
          title: Type
          description: Stable error type identifier (machine-readable)
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
          description: >-
            Fine-grained error code for programmatic handling (e.g.,
            namespace_name_taken, feature_extractor_not_found). Present only
            when consumers may need to branch on a specific error condition.
        details:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Details
          description: >-
            Optional structured details to help debugging (validation errors,
            IDs, etc.)
      type: object
      required:
        - message
        - type
      title: ErrorDetail
      description: Error detail model.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Mixpeek API key, sent as `Authorization: Bearer mxp_sk_...`. Create one
        in Studio under Settings → API Keys, or with an admin key via `POST
        /v1/organizations/users/{user_email}/api-keys`. A missing, malformed,
        unknown, revoked, inactive or expired key returns 401; a key without the
        permission, scope or plan an operation needs returns 403.
    NamespaceHeader:
      type: apiKey
      in: header
      name: X-Namespace
      description: >-
        Namespace id (`ns_...`), not the namespace name. This scopes the request
        rather than authenticating it, and it is required on every operation
        marked `x-mixpeek-namespace-scoped`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.