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

> ## Agent Instructions
> Document only operations in the linked OpenAPI contract: the source-data ingestion operations and the source-scoped outbound webhook management operations.
> Treat the generated OpenAPI document as authoritative for request fields. Never invent compatibility fields, alternate endpoints, or additional source models.
> Preserve explicit nulls, decimal strings, timestamps, source identifiers, immutable version identifiers, and document-version links exactly as defined.

# Outcomes

> Record one result already known by your system against exactly one source subject.

An Outcome is a result your system has already assigned, such as an onboarding decision, fraud
alert, or investigation disposition. It records source evidence; uploading an outcome does not mean
Karsa independently reached the same conclusion.

## What to send

| Field | Meaning |
| - | - |
| `externalId` | Stable identifier for this source outcome |
| `outcomeType` | Source-defined category |
| `outcomeValue` | Source-defined result |
| `customerId` | Customer `resourceId`, or `null` |
| `accountId` | Account `resourceId`, or `null` |
| `transactionId` | Transaction `resourceId`, or `null` |
| `documentId` | Document `resourceId`, or `null` |
| `effectiveAt` | When the outcome became true in your system |
| `sourceExternalId` | Optional secondary source identifier |
| `changeReason` | Optional explanation for a later version |

Exactly one subject field must contain a `resourceId`; the other three must be `null` or omitted.

## Upload an outcome

```bash theme={null}
curl --request POST \
  --url https://api.sandbox.useasterisk.com/api/ingestion/outcomes \
  --header "Authorization: Bearer $KARSA_API_TOKEN" \
  --header "Idempotency-Key: outcome-example-001-create" \
  --header "Content-Type: application/json" \
  --data '{
    "externalId": "outcome-example-001",
    "sourceExternalId": null,
    "outcomeType": "FRAUD_ALERT",
    "outcomeValue": "REJECTED",
    "customerId": "customer_resource_example_01",
    "accountId": null,
    "transactionId": null,
    "documentId": null,
    "effectiveAt": "2026-08-21T12:00:00Z",
    "changeReason": null
  }'
```

```json theme={null}
{
  "outcome": "CREATED",
  "resourceId": "outcome_resource_example_01",
  "versionId": "outcome_version_example_01",
  "currentVersionId": "outcome_version_example_01"
}
```

## Subject semantics

Use a Customer outcome for a result about the customer as a whole. Use a Transaction or Document
outcome only when the result belongs specifically to that record. Outcomes do not accept arbitrary
`customData`; the type, value, subject, and version metadata are the complete shape.

## Versioning and deduplication

Send the same `externalId` with a new idempotency key when the source outcome changes. A corrected
value appends an OutcomeVersion; it does not overwrite the earlier result.

## Related

* [Customers](/concepts/customers): upload a customer before attaching a customer outcome
* [Transactions](/concepts/transactions): attach a result to a specific transaction
* [Documents](/concepts/documents): attach a result to a specific document


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.