---
title: "Get One"
method: GET
path: "/api/engine/analyses/{analysis_id}"
---

# Get One

`GET /api/engine/analyses/{analysis_id}`

## Request

- Base URL: `https://basisprotocol.xyz` (the document declares no server; this is the origin it was published from)
- URL: `https://basisprotocol.xyz/api/engine/analyses/{analysis_id}`
- Auth: none declared

## Path parameters

- `analysis_id` string, uuid, required

## Response `200`

Successful Response

- Analysis: Persisted Analysis. id, created_at, status, and revision fields are always populated.
  - `analysis_version` string
  - `entity` string, required
  - `event_date` string, date, nullable
  - `peer_set` string[], required: REQUIRED per Step 0 doc §2. Empty list is permitted; it triggers a methodology observation flagging the missing peer set and bumps Interpretation.confidence down one level.
  - `context` string, nullable
  - `coverage` CoverageResponse, required
    - `identifier` string, required
    - `matched_entities` EntityCoverage[], required
      - `index_id` string, required
      - `entity_slug` string, required
      - `entity_name` string, nullable
      - `coverage_type` 'live' | 'backfilled' | 'sparse' | 'none', required
      - `live` boolean, required
      - `density` 'multiple_daily' | 'daily' | 'weekly' | 'sparse' | 'single', required
      - `earliest_record` string, date, nullable
      - `latest_record` string, date, nullable
      - `unique_days` integer, required
      - `days_since_last_record` integer, nullable
      - `coverage_window_days` integer, nullable
      - `data_source` string, required
      - `available_endpoints` string[]
    - `related_entities` RelatedEntity[], required
      - `index_id` string, required
      - `entity_slug` string, required
      - `relation` string, required
    - `adjacent_indexes_not_covering` string[], required
    - `coverage_summary` string, required
    - `coverage_quality` 'full-live' | 'partial-live' | 'partial-reconstructable' | 'sparse' | 'none', required
    - `recommended_analysis_types` string[], required
    - `blocks_incident_page` boolean, required
    - `blocks_reasons` string[], required
    - `data_snapshot_hash` string, required
    - `computed_at` string, date-time, required
  - `signal` Signal, required: Structured view of all observations for an analysis. Event-conditional layout: - When Analysis.event_date is None: only `baseline` is populated. - When Analysis.event_date is not None: `baseline` is empty and pre_event / event_window / post_event are populated. Enforced at the Analysis level via model_validator (see below) so that renderers can trust which list to read.
    - `baseline` Observation[]
      - `index_id` string, required
      - `entity_slug` string, required
      - `measure` string, required
      - `window` 'baseline' | 'pre_event' | 'event_window' | 'post_event', required
      - `kind` 'value' | 'trend' | 'delta' | 'z_score', required
      - `metric_value` number, required
      - `reference_value` number, nullable
      - `unit` string, required
      - `at_date` string, date, nullable
      - `window_start` string, date, nullable
      - `window_end` string, date, nullable
      - `is_anomaly` boolean
      - `anomaly_z_score` number, nullable
      - `peer_divergence_magnitude` number, nullable
      - `peer_slugs_compared` string[]
      - `notes` string, nullable
    - `pre_event` Observation[]
      - `index_id` string, required
      - `entity_slug` string, required
      - `measure` string, required
      - `window` 'baseline' | 'pre_event' | 'event_window' | 'post_event', required
      - `kind` 'value' | 'trend' | 'delta' | 'z_score', required
      - `metric_value` number, required
      - `reference_value` number, nullable
      - `unit` string, required
      - `at_date` string, date, nullable
      - `window_start` string, date, nullable
      - `window_end` string, date, nullable
      - `is_anomaly` boolean
      - `anomaly_z_score` number, nullable
      - `peer_divergence_magnitude` number, nullable
      - `peer_slugs_compared` string[]
      - `notes` string, nullable
    - `event_window` Observation[]
      - `index_id` string, required
      - `entity_slug` string, required
      - `measure` string, required
      - `window` 'baseline' | 'pre_event' | 'event_window' | 'post_event', required
      - `kind` 'value' | 'trend' | 'delta' | 'z_score', required
      - `metric_value` number, required
      - `reference_value` number, nullable
      - `unit` string, required
      - `at_date` string, date, nullable
      - `window_start` string, date, nullable
      - `window_end` string, date, nullable
      - `is_anomaly` boolean
      - `anomaly_z_score` number, nullable
      - `peer_divergence_magnitude` number, nullable
      - `peer_slugs_compared` string[]
      - `notes` string, nullable
    - `post_event` Observation[]
      - `index_id` string, required
      - `entity_slug` string, required
      - `measure` string, required
      - `window` 'baseline' | 'pre_event' | 'event_window' | 'post_event', required
      - `kind` 'value' | 'trend' | 'delta' | 'z_score', required
      - `metric_value` number, required
      - `reference_value` number, nullable
      - `unit` string, required
      - `at_date` string, date, nullable
      - `window_start` string, date, nullable
      - `window_end` string, date, nullable
      - `is_anomaly` boolean
      - `anomaly_z_score` number, nullable
      - `peer_divergence_magnitude` number, nullable
      - `peer_slugs_compared` string[]
      - `notes` string, nullable
  - `interpretation` Interpretation, required: Structured interpretation generated by the analysis engine. Renderers select fields by name rather than parsing a blob.
    - `event_summary` string, required
    - `pre_event_story` string, nullable
    - `event_story` string, nullable
    - `post_event_story` string, nullable
    - `cross_peer_reading` string, nullable
    - `what_this_does_not_claim` string, required
    - `headline` string, required
    - `confidence` 'high' | 'medium' | 'low' | 'insufficient', required
    - `confidence_reasoning` string, required
    - `prompt_version` string, required
    - `input_hash` string, required
    - `model_id` string, required
    - `generated_at` string, date-time, required
    - `from_cache` boolean
  - `methodology_observations` MethodologyObservation[], required
    - `id` string, uuid
    - `observation_type` 'weighting_issue' | 'coverage_gap' | 'measure_defect' | 'data_quality' | 'methodology_ambiguity', required
    - `finding` string, required
    - `severity` 'low' | 'medium' | 'high' | 'critical', required
    - `affected_indexes` string[], required
    - `evidence` string, required
  - `follow_ups` FollowUp[], required
    - `follow_up_type` 'engineering' | 'methodology' | 'data_source' | 'product', required
    - `description` string, required
    - `affected_indexes` string[], required
    - `priority` 'low' | 'medium' | 'high' | 'critical', required
    - `estimated_effort` string, required
    - `linked_methodology_observation_id` string, uuid, nullable
  - `artifact_recommendation` ArtifactRecommendation, required
    - `recommended` 'incident_page' | 'retrospective_internal' | 'case_study' | 'internal_memo' | 'talking_points' | 'one_pager' | 'nothing', required
    - `supports` string[], required
    - `reasoning` string, required
    - `blocked` string[]
    - `blocked_reasons` string[]
  - `inputs_hash` string, required
  - `previous_analysis_id` string, uuid, nullable
  - `supersedes_reason` string, nullable
  - `id` string, uuid, required
  - `created_at` string, date-time, required
  - `status` 'pending' | 'draft' | 'approved' | 'archived' | 'dismissed', required
  - `superseded_by_id` string, uuid, nullable
  - `archived_at` string, date-time, nullable
  - `human_reviewer` string, nullable
  - `review_notes` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/basisprotocol/apis/basis-protocol-api.md) · [All operations](https://skmtc.dev/basisprotocol/apis/basis-protocol-api/llms.txt) · [OpenAPI document](https://skmtc.dev/basisprotocol/apis/basis-protocol-api/revisions/c0067366b9c0?raw)
