---
title: "Read immutable human Decision receipts for one Interaction."
method: GET
path: "/api/v1/interactions/{interactionId}/decisions"
tags: ["Interactions"]
---

# Read immutable human Decision receipts for one Interaction.

`GET /api/v1/interactions/{interactionId}/decisions`

## Request

- Base URL: `https://commentary.dev`
- URL: `https://commentary.dev/api/v1/interactions/{interactionId}/decisions`
- Auth: one of:
  - API key in cookie `commentary_session`
  - HTTP bearer

An eligible browser human may list receipts. The authorized creating agent may retrieve one opaque receipt by decisionId or poll/wait after a prior receipt for at most ten seconds. Agent results omit human identity, Resource data, consequence content, and action snapshots. waitMs=0 is the universal polling fallback.

## Path parameters

- `interactionId` string, required

## Query parameters

- `approval` unknown
- `decisionId` string
- `after` string
- `waitMs` integer

## Headers

- `X-Commentary-Workspace-Id` string
- `X-Correlation-Id` string

## Response `200`

Successful response.

- object
  - `data` union
    - object
      - `decisions` InteractionDecision[]
        - `id` string, required
        - `interactionId` string, required
        - `revisionId` string, required
        - `actionId` string, required
        - `proposalFingerprint` string, required
        - `semanticAction` string, required
        - `outcome` 'approve' | 'reject' | 'abstain' | 'conflict' | 'acknowledge' | 'choose' | 'answer' | 'comment' | 'request_revision' | 'snooze', required
        - `actor` object, required
        - `decidedAt` string, date-time, required
        - `expiresAt` string, date-time, nullable
        - `terminalState` 'recorded', required
        - `actionSnapshot` object, nullable
        - `consequence` object, nullable
        - `contentPurgeAfter` string, date-time
        - `contentPurgedAt` string, date-time, nullable
        - `execution` object, required
          - `proven` unknown, required
      - `approval` object
      - `responseProgress` InteractionResponseProgress, nullable: Browser-human recipient progress for the current exact revision. Does not change the Interaction lifecycle or prove external execution. Agent receipt transports do not expose this projection.
        - `revisionId` string
        - `responded` boolean
        - `revisionChanges` string, nullable
        - `previousResponses` object[]
          - `id` string
          - `outcome` string
          - `value` string, nullable
          - `contentPurged` boolean
        - `next` 'you' | 'agent' | 'approvers' | 'revision' | 'none'
        - `message` string
        - `availableActionIds` string[]
        - `approvedActionIds` string[]: Actions whose current approval policy is satisfied; not proof of execution.
        - `receipts` object[]
          - `id` string
          - `actionId` string
          - `outcome` string
          - `value` string, nullable
          - `contentPurged` boolean
    - InteractionAgentDecisionReceipt: Privacy-safe immutable receipt for the authorized creating agent. Human identity, Resource data, consequence content, and action snapshots are omitted.
      - `id` string, required
      - `interactionId` string, required
      - `revisionId` string, required
      - `actionId` string, required
      - `proposalFingerprint` string, required
      - `semanticAction` string, required
      - `outcome` 'approve' | 'reject' | 'abstain' | 'conflict' | 'acknowledge' | 'choose' | 'answer' | 'comment' | 'request_revision' | 'snooze', required
      - `decidedAt` string, date-time, required
      - `expiresAt` string, date-time, nullable
      - `aggregate` AgentApprovalSummary
        - `state` 'pending' | 'approved' | 'rejected' | 'expired' | 'unsatisfiable', required
        - `approvals` integer, required
        - `required` integer, required
        - `completedSteps` integer, required
        - `totalSteps` integer, required
      - `terminalState` string, required
      - `purged` boolean, required
      - `contentPurgedAt` string, date-time, nullable
  - `polling` object

## Other responses

- `202`: Successful response.
- `400`: The request was invalid.
- `401`: Authentication is required.
- `403`: The token or session does not have permission for this resource.
- `404`: The resource was not found.
- `429`: The request was rate limited.

---

[API](https://skmtc.dev/commentary/apis/commentary-public-api.md) · [All operations](https://skmtc.dev/commentary/apis/commentary-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/commentary/apis/commentary-public-api/revisions/7aaafc198c52?raw)
