---
title: "Get a v2 conversation with recent turns"
method: GET
path: "/v1/v2/conversations/{conversation_id}"
tags: ["runtime v2"]
---

# Get a v2 conversation with recent turns

`GET /v1/v2/conversations/{conversation_id}`

## Path parameters

- `conversation_id` string, uuid, required

## Response `200`

Successful Response

- SrcConversationSchemasSessionDetailResponse
  - `id` string, uuid, required
  - `organization_id` string, uuid, required
  - `end_user_id` string, uuid, required
  - `channel` string, required
  - `origin` 'inbound' | 'outbound', nullable
  - `external_session_id` string, nullable
  - `status` 'queued' | 'ringing' | 'active' | 'paused' | 'waiting_for_human' | 'transferred' | 'awaiting_approval' | 'closed' | 'expired' | 'error' | 'superseded', required
  - `session_type` 'live' | 'test' | 'simulation'
  - `priority` 'low' | 'normal' | 'high' | 'urgent', required
  - `subject` string, nullable
  - `assigned_agent_id` string, uuid, nullable
  - `retention_policy_id` string, uuid, nullable
  - `summary` string, nullable
  - `metadata` object
  - `context_variables` object
  - `message_count` integer, required
  - `first_message_at` string, date-time, nullable
  - `last_message_at` string, date-time, nullable
  - `started_at` string, date-time, required
  - `ended_at` string, date-time, nullable
  - `closed_at` string, date-time, nullable
  - `ttl_expires_at` string, date-time, nullable
  - `retention_expires_at` string, date-time, nullable
  - `archived_at` string, date-time, nullable
  - `memory_synced` boolean
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `duration_ms` integer, nullable
  - `summary_preview` string, nullable
  - `has_recording` boolean
  - `eval_summary` SessionEvalSummary — Rollup of eval runs that targeted a session. `succeeded` = runs where status='completed' AND every score has passed=true. `failed` = total - succeeded - pending (failed-status runs + completed-but-not-all-passed). `pending` = runs still queued or running. The `critical_*` counterparts restrict the same aggregation to runs whose binding was marked `is_critical=True` (snapshotted onto the run). They drive the session headline pill — non-critical evals still run and display but don't move the verdict. `eval_status` collapses the critical counts to a single headline label (`none` when no criticals are configured).
    - `total` integer
    - `succeeded` integer
    - `failed` integer
    - `pending` integer
    - `critical_total` integer
    - `critical_succeeded` integer
    - `critical_failed` integer
    - `critical_pending` integer
    - `eval_status` 'success' | 'partial' | 'failure' | 'pending' | 'none'
  - `recent_turns` SrcConversationSchemasTurnResponse[]
    - `id` string, uuid, required
    - `session_id` string, uuid, required
    - `role` 'user' | 'assistant' | 'system' | 'tool' | 'system_event', required
    - `content` string, required
    - `tool_calls` ToolCall[], nullable
      - `id` string, required
      - `type` string
      - `function` ToolCallFunction, required
        - `name` string, required
        - `arguments` string, required
    - `tool_results` ToolResult
      - `tool_call_id` string, required
      - `output` string, required
      - `error` string, nullable
    - `model_used` string, nullable
    - `token_count` TokenCount
      - `input_tokens` integer, required
      - `output_tokens` integer, required
      - `total_tokens` integer, nullable
    - `latency_ms` integer, nullable
    - `is_compacted` boolean
    - `metadata` object
    - `created_at` string, date-time, required
    - `delivery_status` string, nullable
    - `authored_by` string, nullable
    - `evidence` union
      - EvidencePackageDisplay — End-user serialization view — source cards only, NO audit internals. A distinct model (not :class:`EvidencePackage` with a narrower config) so the omitted fields are absent from the schema, and so ``view`` yields a clean tagged union. ``organization_id``, ``agent_id`` and ``status_reason`` are full-only and intentionally not present here.
        - `view` 'display'
        - `schema_version` integer
        - `package_id` string, uuid, required
        - `conversation_id` string, uuid, required
        - `message_id` string, uuid, nullable
        - `turn_id` string, uuid, required
        - `created_at` string, date-time, required
        - `evidence_status` 'complete' | 'partial' | 'failed' | 'not_applicable', required
        - `items` EvidenceItemDisplay[], required
          - `citation_marker` string, nullable
          - `label` string, nullable
          - `short_label` string, nullable
          - `document_title` string, nullable
          - `version_number` integer, nullable
          - `section` EvidenceSection — A document section path — never a fabricated ``§N``.
            - `path_titles` string[], nullable
            - `path_numbers` string[], nullable
            - `display_label` string, nullable
            - `confidence` 'parsed' | 'derived' | 'unknown'
          - `deep_link` string, nullable
      - EvidencePackageFull — Staff/audit serialization view — the full envelope plus a ``view`` tag. Adds only the ``full`` discriminator literal; every audit field (scores/basis/band, ``rag_query_id``, chunk ids, hashes, constraints, ``status_reason``) rides through unchanged from :class:`EvidencePackage`.
        - `schema_version` integer
        - `package_id` string, uuid, required
        - `organization_id` string, uuid, required
        - `conversation_id` string, uuid, required
        - `message_id` string, uuid, nullable
        - `turn_id` string, uuid, required
        - `agent_id` string, uuid, nullable
        - `created_at` string, date-time, required
        - `evidence_status` 'complete' | 'partial' | 'failed' | 'not_applicable', required
        - `status_reason` 'complete' | 'no_kb_used' | 'no_exposed_chunks' | 'answerability_suppressed' | 'partial_missing_source_rows' | 'item_cap_applied' | 'build_failed', nullable
        - `items` EvidenceItem[], required
          - `evidence_id` string, uuid, required
          - `rag_query_id` string, uuid, nullable
          - `attribution_level` 'exposed'
          - `prompt_order` integer, nullable
          - `provenance` EvidenceProvenance, required
            - `kb_id` string, uuid, required
            - `kb_name` string, nullable
            - `document_id` string, uuid, required
            - `document_title` string, required
            - `version_id` string, uuid, nullable
            - `version_number` integer, nullable
            - `source_type` string, required
            - `source_provider` string, nullable
            - `deep_link` string, nullable
            - `filename` string, nullable
            - `section` EvidenceSection — A document section path — never a fabricated ``§N``.
              - …
            - `chunk_id` string, required
            - `chunk_index` integer, nullable
            - `content_sha256` string, nullable
            - `last_processed_at` string, date-time, nullable
          - `position` EvidencePosition
            - `type` 'text'
            - `start_char` integer, nullable
            - `end_char` integer, nullable
          - `score` EvidenceScore — Relevance signal — NOT a probability (``calibrated=False`` always in v1).
            - `retrieval_score_raw` number, nullable
            - `retrieval_score_display` number, nullable
            - `score_basis` 'raw_hybrid_dotproduct' | 'minmax_normalized' | 'reranked_original_score' | 'grouped_unranked', required
            - `band` 'high' | 'medium' | 'low' | 'unknown'
            - `calibrated` boolean
          - `usage_constraints` EvidenceUsageConstraints — Carried, not enforced (v1).
            - `sensitivity` 'public' | 'internal' | 'confidential' | 'restricted', nullable
            - `sensitivity_level` integer, nullable
            - `visibility_mode` 'org_wide' | 'audience', nullable
            - `audience_tags` string[], nullable
            - `constraint_source` 'acl_columns' | 'metadata' | 'none'
            - `raw` object, nullable
          - `display` EvidenceDisplay
            - `label` string, required
            - `short_label` string, nullable
            - `citation_marker` string, nullable
          - `source_trust` string, nullable
          - `scan_status` string, nullable
        - `view` 'full'
  - `recording_url` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/versions/888bdd5c076e/schema)
