---
title: "Get Marketing Feedback Risks"
method: GET
path: "/internal/reliability/marketing/feedback/risks"
tags: ["internal"]
---

# Get Marketing Feedback Risks

`GET /internal/reliability/marketing/feedback/risks`

Paginated marketing risks whose run falls in `week_start`'s week, backing
the feedback signal & coverage drill-down.

Uses the same week bucketing (`date_trunc('week', run_time)`) and scope as
the weekly feedback series, so the list matches the clicked point. Lists all
risks (Kobalt-generated + reviewer-added) by default; the `flagged` /
`outdated` / `reviewer_added` / `dismissed` / `over_flagged` / `reason`
flags narrow the list (ANDed when combined).
Optional `source_clause` / `short_text` / `ignore_comment` / `source_family`
/ `disclosure` params narrow further when the admin clicks a group-by
bucket (repeat a param to OR multiple keys for merged near-dupe clusters).
Each row carries `file_id` to deeplink into the analysis history view and
`dismiss_reason` (the reviewer's stated reason, when dismissed).

## Query parameters

- `week_start` string, date, required — ISO week start (Monday) to drill into
- `company_id` string, uuid, nullable
- `team_id` string, uuid, nullable
- `flagged` boolean — Only risks a reviewer flagged
- `outdated` boolean — Only risks superseded by a re-run
- `reviewer_added` boolean — Only reviewer-added risks
- `dismissed` boolean — Only risks a reviewer dismissed
- `over_flagged` boolean — Only dismissals the reviewer marked as an over-flag / false positive (reason incorrect / out_of_scope / already_met)
- `reason` 'valid_ok' | 'already_met' | 'incorrect' | 'out_of_scope' | 'pre_approved' | 'other' — Why a reviewer dismissed a marketing risk (status=dismissed).
- `ignored` boolean — Only risks with an ignore comment
- `actioned` boolean — Only risks dispositioned (status set or outdated)
- `not_actioned` boolean — Only risks never dispositioned (no status, not outdated)
- `source_clause` string[], nullable — Narrow to risks whose normalized source_clause matches any key (repeat param to OR near-dupe cluster members)
- `short_text` string[], nullable — Narrow to risks whose normalized short_text matches any key (repeat param to OR)
- `ignore_comment` string[], nullable — Narrow to risks whose normalized ignore_comment matches any key (repeat param to OR)
- `source_family` string[], nullable — Narrow to a coarse source-family bucket: 'Marketing standards' or 'Regulatory' (repeat param to OR)
- `disclosure` string[], nullable — Narrow to a disclosure / standards-file key parsed from source_clause (repeat param to OR near-dupe cluster members)
- `limit` integer
- `offset` integer

## Response `200`

Successful Response

- FeedbackRisksResponse — Paginated risks whose run falls in the clicked ISO week, for the feedback signal & coverage drill-down. `total` is the full match count for the current filters (so the client can page); `disclosure_related_count` is how many of those matches cite a real Chime DL attribution id (not filename / ``(unknown)`` — not limited to the current page); `rows` is the `offset`..`offset+limit` slice.
  - `week_start` string, date, required
  - `total` integer, required
  - `disclosure_related_count` integer
  - `limit` integer, required
  - `offset` integer, required
  - `rows` FeedbackRiskRow[], required
    - `risk_id` string, uuid, required
    - `run_id` string, uuid, required
    - `file_id` string, uuid, required
    - `company_id` string, uuid, required
    - `company_name` string, required
    - `filename` string, required
    - `short_text` string, nullable, required
    - `source_clause` string, nullable, required
    - `severity` 'low' | 'medium' | 'high', required
    - `status` 'reject' | 'allow' | 'flag' | 'dismissed', required
    - `dismiss_reason` 'valid_ok' | 'already_met' | 'incorrect' | 'out_of_scope' | 'pre_approved' | 'other', required — Why a reviewer dismissed a marketing risk (status=dismissed).
    - `is_outdated` boolean, required
    - `is_reviewer_added` boolean, required
    - `ignore_comment` string, nullable, required
    - `notes_text` string, nullable, required
    - `run_time` string, date-time, required
    - `is_disclosure_related` boolean
    - `disclosure_id` string, nullable

## Other responses

- `422` — Validation Error

---

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