---
title: "Confirm Position Decision"
method: POST
path: "/position-decisions/confirmations"
tags: ["position decisions"]
---

# Confirm Position Decision

`POST /position-decisions/confirmations`

## Request

- Base URL: `https://api.tickertrac.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tickertrac.com/position-decisions/confirmations`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

## Request body

- PositionDecisionConfirmationIn
  - `subject_type` 'company_thesis' | 'investment_theme', required
  - `subject_version` integer, required
  - `watchlist_id` integer, nullable
  - `shared_thesis_id` integer, nullable
  - `ticker` string, required
  - `action` 'opened' | 'added' | 'reduced' | 'closed' | 'reopened', required
  - `occurred_at` string, date-time, required
  - `rationale` string, nullable
  - `event_references` PositionDecisionEventReferenceIn[]
    - `kind` 'alert' | 'source_event' | 'theme_finding', required
    - `referent_id` integer, required
  - `execution_price` union
    - number
    - string
  - `execution_currency` string, nullable
  - `portfolio_weight_before_pct` union
    - number
    - string
  - `portfolio_weight_after_pct` union
    - number
    - string
  - `holding_change_pct` union
    - number
    - string
  - `supersedes_id` integer, nullable
  - `schema_version` 'position-decision-confirmation-v1', required
  - `idempotency_key` string, uuid, required
  - `proposal_idempotency_key` string, uuid, required
  - `operation` 'save_position_decision', required
  - `confirmation_policy` 'explicit_approval_required', required
  - `confirmation_statement` 'I confirm this exact position decision should be saved as immutable history.', required
  - `expected_market_reference_date` string, date, nullable
  - `expected_market_reference_price` union
    - number
    - string

## Response `200`

Successful Response

- PositionDecisionConfirmationOut
  - `schema_version` 'position-decision-confirmation-v1', required
  - `idempotency_key` string, uuid, required
  - `proposal_idempotency_key` string, uuid, required
  - `operation` 'save_position_decision', required
  - `confirmation_policy` 'explicit_approval_required', required
  - `save_status` 'saved'
  - `request_replayed` boolean, required
  - `decision` PositionDecisionOut, required
    - `schema_version` 'position-decision-v1'
    - `id` integer, required
    - `subject_type` 'company_thesis' | 'investment_theme', required
    - `subject_version` integer, required
    - `subject_label` string, required
    - `watchlist_id` integer, nullable
    - `shared_thesis_id` integer, nullable
    - `ticker` string, required
    - `action` 'opened' | 'added' | 'reduced' | 'closed' | 'reopened', required
    - `occurred_at` string, date-time, required
    - `rationale` string, nullable
    - `events` PositionDecisionEventOut[]
      - `kind` 'alert' | 'source_event' | 'theme_finding', required
      - `referent_id` integer, required
      - `title` string, required
      - `occurred_at` string, date-time, required
      - `available_at` string, date-time, required
      - `source_url` string, nullable
      - `detail` string, nullable
      - `thesis_impact` 'strengthened' | 'weakened' | 'broken' | 'uncertain', nullable
      - `asserted_by_user` true
    - `price` PositionDecisionPriceOut, required
      - `basis` 'user_reported_execution' | 'market_reference' | 'unavailable', required
      - `amount` number, nullable
      - `currency` string, nullable
      - `reference_date` string, date, nullable
      - `source` string, nullable
      - `adjustment` 'splits', nullable
      - `coverage` 'current_symbol', nullable
    - `portfolio_weight_before_pct` number, nullable
    - `portfolio_weight_after_pct` number, nullable
    - `holding_change_pct` number, nullable
    - `recorded_at` string, date-time, required
    - `supersedes_id` integer, nullable
    - `superseded_by_id` integer, nullable
    - `is_current` boolean
    - `immutable` true
  - `transcript_persisted` false
  - `provider_calls` 0
  - `model_calls` 0

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/tickertrac/apis/tickerrag-api.md) · [All operations](https://skmtc.dev/tickertrac/apis/tickerrag-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tickertrac/apis/tickerrag-api/revisions/3c7eb0f6425d?raw)
