---
title: "Get Agent Observability Performance Trends"
method: POST
path: "/agent-observability/trends/performance"
tags: ["agent-observability"]
---

# Get Agent Observability Performance Trends

`POST /agent-observability/trends/performance`

## Request body

- SummaryRequest — Scope for a dashboard read. `project_ids` and `log_stream_ids` are both optional: omitted means every project in the caller's org, and every dashboard-eligible run within it. Supplying either outside the caller's org is rejected rather than silently narrowed, so a wrong scope surfaces as an error instead of a quietly smaller number. Both are typed as UUIDs so a malformed ID is rejected here, at the edge. As plain strings they reached Postgres as a comparison against a UUID column and surfaced as a 500.
  - `start_time` string, date-time, required
  - `end_time` string, date-time, required
  - `interval` 'hourly' | 'daily' | 'weekly' | 'monthly'
  - `project_ids` string[], nullable
  - `log_stream_ids` string[], nullable

## Response `200`

Successful Response

- SectionEnvelope — One section's worth of cards plus the metadata describing how complete it is. Availability semantics are frozen: - at least one card succeeded → `available=True`; `data_status` is `complete` when every card succeeded and `partial` when some did not. - every card failed → `available=False`, `data_status=unavailable`, and section-level `degraded` is set from the most common card failure. Cards remain in the payload with their own `degraded` payloads.
  - `section` 'summary' | 'usage_trends' | 'performance_trends' | 'evaluator_trends', required
  - `available` boolean, required
  - `meta` SectionMeta, required
    - `as_of` string, date-time, required
    - `data_status` 'complete' | 'partial' | 'unavailable', required
    - `mode` 'single_query' | 'run_batch', required — How the section's scope was resolved. `single_query` means one aggregation covered every run in scope. `run_batch` is reserved for the batching fallback, which is not implemented in V1 but is part of the frozen contract so the UI does not need a change when it lands.
    - `window` Window, required
      - `start_time` string, date-time, required
      - `end_time` string, date-time, required
      - `interval` 'hourly' | 'daily' | 'weekly' | 'monthly', required
    - `project_count` integer, required
    - `run_count` integer, required
  - `cards` Card[]
    - `id` 'requests' | 'spans' | 'eval_cost' | 'agent_cost' | 'total_tokens' | 'avg_latency' | 'api_failures' | 'input_tokens' | 'output_tokens' | 'evaluator', required
    - `label` string, required
    - `metric_type` 'count' | 'currency' | 'duration' | 'ratio' | 'score', required — Drives value formatting in the host.
    - `chart_type` 'line' | 'bar' | 'stacked_bar', required
    - `aggregation` 'sum' | 'average' | 'count', required
    - `status` 'ok' | 'degraded', required
    - `headline` Headline — The single number shown on the card. `value` is `None` only when the card is degraded or genuinely has nothing to report.
      - `value` number, nullable, required
      - `unit` string, required
      - `label` string, required
    - `degraded` Degraded — Why a card or section has no value.
      - `ems_code` integer, required
      - `reason` 'timeout' | 'memory_limit' | 'upstream_error' | 'range_too_large' | 'not_found', required
      - `message` string, required
      - `retryable` boolean, required
    - `series` Series[]
      - `key` string, required
      - `label` string, required
      - `points` SeriesPoint[], required
        - `bucket_start` string, date-time, required
        - `value` number, nullable, required
    - `metric_key` string, nullable
  - `degraded` Degraded — Why a card or section has no value.
    - `ems_code` integer, required
    - `reason` 'timeout' | 'memory_limit' | 'upstream_error' | 'range_too_large' | 'not_found', required
    - `message` string, required
    - `retryable` boolean, required

## Other responses

- `422` — Validation Error

## Changes

> 23 revisions in range; 2 not diffed.

- **2026-09-18** `20760c217c4f` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/galileo/apis/galileo-api-server/changes/agent-observability/trends/performance/post.md)

---

[API](https://skmtc.dev/galileo/apis/galileo-api-server.md) · [All operations](https://skmtc.dev/galileo/apis/galileo-api-server/llms.txt) · [OpenAPI document](https://skmtc.dev/galileo/apis/galileo-api-server/revisions/1d4b795a27b4?raw)
