---
title: "Get Agent Performance"
method: GET
path: "/agent/analytics/performance"
---

# Get Agent Performance

`GET /agent/analytics/performance`

Agent accountability: proposal precision, coverage per change type
(proposed vs done-by-hand), and per-routine performance. Coverage/done-by-
hand come from the ClickHouse change log; proposal outcomes come from the
Postgres plan graph.

## Query parameters

- `date_range[since]` union, required
  - string, date
  - string, date-time
  - string
- `date_range[until]` union
  - string, date
  - string, date-time
  - string
- `tz` string, nullable
- `start_of_week` 0 | 1
- `channel[]` string[], nullable
- `ad_platform_id[]` integer[], nullable
- `change_source[]` ChangeSource[], nullable
- `change_type[]` SemanticChangeType[], nullable
- `object_scope[]` AdChangeObjectScope[], nullable
- `actor[]` string[], nullable
- `routine[]` string[], nullable
- `hide_system` boolean

## Headers

- `Authorization` string, nullable
- `X-User-Id` string, nullable
- `X-Browser-Time-Zone` string, nullable

## Cookies

- `session_id` string, nullable

## Response `200`

Successful Response

- AgentPerformanceResponse
  - `kpis` AgentPerformanceKpis, required
    - `coverage` number, required
    - `precision` number, required
    - `rejected` integer, required
    - `manual_changes` integer, required
  - `coverage_by_type` CoverageTypeRow[], required
    - `change_type` 'create_new' | 'meta_review' | 'kill' | 'create_paused' | 'launch' | 'resurrect' | 'scale_up' | 'pull_back' | 'budget_other' | 'bid' | 'rename' | 'audience' | 'creative' | 'schedule' | 'delivery' | 'other', required — Read-side interpretation of a change, the dashboard's primary vocabulary ("Kill losers", "Scale up", ...). Derived from category/operation/field_key plus the value's direction; `classify_semantic_change` is the reference implementation and the SQL derivation in the read API must match it (pinned by a parity test).
    - `automated` boolean, required
    - `proposals` integer, required
    - `accepted` integer, required
    - `rejected` integer, required
    - `skipped` integer, required
    - `converge_changes` integer, required
    - `manual_changes` integer, required
    - `coverage` number, required
  - `rejected_proposals` RejectedProposal[], required
    - `agent_session_id` integer, required
    - `plan_id` integer, required
    - `reason` string, nullable, required
    - `routine_name` string, nullable, required
    - `summary` string, required
    - `object_scope` string, nullable, required
    - `object_name` string, nullable, required
    - `when` string, date-time, required
  - `routines` RoutinePerformance[], required
    - `scheduled_task_id` integer, required
    - `routine_name` string, nullable, required
    - `runs` integer, required
    - `plans` integer, required
    - `proposals` integer, required
    - `accepted` integer, required
    - `rejected` integer, required
    - `precision` number, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/runconverge/apis/fastapi.md) · [All operations](https://skmtc.dev/runconverge/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/runconverge/fastapi/revisions/1452e350bd1d/schema)
