---
title: "Get Thesis Timeline"
method: GET
path: "/watchlists/{watchlist_id}/theses/{ticker}/timeline"
tags: ["thesis timeline"]
---

# Get Thesis Timeline

`GET /watchlists/{watchlist_id}/theses/{ticker}/timeline`

## 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/watchlists/{watchlist_id}/theses/{ticker}/timeline`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

## Path parameters

- `watchlist_id` integer, required
- `ticker` string, required

## Query parameters

- `days` integer

## Response `200`

Successful Response

- ThesisTimelineOut
  - `ticker` string, required
  - `start_date` string, date, required
  - `end_date` string, date, required
  - `price_source` string, required
  - `price_adjustment` 'splits', required
  - `price_coverage` 'current_symbol', required
  - `prices` ThesisTimelinePriceOut[], required
    - `date` string, date, required
    - `close` number, required
  - `markers` ThesisTimelineMarkerOut[], required
    - `id` string, required
    - `kind` 'thesis_version' | 'position_decision' | 'alert' | 'source_event' | 'economic_event', required
    - `occurred_at` string, date-time, required
    - `title` string, required
    - `detail` string, required
    - `source_label` string, required
    - `source_url` string, nullable
    - `observed_at` string, date-time, nullable
    - `source_ingestion_origin` 'live_monitor' | 'stored_source_projection' | 'historical_provider_backfill' | 'legacy_unknown', nullable
    - `relationship` 'support' | 'contradict' | 'neutral', nullable
    - `thesis_impact` 'strengthened' | 'weakened' | 'broken' | 'uncertain', nullable
    - `revision_rationale` string, nullable
    - `revision_cause_count` integer
    - `event_referent_id` integer, nullable
    - `importance_eligible` boolean
    - `important_to_me` boolean
    - `importance_marked_at` string, date-time, nullable
    - `position_decision_id` integer, nullable
    - `position_decision_supersedes_id` integer, nullable
    - `position_decision_superseded_by_id` integer, nullable
  - `source_markers_state` 'populated' | 'complete_empty' | 'warmup_pending' | 'warmup_failed'
  - `marker_limit_per_kind` integer
  - `truncated_marker_kinds` string[]
  - `market_performance` ThesisMarketPerformanceOut: Price context around an exact saved interval, never a thesis-quality score.
    - `ticker` string, required
    - `benchmark_ticker` string, required
    - `benchmark_label` string, required
    - `status` 'ready' | 'partial' | 'unavailable', required
    - `status_reason` 'complete_window' | 'starts_after_context' | 'ticker_history_unavailable' | 'benchmark_history_unavailable' | 'insufficient_shared_sessions', required
    - `requested_start_date` string, date, required
    - `requested_end_date` string, date, nullable
    - `start_date` string, date, nullable
    - `end_date` string, date, nullable
    - `trading_sessions` integer
    - `ticker_return_pct` number, nullable
    - `benchmark_return_pct` number, nullable
    - `relative_return_pct` number, nullable

## 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)
