---
title: "Submit a bounded outcome for one routed decision"
method: POST
path: "/v1/route/outcomes"
---

# Submit a bounded outcome for one routed decision

`POST /v1/route/outcomes`

## Request

- Base URL: `https://gateway.caveman.so`
- URL: `https://gateway.caveman.so/v1/route/outcomes`
- Auth: API key in header `x-cave-api-key`

Accepts only canonical low-trust outcome kinds under a signed tenant-bound token. Stale, revoked, paid-plan, sampled-out, or operator-disabled learning produces collected=false and no training row.

## Request body

- object
  - `outcome_token` string, required
  - `outcome_kind` 'retry' | 'test_pass' | 'test_fail' | 'abandoned' | 'completed' | 'failed' | 'interrupted' | 'accepted' | 'rejected', required: A delegated task's outcome is completed, failed or interrupted, and a reviewer agent's verdict on it accepted or rejected.

## Response `202`

Outcome accepted; collected states whether a durable learning row was admitted.

- object
  - `accepted` unknown, required
  - `collected` boolean, required
  - `event_id` string

## Other responses

- `4XX`: Structured failure. `error.code` is stable; `error.request_id` is echoed in the x-cave-request-id header.
- `5XX`: Structured failure. `error.code` is stable; `error.request_id` is echoed in the x-cave-request-id header.

---

[API](https://skmtc.dev/caveman/apis/caveman-cloud-api.md) - [All operations](https://skmtc.dev/caveman/apis/caveman-cloud-api/llms.txt) - [OpenAPI document](https://skmtc.dev/caveman/apis/caveman-cloud-api/revisions/508312d01cfc?raw)
