---
title: "Record a business outcome (CPO-1)"
method: POST
path: "/outcomes"
---

# Record a business outcome (CPO-1)

`POST /outcomes`

## Request

- Base URL: `https://getsanction.com/api/v1`
- URL: `https://getsanction.com/api/v1/outcomes`
- Auth: API key in header `x-api-key`

Report a confirmed business result (an enrollment, booking, signed engagement) against this wallet. Sanction computes cost-per-outcome over a rolling window; when the wallet policy sets a cost_per_outcome ceiling, spend throttles to human-gated once the ceiling is crossed. Use dedupe_key so retries never double-count.

## Request body

- object
  - `kind` string, required: Outcome kind, lowercase — e.g. 'enrollment'. Must match policy outcome_kind for ceiling governance.
  - `value_usd` number: Optional value of the outcome (reporting only)
  - `play` string: Optional campaign/play label
  - `dedupe_key` string: Idempotency key unique per outcome (e.g. CRM record id)
  - `occurred_at` string, date-time
  - `metadata` object

## Response `200`

Duplicate dedupe_key — original outcome returned, not double-counted

## Other responses

- `201`: Outcome recorded
- `401`: Invalid API key

---

[API](https://skmtc.dev/getsanction/apis/sanction-agent-governance-api.md) · [All operations](https://skmtc.dev/getsanction/apis/sanction-agent-governance-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getsanction/apis/sanction-agent-governance-api/revisions/c645a9e4b72d?raw)
