---
title: "List a v2 conversation's transcript"
method: GET
path: "/v1/v2/conversations/{conversation_id}/turns"
tags: ["runtime v2"]
---

# List a v2 conversation's transcript

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

## Path parameters

- `conversation_id` string, uuid, required

## Query parameters

- `limit` integer
- `cursor` string, nullable
- `role` string, nullable
- `include_compacted` boolean — Include rows folded into the rolling summary by compaction; folded rows carry is_compacted=true so clients can badge them.
- `include_evidence` boolean — [ENG-670 T3] Attach each row's evidence package (the KB sources shown to the model). Off by default — the hot read DEFERS the large citations column; opt in to load and project it.
- `evidence_view` 'display' | 'full' — Serialization view when include_evidence=true. The transcript default is 'full' (staff/audit — raw scores, hashes, chunk ids, status_reason); 'display' is the end-user source-card subset. (The live-turn surface defaults to 'display' instead.)

## Response `200`

Successful Response

- TurnListResponse
  - `turns` SrcConversationSchemasTurnResponse[], required
    - `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'
  - `next_cursor` string, nullable
  - `has_more` boolean, required

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `404` — Resource not found
- `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)
