Report the real-world outcome of an event

Tell Portreeve what actually happened. Feedback propagates across the actor's linked identity cluster, so a `confirmed_abuse` report sharpens future decisions about every account linked to it, and a `false_positive` suppresses the pattern that misfired. **Safe to retry.** An identical repost — same event, same outcome — is deduplicated server-side and returns `200 { "ok": true }` without recording a second row, so no `Idempotency-Key` is needed. Reposting the *same* event with a *different* outcome records both.

Authentication

AuthorizationBearer

Authorization: Bearer sk_live_… (or sk_test_…). Server-side only — never ship a secret key to a browser or a mobile app. The key determines the tenant and the mode; there is no mode parameter on any request.

Path parameters

idstringRequired
The event id the feedback is about.

Request

This endpoint expects an object.
outcomeenumRequired

confirmed_abuse: the actor turned out to be abusive — marks their whole linked cluster. false_positive: we were wrong — send these even when they feel minor, they are the metric we hold ourselves to. chargeback: a dispute was filed.

notestringOptional<=2000 characters
Optional free text for your own records, up to 2000 characters.

Response

Feedback recorded (or already recorded — the endpoint is idempotent on (event, outcome)).

oktrue

Always true. The endpoint has no failure mode that returns 200.

Errors

400
Bad Request Error
401
Unauthorized Error
404
Not Found Error
429
Too Many Requests Error
500
Internal Server Error