| reason | No | Optional structured error-mode: 'wrong_number', 'bad_citation', 'missing_data', 'wrong_company', 'formatting', 'hallucinated_fact', 'tool_error', 'coverage_gap', or 'other'. | |
| ticker | No | Optional ticker the disputed figure belongs to (e.g. 'AAPL', 'BRK.B'). ALWAYS send this alongside `fact_id` — a `fact_id` is a one-way hash that does not contain the symbol, so without it nobody can locate the filing and your report cannot be checked against the source. Supplying it is what turns a complaint into a verifiable one. | |
| fact_id | No | Optional disputed `fact_id` (most useful for wrong_number / bad_citation). | |
| message | No | Optional free-text detail (≤4000 chars). What you expected and what happened. | |
| sentiment | Yes | REQUIRED. How you judge the artifact: 'positive' (it was right/useful), 'negative' (it was wrong/unhelpful), or 'correction' (you are supplying the right value via `expected_value`). | |
| target_id | Yes | REQUIRED. The id of the artifact this feedback targets (a report id, thesis id, claim id, message id, tool-call id, or table/schema name). | |
| request_id | No | Optional `_meta` request id of the turn that produced the artifact. Folded into the idempotency key so a retried submission of the same judgement files once. | |
| target_type | Yes | REQUIRED. The kind of artifact this feedback is about: 'chat_message', 'report', 'thesis', 'claim', 'tool_call', 'schema', or 'other'. | |
| expected_value | No | Optional: what the value SHOULD have been, in your own words. Stored verbatim for triage — NEVER computed, restated, or trusted as data by Valuein. | |
| idempotency_key | No | Optional explicit dedupe key (1–64 chars). Used to dedupe when no `request_id` is supplied; safe to retry on a network error. | |