> ## Documentation Index
> Fetch the complete documentation index at: https://cerebrium-kyle-phase0-docs-fixes.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Cerebrium's documentation MCP server is available at https://cerebrium.ai/docs/mcp for searching and querying these docs directly. Install the Cerebrium agent skill with `npx skills add https://cerebrium.ai/docs`. Append .md to any docs page URL to fetch that page as plain Markdown. API keys and authentication tokens are created in the Cerebrium dashboard at https://dashboard.cerebrium.ai.

# Get Runs Chart Data

> Retrieve aggregated run data optimized for charting over long time ranges.



## OpenAPI

````yaml https://s3.eu-west-1.amazonaws.com/www.cerebrium.ai/openapi_spec.json get /v2/projects/{project_id}/apps/{app_id}/runs/charts
openapi: 3.0.0
info:
  title: Cerebrium REST API
  description: >-
    REST API for interacting with Cerebrium. This API is mainly used by the
    Cerebrium CLI client, please run `pip install cerebrium` to install it.
  version: 1.0.0
  license:
    name: Proprietary
    url: https://www.cerebrium.ai/terms-of-service
servers:
  - url: https://rest.cerebrium.ai
security: []
paths:
  /v2/projects/{project_id}/apps/{app_id}/runs/charts:
    get:
      tags:
        - Runs
      summary: Get Runs Chart Data
      description: >-
        Retrieve aggregated run data optimized for charting over long time
        ranges.
      operationId: listAppRunsCharts
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
        - name: app_id
          in: path
          required: true
          schema:
            type: string
        - name: startDate
          in: query
          required: true
          description: Start of the time range, in RFC3339 format.
          schema:
            type: string
        - name: endDate
          in: query
          required: true
          description: End of the time range, in RFC3339 format.
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: >-
            Maximum number of individual runs to return when not aggregating.
            Must be > 0. Default: 100.
          schema:
            type: integer
        - name: offset
          in: query
          required: false
          description: >-
            Number of runs to skip when not aggregating. Must be >= 0. Default:
            0.
          schema:
            type: integer
        - name: status
          in: query
          required: false
          description: >-
            Filter runs by status. Valid values: pending, proxyQueued,
            containerQueued, processing, success, failure, cancelled.
          schema:
            type: string
        - name: statusCode
          in: query
          required: false
          description: Filter runs by HTTP status code.
          schema:
            type: integer
        - name: groupBy
          in: query
          required: false
          description: 'Time bucket for aggregated results. Valid values: minute, hour, day.'
          schema:
            type: string
        - name: aggregate
          in: query
          required: false
          description: >-
            Set to true to return aggregated counts instead of individual runs.
            Time ranges longer than 24 hours are aggregated automatically.
          schema:
            type: boolean
        - name: minStartupTimeMs
          in: query
          required: false
          description: >-
            Only include runs with a startup time of at least this many
            milliseconds.
          schema:
            type: integer
        - name: maxStartupTimeMs
          in: query
          required: false
          description: >-
            Only include runs with a startup time of at most this many
            milliseconds.
          schema:
            type: integer
        - name: minResponseTimeMs
          in: query
          required: false
          description: >-
            Only include runs with a response time of at least this many
            milliseconds.
          schema:
            type: integer
        - name: maxResponseTimeMs
          in: query
          required: false
          description: >-
            Only include runs with a response time of at most this many
            milliseconds.
          schema:
            type: integer
        - name: tz
          in: query
          required: false
          description: >-
            IANA timezone used for time bucketing (e.g. America/New_York).
            Default: UTC.
          schema:
            type: string
      responses:
        '200':
          description: >-
            Run data for charting, either individual runs or aggregated time
            buckets.
          content:
            application/json:
              schema:
                properties:
                  aggregatedData:
                    description: >-
                      Aggregated counts per time bucket, when aggregating. Each
                      item includes timeGroup, startTime, endTime, request
                      counts (totalRequests, successfulRequests, failedRequests,
                      cancelledRequests, proxyQueued, containerQueued,
                      processing), successRate (number), and timing statistics
                      in milliseconds (avg, p50, p90, p99, min, and max for
                      runtime and response time, plus avgColdstartTimeMs and
                      avgQueueTimeMs). Omitted when not aggregating.
                    type: array
                  groupBy:
                    description: >-
                      The time bucket size used for aggregation. Omitted when
                      not aggregating.
                    type: string
                  items:
                    description: >-
                      Individual runs, when not aggregating. Each item has id,
                      projectId, modelId, podName, coldstartTimeMs (integer),
                      totalQueueTimeMs (integer), runtimeMs (number),
                      totalResponseTimeMs (number), statusCode (integer),
                      createdAt, and updatedAt fields. Omitted when aggregating.
                    type: array
                  nextToken:
                    description: >-
                      Pagination token for the next page. Omitted when there are
                      no more results.
                    type: string
                  timeRange:
                    description: >-
                      The time range covered by the aggregated results. Omitted
                      when not aggregating.
                    type: string
                  total:
                    description: Total number of runs matching the query.
                    type: integer
                type: object
        '400':
          description: >-
            Bad request. The request was malformed or contained invalid
            parameters.
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Human-readable description of the error.
                    type: string
                type: object
        '401':
          description: >-
            Unauthorized. The Authorization header is missing or the token is
            invalid.
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Human-readable description of the error.
                    type: string
                type: object
      security:
        - BearerAuth: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Service Account Token authentication. To authenticate API requests:


        1. **Create a Service Account Token:**
           - Go to the [Cerebrium Dashboard](https://dashboard.cerebrium.ai/) and open the **API Keys** page
           - Click **Create Service Account**, name it (e.g., "GitHub Actions CI/CD"), choose an expiry date, and click **Create**
           - **Copy the token** generated for the desired service account

        2. **Use the Token:**
           Include the service account token in the Authorization header of API requests:
           `Authorization: Bearer <your-service-account-token>`

        3. **Best Practices:**
           - Create separate service accounts for different environments (dev, staging, prod)
           - Store tokens securely as secrets in consuming applications or workflows
           - Set appropriate expiry dates and rotate tokens regularly
           - Never commit tokens to source control

        For CI/CD integration examples, see the [CI/CD
        documentation](https://docs.cerebrium.ai/cerebrium/deployments/ci-cd).

````