---
title: "Sideband finding coverage rollup for a team"
method: GET
path: "/teams/{team_id}/sideband-coverage"
tags: ["Sideband"]
---

# Sideband finding coverage rollup for a team

`GET /teams/{team_id}/sideband-coverage`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/teams/{team_id}/sideband-coverage`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Mnemom-Api-Key`

Per-source counts over a window. Operator-facing.

## Path parameters

- `team_id` string, required

## Query parameters

- `hours` integer

## Response `200`

Coverage rollup.

- SidebandCoverageReport: Per-team sideband sweep coverage over a 30-day window: per-axis rollup + raw daily rows. Operator dashboard input.
  - `team_id` string, required: Team the coverage was computed for.
  - `window_days` integer, required: Lookback window in days over which coverage is aggregated (currently fixed at 30).
  - `summary` object[], required: Per-axis rollup of sweep counts over the window.
    - `axis` string, required: Sweep axis (e.g. coherence, fault_line, fleet).
    - `total_swept` integer, required
    - `total_fired` integer, required
    - `total_skipped` integer, required
    - `last_swept_at` string, nullable, required: Timestamp of the most recent sweep for this axis, or null if never swept in-window.
    - `last_outcome` string, nullable, required: Outcome recorded on the most recent sweep, or null.
  - `rows` object[], required: Raw per-day, per-axis sweep log rows, ordered day desc then axis asc.
    - `team_id` string, required
    - `axis` string, required
    - `day` string, required: Sweep day (DATE).
    - `swept_count` integer, required
    - `fired_count` integer, required
    - `skipped_count` integer, required
    - `last_swept_at` string, required
    - `last_outcome` string, required
    - `last_duration_ms` integer, nullable, required

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Resource not found
- `429`: Rate-limit exceeded. The global per-IP limiter (100 requests/minute, applied to every `/v1/*` route) rejected this request. Back off until the window resets — `Retry-After` carries the cooldown in seconds and `X-RateLimit-Reset` the absolute reset time.
- `500`: Server error — request was well-formed but the server failed to fulfill it. Typically a downstream dependency (DB / RPC / external API) returned an unexpected error.

---

[API](https://skmtc.dev/mnemom/apis/mnemom-api.md) · [All operations](https://skmtc.dev/mnemom/apis/mnemom-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mnemom/apis/mnemom-api/revisions/274b7a6ea182?raw)
