---
title: "Get a Tally conversation turn with acceptance metadata"
method: GET
path: "/tally/conversations/{id}/turns/{turnId}"
tags: ["Tally"]
---

# Get a Tally conversation turn with acceptance metadata

`GET /tally/conversations/{id}/turns/{turnId}`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/tally/conversations/{id}/turns/{turnId}`
- Auth: one of:
  - HTTP bearer and API key in header `x-organization-id`
  - HTTP bearer and API key in header `x-organization-id`

Returns the authoritative turn record (status, error, linked assistant message id, stream state) plus the refreshed conversation, recent messages, and a nullable server-derived Bookkeeping Startup progress projection. The projection updates through this existing poll without exposing workspace paths, organization ids, raw errors, or model-authored progress. Completed turns include a sanitized acceptance block — provider, model, provider attempts, iteration/token/cost/tool-byte runtime totals, tool call names with read-only flags, failover and mutation-boundary indicators, and continuation state — with no raw tool inputs, tool outputs, or prompt text. The live acceptance harness polls this route to prove model identity, runtime budgets, and safety boundaries.

## Path parameters

- `id` string, uuid, required
- `turnId` string, uuid, required

## Query parameters

- `view` 'status'

## Response `200`

Turn record with acceptance metadata, conversation, and recent messages; with view=status, only the turn record

- union
  - TallyConversationTurnSnapshot
    - `turn` object, required
    - `conversation` object, required
    - `messages` object[], required
      - `metadata` object
        - `taskChecklistPublic` TallyTaskChecklist
          - `version` 1, required
          - `id` string, required
          - `revision` integer, required
          - `title` string, required
          - `status` 'working' | 'needs_user' | 'complete' | 'partial' | 'cancelled', required
          - `visible` boolean, required
          - `counts` object, required
            - `total` integer, required
            - `pending` integer, required
            - `working` integer, required
            - `done` integer, required
            - `needsUser` integer, required
            - `notCompleted` integer, required
            - `cancelled` integer, required
          - `items` TallyTaskChecklistItem[], required
            - `id` string, required
            - `ordinal` integer, required
            - `groupLabel` string, nullable
            - `title` string, required
            - `status` 'pending' | 'working' | 'done' | 'needs_user' | 'not_completed' | 'cancelled', required
            - `publicEvidence` string, nullable
            - `error` object, nullable
              - …
          - `updatedAt` string, date-time, required
    - `historyDays` object[]
    - `activeTurns` object[]
      - `taskChecklist` TallyTaskChecklist
        - `version` 1, required
        - `id` string, required
        - `revision` integer, required
        - `title` string, required
        - `status` 'working' | 'needs_user' | 'complete' | 'partial' | 'cancelled', required
        - `visible` boolean, required
        - `counts` object, required
          - `total` integer, required
          - `pending` integer, required
          - `working` integer, required
          - `done` integer, required
          - `needsUser` integer, required
          - `notCompleted` integer, required
          - `cancelled` integer, required
        - `items` TallyTaskChecklistItem[], required
          - `id` string, required
          - `ordinal` integer, required
          - `groupLabel` string, nullable
          - `title` string, required
          - `status` 'pending' | 'working' | 'done' | 'needs_user' | 'not_completed' | 'cancelled', required
          - `publicEvidence` string, nullable
          - `error` object, nullable
            - `message` string
            - `recoverable` boolean
        - `updatedAt` string, date-time, required
    - `startupProgress` TallyStartupProgress, required
      - `id` string, required: Stable bookkeeping-startup artifact id for this conversation.
      - `revision` string, required: Semantic progress revision; status-label churn does not change it.
      - `conversationId` string, uuid, required
      - `companyName` string, nullable, required
      - `booksStartDate` string, date, nullable, required
      - `importRoute` 'bank_activity' | 'qbo_financials' | 'generic_journal' | 'null', nullable, required
      - `status` 'working' | 'needs_input' | 'complete', required
      - `phase` 'intake' | 'preflight' | 'extraction' | 'register_building' | 'transfers_and_package' | 'awaiting_pre_import_approval' | 'import_execution' | 'post_import_verification' | 'awaiting_final_approval' | 'complete', required
      - `phaseLabel` string, required
      - `currentActivity` string, required
      - `nextAction` string, nullable, required
      - `lastProgressAt` string, date-time, required
      - `completedMilestones` integer, required
      - `totalMilestones` integer, required
      - `milestones` object[], required
        - `id` string, required
        - `label` string, required
        - `state` 'complete' | 'current' | 'upcoming', required
      - `periodGrid` object[], required
        - `accountName` string, required
        - `periods` object[], required
          - `periodKey` string, required
          - `state` 'waiting' | 'building' | 'sealed' | 'imported', required
      - `metrics` object, required
      - `pending` object, required
        - `kind` 'decision' | 'approval' | 'null', nullable, required
        - `count` integer, required
      - `intake` object, nullable, required
        - `version` 1 | 2, required
        - `normalizerVersion` integer
        - `scannedAt` string, date-time, required
        - `normalizationDigest` string, nullable
        - `files` object[], required
          - `path` string, required
          - `fileName` string, required
          - `kind` 'csv' | 'spreadsheet' | 'archive' | 'other', required
          - `status` 'recognized' | 'duplicate' | 'problem' | 'needs_look', required
          - `contentHash` string, nullable, required
          - `note` string, nullable, required
          - `normalizedRowCount` integer
          - `problemRowNumber` integer, nullable
        - `accounts` object[], required
          - `key` string, required
          - `label` string, required
          - `sourceFileCount` integer, required
          - `normalizedRowCount` integer, required
          - `dateStart` string, date, required
          - `dateEnd` string, date, required
          - `anchorQuality` 'running_balance_verified' | 'inception_zero_proposed' | 'completeness_unverified', required
          - `months` object[], required
            - `month` string, required
            - `covered` boolean, required
            - `rowCount` integer, required
        - `counts` object, required
      - `accountOverlapQuestions` object[], nullable, required: Exports that overlap completed Back work dates without proven account identity. Firm must say same or different in chat before Begin Import.
        - `accountKey` string, required
        - `accountLabel` string, required
        - `priorConversationId` string, uuid, required
        - `overlapStart` string, date, required
        - `overlapEnd` string, date, required
      - `finalReview` object, nullable, required
        - `title` string, required
        - `periodLabel` string, required
        - `markdown` string, required
        - `deliveredAt` string, date-time, required
  - object
    - `turn` object, required

## Other responses

- `default`: Error response

---

[API](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api.md) · [All operations](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/revisions/9a8269f0a586?raw)
