---
title: "Submit transaction outcome feedback"
method: POST
path: "/api/outcomes"
tags: ["Outcome Feedback"]
---

# Submit transaction outcome feedback

`POST /api/outcomes`

## Request

- Base URL: `https://flint.network`
- URL: `https://flint.network/api/outcomes`
- Auth: HTTP bearer

Authenticated partner callback used after a transaction completes, is disputed, or is flagged. The bearer identity must match the partner bound into the stored signed record; caller-supplied partner ids are ignored.

## Request body

- OutcomeRequest
  - `record_id` string, required: Signed verification record ID.
  - `outcome` 'completed' | 'disputed' | 'flagged', required
  - `merchant_note` string, nullable: Optional merchant context. Accepts null or a string of at most 500 Unicode code points. Empty and whitespace-only strings are preserved.
  - `ground_truth` OutcomeGroundTruthRequest, nullable: Optional F3 ground truth. Null is retained as null. Omitted or null lists normalize to empty arrays; string IDs are trimmed, uppercased, checked against the F3 catalog, and deduplicated. Other object keys are ignored.
    - `f3_techniques_confirmed` string[], nullable
    - `f3_techniques_rejected` string[], nullable
  - `partner_id` string: Ignored. The partner identity is derived from the bearer credential and must match the stored signed record. Retained for existing callers.

## Response `201`

Outcome accepted

- OutcomeResponse
  - `ok` boolean, required
  - `outcome_id` string, required
  - `record_id` string, required
  - `outcome` 'completed' | 'disputed' | 'flagged', required
  - `ground_truth` OutcomeGroundTruthResponse, nullable, required: Null when ground truth was omitted or null; otherwise contains the 2 normalized F3 ID lists.
    - `f3_techniques_confirmed` string[], required
    - `f3_techniques_rejected` string[], required
  - `stored_at` string, date-time, required

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid partner service credential
- `403`: Authenticated partner does not own the signed record
- `409`: Conflict or idempotency collision
- `429`: The cheap caller-admission quota for paid attempts was exceeded.
- `500`: Server error

---

[API](https://skmtc.dev/flint/apis/flint-agent-transaction-control-api.md) · [All operations](https://skmtc.dev/flint/apis/flint-agent-transaction-control-api/llms.txt) · [OpenAPI document](https://skmtc.dev/flint/apis/flint-agent-transaction-control-api/revisions/eb5052b7b5dc?raw)
