---
title: "Read outcome-based policy anomalies"
method: GET
path: "/api/decision/policies/{policy_id}/anomalies"
tags: ["Anomalies"]
---

# Read outcome-based policy anomalies

`GET /api/decision/policies/{policy_id}/anomalies`

## Request

- Base URL: `https://www.decide.fyi`
- URL: `https://www.decide.fyi/api/decision/policies/{policy_id}/anomalies`
- Auth: API key in header `x-api-key`

Returns decision_anomaly_report_v1 derived from the latest Decision Outcome per decision within the caller API-key scope. Scores are deterministic outcome-signal heuristics with explainable reason codes, not model predictions.

## Path parameters

- `policy_id` string, required

## Query parameters

- `policy_version` string
- `limit` integer
- `min_sample` integer
- `threshold` number
- `max_items` integer

## Response `200`

Policy anomaly report

- PolicyAnomalyReport
  - `ok` boolean, required
  - `decision_anomaly_report_version` 'decision_anomaly_report_v1', required
  - `generated_at` string
  - `policy_id` string, required
  - `policy_version` string, nullable
  - `source` 'decision_outcomes'
  - `minimum_sample_size` integer
  - `anomaly_threshold` number
  - `max_anomalies_returned` integer
  - `decisions_analyzed` integer, required
  - `outcomes_analyzed` integer
  - `distinct_decisions` integer
  - `status` 'scored' | 'insufficient_data'
  - `recommendation` 'collect_more_outcomes' | 'review_high_anomalies' | 'monitor_anomalies' | 'stable', required
  - `summary` object, required
    - `anomaly_count` integer
    - `returned_count` integer
    - `high_count` integer
    - `medium_count` integer
    - `low_count` integer
    - `max_score` number, nullable
  - `baseline` object, required
  - `anomalies` PolicyAnomaly[], required
    - `decision_id` string, required
    - `outcome_id` string, required
    - `anomaly_score` number, required
    - `severity` 'normal' | 'low' | 'medium' | 'high', required
    - `reasons` PolicyAnomalyReason[], required
      - `code` string, required
      - `message` string, required
      - `weight` number, required
      - `observed` object
      - `baseline` object
    - `decision_verdict` string
    - `outcome_status` string
    - `action_executed` boolean, nullable
    - `policy_id` string
    - `policy_version` string, nullable
    - `target_system` string, nullable
    - `target_object_id` string, nullable
    - `mutation` string, nullable
    - `reported_at` string, nullable
    - `outcome_hash` string, nullable
    - `decision_url` string, nullable
    - `verify_url` string, nullable
  - `window` object
  - `data_quality` object
  - `anomaly_hash` string, required

## Other responses

- `401`: API key missing, invalid, inactive, or unauthorized

---

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