> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usefini.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get active fix-review session

> Get the active fix-review session and iteration history for one Fini response.

Returns the active fix-review session for one Fini response, including every iteration, generated recommendation, and answer replay. Returns JSON `null` when the response has no active session.

## Headers

<ParamField header="Authorization" type="string" required>
  Bearer token containing your Fini workspace API key. Format: `Bearer fini_...` The key needs `read` scope.
</ParamField>

## Path parameters

<ParamField path="id" type="string" required>
  Conversation ID containing the reviewed response.
</ParamField>

<ParamField path="eventId" type="string" required>
  ID of the Fini response targeted by the review session. The event must belong to the conversation and have a linked user event.
</ParamField>

## Request example

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api-prod.usefini.com/v2/fix-review/interactions/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8/events/f61a9a11-2c3b-4704-8f57-7078854d87cf/session/public' \
    --header 'Authorization: Bearer fini_your_api_key'
  ```

  ```python Python theme={null}
  import requests

  interaction_id = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8"
  event_id = "f61a9a11-2c3b-4704-8f57-7078854d87cf"
  response = requests.get(
      f"https://api-prod.usefini.com/v2/fix-review/interactions/{interaction_id}/events/{event_id}/session/public",
      headers={"Authorization": "Bearer fini_your_api_key"},
  )
  session = response.json()
  ```

  ```javascript Node.js theme={null}
  const interactionId = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8";
  const eventId = "f61a9a11-2c3b-4704-8f57-7078854d87cf";

  const response = await fetch(
    `https://api-prod.usefini.com/v2/fix-review/interactions/${interactionId}/events/${eventId}/session/public`,
    { headers: { Authorization: "Bearer fini_your_api_key" } }
  );
  const session = await response.json();
  ```
</RequestExample>

## Response

Returns a `FixReviewSession` object or JSON `null`. `iterations` is ordered by `iterationNumber` descending, and `latestIteration` duplicates its first item for convenient polling.

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "id": "91d2d432-b408-4496-920d-24ad6a1b9e87",
    "companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
    "interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
    "targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
    "targetUserEventId": "2d3d5f6d-0fbc-4a6d-874d-4e2c632f124a",
    "status": "active",
    "publishedIterationId": null,
    "publishedAt": null,
    "closedAt": null,
    "closedReason": null,
    "createdAt": "2026-07-21T12:30:00.000Z",
    "updatedAt": "2026-07-21T12:30:00.000Z",
    "originalAnswerSnapshot": {
      "interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
      "eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
      "originalEventId": null,
      "content": "You can cancel from Billing Settings.",
      "role": "finibot",
      "type": "message",
      "createdAt": "2026-07-21T12:20:00.000Z"
    },
    "latestIteration": {
      "id": "55ce8421-3da6-49f7-af02-b0f23458437d",
      "companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
      "sessionId": "91d2d432-b408-4496-920d-24ad6a1b9e87",
      "interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
      "targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
      "previousIterationId": null,
      "backgroundJobId": "641482a8-a952-42d2-bceb-67ca06b79e92",
      "replayInteractionId": null,
      "replayEventId": null,
      "iterationNumber": 1,
      "status": "queued",
      "feedbackNote": "Explain the cancellation deadline.",
      "summary": null,
      "confidence": null,
      "error": null,
      "publishedAt": null,
      "startedAt": null,
      "completedAt": null,
      "createdAt": "2026-07-21T12:30:00.100Z",
      "updatedAt": "2026-07-21T12:30:00.100Z",
      "oldAnswerSnapshot": {
        "interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
        "eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
        "originalEventId": null,
        "content": "You can cancel from Billing Settings.",
        "role": "finibot",
        "type": "message",
        "createdAt": "2026-07-21T12:20:00.000Z"
      },
      "newAnswerSnapshot": null,
      "changes": []
    },
    "iterations": [
      {
        "id": "55ce8421-3da6-49f7-af02-b0f23458437d",
        "companyId": "38ba4db0-31db-4669-bb95-7b8313c4016b",
        "sessionId": "91d2d432-b408-4496-920d-24ad6a1b9e87",
        "interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
        "targetEventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
        "previousIterationId": null,
        "backgroundJobId": "641482a8-a952-42d2-bceb-67ca06b79e92",
        "replayInteractionId": null,
        "replayEventId": null,
        "iterationNumber": 1,
        "status": "queued",
        "feedbackNote": "Explain the cancellation deadline.",
        "summary": null,
        "confidence": null,
        "error": null,
        "publishedAt": null,
        "startedAt": null,
        "completedAt": null,
        "createdAt": "2026-07-21T12:30:00.100Z",
        "updatedAt": "2026-07-21T12:30:00.100Z",
        "oldAnswerSnapshot": {
          "interactionId": "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
          "eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
          "originalEventId": null,
          "content": "You can cancel from Billing Settings.",
          "role": "finibot",
          "type": "message",
          "createdAt": "2026-07-21T12:20:00.000Z"
        },
        "newAnswerSnapshot": null,
        "changes": []
      }
    ]
  }
  ```

  ```json 200 No active session theme={null}
  null
  ```

  ```json 403 Forbidden theme={null}
  {
    "statusCode": 403,
    "message": "API key does not have the required scope for this operation",
    "error": "Forbidden"
  }
  ```
