---
title: "Day-bucketed eval-run activity"
method: GET
path: "/v1/eval-runs/activity"
tags: ["evals", "evals"]
---

# Day-bucketed eval-run activity

`GET /v1/eval-runs/activity`

One row per **UTC** day over the requested window, for the activity calendar — so a 12-month chart costs ~365 small rows instead of every raw eval run. Every day is present, including zero days. `failed` uses the same definition as `GET /v1/eval-runs?outcome=failed` (a completed run with at least one failing score), so clicking a cell and drilling into the list agrees with the chart. Server-side cached for 60s; the window is capped at 400 days.

## Query parameters

- `created_from` string, date-time, nullable — Inclusive lower bound; defaults to 365 days ago.
- `created_to` string, date-time, nullable — Upper bound; defaults to now. A date-only value (midnight) includes that whole day, matching the list endpoint.
- `scope` 'live' | 'simulation' | 'test', nullable
- `channel` string, nullable
- `evaluator_id` string, uuid, nullable
- `agent_id` string, uuid, nullable

## Response `200`

Successful Response

- EvalActivityResponse — Day-bucketed eval-run counts over a window, for the activity calendar. Days are **UTC**. Every day in ``[period_start, period_end)`` is present, including zero days, so a calendar grid needs no client-side gap filling.
  - `period_start` string, date-time, required
  - `period_end` string, date-time, required
  - `buckets` EvalActivityBucket[]
    - `date` string, date, required
    - `total` integer
    - `failed` integer
    - `errored` integer

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/revisions/5a5597ebb2d6/schema)
