> ## Documentation Index
> Fetch the complete documentation index at: https://docs.watchdoc.sphinxhq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Feedback

> Tell us when the engine got a check wrong.

Fraud detection is adversarial, and the documents you see are not the documents we tuned on.
Feedback is how the engine learns your issuers, your templates, and your risk appetite.

Anyone whose API key can read a check can send feedback on it. There is no separate permission.

## Send feedback

```bash theme={null}
curl https://api.sphinxhq.com/api/v1/document-checks/dc_8f2c.../feedback/ \
  -H "Authorization: Bearer $SPHINX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "rating": "disagree",
    "corrected_decision": "clear",
    "reason": "Con Edison reissues statements monthly; the revision history is expected."
  }'
```

| Field                | Required | Notes                                                                                                                                                     |
| -------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `rating`             | yes      | `agree` or `disagree`.                                                                                                                                    |
| `reason`             | no       | Free text, up to 5000 characters. This is the field that actually improves the engine. A `disagree` without one tells us something is wrong but not what. |
| `flag_code`          | no       | Makes the feedback about one flag rather than the overall verdict.                                                                                        |
| `corrected_decision` | no       | What the verdict should have been: `clear`, `pending`, `suspicious`, or `fraudulent`. Verdict-level only.                                                 |

## Verdict versus flag feedback

Omit `flag_code` and you are talking about the bottom line. Supply one and you are naming a
specific detector:

```json theme={null}
{ "rating": "disagree", "flag_code": "font_inconsistency", "reason": "This issuer mixes fonts in the header on every statement." }
```

Flag-level feedback is far more actionable, because it points at one detector on one document
family rather than at an outcome. Prefer it when you can identify what misfired.

You can also report a flag we *should* have raised but didn't. Pass the code from
[the catalogue](/flags) with `rating: "disagree"`. False negatives are the hardest signal for us
to find on our own.

## Response

```json theme={null}
{
  "id": 4218,
  "object": "check_feedback",
  "created_at": "2026-03-11T18:04:22Z",
  "document_check": "dc_8f2c...",
  "kind": "verdict",
  "rating": "disagree",
  "flag_code": null,
  "corrected_decision": "clear",
  "reason": "Con Edison reissues statements monthly; the revision history is expected."
}
```

## Notes

* Feedback is append-only. Changing your mind means sending a second row, not editing the first.
  We keep the sequence because a check that gets reconsidered twice is itself worth knowing about.
* Each row records the engine's verdict at the time it was given, so a later re-run of the same
  document never rewrites what you were reacting to.
* Sending feedback does not change the check's `decision`. Use the dashboard override for that.