</ResponseExample>

## FixReviewSession object

<AccordionGroup>
  <Accordion title="FixReviewSession" icon="comments">
    | Field                    | Type                     | Description                                                                      |
    | ------------------------ | ------------------------ | -------------------------------------------------------------------------------- |
    | `id`                     | string                   | Fix-review session ID.                                                           |
    | `companyId`              | string                   | Workspace ID.                                                                    |
    | `interactionId`          | string                   | Reviewed conversation ID.                                                        |
    | `targetEventId`          | string                   | Original Fini response under review.                                             |
    | `targetUserEventId`      | string \| null           | Linked user event used to replay the response.                                   |
    | `status`                 | string                   | `active`, `published`, or `closed`. This route only returns an `active` session. |
    | `publishedIterationId`   | string \| null           | Iteration applied from this session, when present.                               |
    | `publishedAt`            | string \| null           | ISO 8601 publication timestamp.                                                  |
    | `closedAt`               | string \| null           | ISO 8601 close timestamp.                                                        |
    | `closedReason`           | string \| null           | Reason the session was closed.                                                   |
    | `createdAt`              | string                   | ISO 8601 creation timestamp.                                                     |
    | `updatedAt`              | string                   | ISO 8601 last-update timestamp.                                                  |
    | `originalAnswerSnapshot` | `AnswerSnapshot` \| null | Snapshot of the original response.                                               |
    | `latestIteration`        | `FixIteration` \| null   | Most recent iteration.                                                           |
    | `iterations`             | `FixIteration[]`         | All iterations, newest first.                                                    |
  </Accordion>

  <Accordion title="FixIteration" icon="rotate">
    | Field                 | Type                     | Description                                                                                                |
    | --------------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------- |
    | `id`                  | string                   | Iteration ID.                                                                                              |
    | `companyId`           | string                   | Workspace ID.                                                                                              |
    | `sessionId`           | string                   | Parent session ID.                                                                                         |
    | `interactionId`       | string                   | Reviewed conversation ID.                                                                                  |
    | `targetEventId`       | string                   | Original Fini response under review.                                                                       |
    | `previousIterationId` | string \| null           | Previous iteration in the session.                                                                         |
    | `backgroundJobId`     | string \| null           | Processing job ID.                                                                                         |
    | `replayInteractionId` | string \| null           | Conversation created for the replay.                                                                       |
    | `replayEventId`       | string \| null           | Generated answer event from the replay.                                                                    |
    | `iterationNumber`     | number                   | One-based revision number within the session.                                                              |
    | `status`              | string                   | `queued`, `generating_changes`, `replaying`, `ready`, `no_change`, `failed`, `published`, or `superseded`. |
    | `feedbackNote`        | string                   | Feedback supplied when the iteration was created.                                                          |
    | `summary`             | string \| null           | Generated summary of the recommendation.                                                                   |
    | `confidence`          | string \| null           | `high`, `medium`, `low`, or `null`.                                                                        |
    | `error`               | string \| null           | Processing error for a failed iteration.                                                                   |
    | `publishedAt`         | string \| null           | ISO 8601 publication timestamp.                                                                            |
    | `startedAt`           | string \| null           | ISO 8601 processing-start timestamp.                                                                       |
    | `completedAt`         | string \| null           | ISO 8601 completion timestamp.                                                                             |
    | `createdAt`           | string                   | ISO 8601 creation timestamp.                                                                               |
    | `updatedAt`           | string                   | ISO 8601 last-update timestamp.                                                                            |
    | `oldAnswerSnapshot`   | `AnswerSnapshot` \| null | Answer used as the baseline for this iteration.                                                            |
    | `newAnswerSnapshot`   | `AnswerSnapshot` \| null | Answer generated by the replay.                                                                            |
    | `changes`             | `FixChange[]`            | Suggested prompt, knowledge, or rule changes.                                                              |
  </Accordion>

  <Accordion title="AnswerSnapshot" icon="message">
    | Field             | Type           | Description                                                           |
    | ----------------- | -------------- | --------------------------------------------------------------------- |
    | `interactionId`   | string         | Conversation containing the answer.                                   |
    | `eventId`         | string         | Answer event ID.                                                      |
    | `originalEventId` | string \| null | Optional original event referenced by a replay event, when available. |
    | `content`         | string \| null | Answer content.                                                       |
    | `role`            | string         | Event role. The reviewed answer is normally `finibot`.                |
    | `type`            | string         | Event type.                                                           |
    | `createdAt`       | string         | ISO 8601 event timestamp.                                             |
  </Accordion>

  <Accordion title="FixChange" icon="wand-magic-sparkles">
    | Field                   | Type                      | Description                                                                               |
    | ----------------------- | ------------------------- | ----------------------------------------------------------------------------------------- |
    | `id`                    | string                    | Change ID.                                                                                |
    | `companyId`             | string                    | Workspace ID.                                                                             |
    | `sessionId`             | string                    | Parent session ID.                                                                        |
    | `iterationId`           | string                    | Parent iteration ID.                                                                      |
    | `interactionId`         | string                    | Reviewed conversation ID.                                                                 |
    | `targetEventId`         | string                    | Reviewed Fini response ID.                                                                |
    | `position`              | number                    | Zero-based display order within the iteration.                                            |
    | `recommendationOutcome` | string                    | `change_recommended`, `already_fixed`, or `no_actionable_fix`.                            |
    | `failureClass`          | string                    | Classified cause, such as `prompt_routing`, `kb_article_missing`, or `rule_wrong_action`. |
    | `targetEntity`          | string                    | `prompt`, `kb_article`, or `rule`.                                                        |
    | `targetId`              | string \| null            | Existing target ID, or `null` for a new knowledge article.                                |
    | `draftArticleId`        | string \| null            | Draft article created to preview a knowledge recommendation.                              |
    | `operation`             | string                    | `create` or `update`.                                                                     |
    | `reason`                | string                    | Explanation for the recommendation.                                                       |
    | `suggested`             | object                    | Entity-specific suggested content. See [Suggested object](#suggested-object).             |
    | `contentIssueKind`      | string \| null            | For knowledge-content defects: `incomplete`, `stale`, `wrong`, or `null`.                 |
    | `displayLocation`       | `DisplayLocation` \| null | Human-readable prompt location metadata.                                                  |
    | `createdAt`             | string                    | ISO 8601 creation timestamp.                                                              |
    | `updatedAt`             | string                    | ISO 8601 last-update timestamp.                                                           |
  </Accordion>

  <Accordion title="DisplayLocation" icon="location-dot">
    | Field            | Type           | Description                                                    |
    | ---------------- | -------------- | -------------------------------------------------------------- |
    | `section`        | string \| null | Prompt section: `planning`, `guideline`, `channel`, or `null`. |
    | `promptLabel`    | string \| null | Human-readable prompt label.                                   |
    | `sectionName`    | string \| null | Human-readable section name.                                   |
    | `subsectionName` | string \| null | Human-readable subsection name.                                |
  </Accordion>
</AccordionGroup>

### Suggested object

The `suggested` shape depends on `targetEntity` and `operation`:

| Target       | Operation            | Fields                                                                              |
| ------------ | -------------------- | ----------------------------------------------------------------------------------- |
| `prompt`     | `update`             | `section`, `sectionId`, `subsectionId`, `text`                                      |
| `prompt`     | `create`             | `section`, `sectionId`, `title`, `text`                                             |
| `kb_article` | `create` or `update` | `title`, `agentInstruction`, `mainKnowledge`, `questions`, `keywords`, `escalation` |
| `rule`       | `update`             | `currentFlowConfigJson` and `proposedFlowConfigJson`                                |

For prompt suggestions, `section` is `planning`, `guideline`, or `channel`. Knowledge `questions` and `keywords` are string arrays, and `escalation` is boolean. Rule flow configurations are JSON-encoded strings; `currentFlowConfigJson` can be `null`.

### Fix-change enum values

`failureClass` can be:

* `prompt_routing`, `prompt_style`, `prompt_logic`, or `prompt_conflict`
* `kb_article_missing`, `kb_article_search_failed`, or `kb_article_content_defect`
* `rule_false_trigger`, `rule_missed_trigger`, `rule_wrong_action`, or `rule_conflict`

`recommendationOutcome` can be `change_recommended`, `already_fixed`, or `no_actionable_fix`. `targetEntity` can be `prompt`, `kb_article`, or `rule`.

## Errors

<AccordionGroup>
  <Accordion title="400 Bad Request" icon="circle-exclamation">
    The event does not belong to the conversation, is not Fini-authored, or has no linked user event for replay.
  </Accordion>

  <Accordion title="401 Unauthorized" icon="lock">
    The API key is missing, malformed, revoked, or invalid.
  </Accordion>

  <Accordion title="403 Forbidden" icon="shield-halved">
    The API key does not include the `read` scope required for this route.
  </Accordion>

  <Accordion title="404 Not Found" icon="ghost">
    The conversation or target event does not exist in the workspace.
  </Accordion>

  <Accordion title="500 Internal Server Error" icon="triangle-exclamation">
    Fini could not load the fix-review session or its related records.
  </Accordion>
</AccordionGroup>
