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

# Read the review of an exception

> Returns the exception's findings with each line's derived status, filtered and paged. Lines sort `to_look_at` first, then `looks_right`, then `done`; within a status, newest record date first. `sort` puts a column in front of that order.



## OpenAPI

````yaml /openapi.json get /reconciliation_exceptions/{id}/review
openapi: 3.1.0
info:
  title: End Close API
  description: REST API is used to interact with the End Close platform.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.endclose.com/v1
security:
  - ApiKeyAuth: []
paths:
  /reconciliation_exceptions/{id}/review:
    get:
      summary: Read the review of an exception
      description: >-
        Returns the exception's findings with each line's derived status,
        filtered and paged. Lines sort `to_look_at` first, then `looks_right`,
        then `done`; within a status, newest record date first. `sort` puts a
        column in front of that order.
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
        - in: query
          name: status
          schema:
            type: string
            enum:
              - all
              - to_look_at
              - looks_right
              - done
            default: to_look_at
        - in: query
          name: q
          schema:
            type: string
          description: >-
            Case-insensitive substring match on the record's description,
            external id, `metadata.client_name` or `metadata.line_num`, or the
            finding's note or category
        - in: query
          name: category
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          description: >-
            Only lines whose finding is in one of these categories (exact
            match). Repeat the parameter for several.
        - in: query
          name: sort
          schema:
            type: string
            enum:
              - date
              - description
              - category
              - amount
              - other_amount
              - difference
              - quantity
              - other_quantity
              - quantity_difference
              - status
          description: >-
            Column to sort by. Amounts sort on magnitude; `difference` and
            `quantity_difference` on the signed gap; lines with nothing in the
            column come last. Unknown values keep the review order.
        - in: query
          name: dir
          schema:
            type: string
            enum:
              - asc
              - desc
            default: asc
        - in: query
          name: page
          schema:
            type: integer
            default: 1
        - in: query
          name: per_page
          schema:
            type: integer
            default: 50
            maximum: 200
      responses:
        '200':
          description: A page of the review
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewPage'
        '401':
          description: Unauthorized
        '404':
          description: Exception not found
        '422':
          description: The exception's data stream is no longer on the reconciliation
components:
  schemas:
    ReviewPage:
      type: object
      properties:
        rows:
          type: array
          items:
            $ref: '#/components/schemas/ReviewRow'
        counts:
          $ref: '#/components/schemas/ReviewCounts'
        categories:
          type: array
          description: >-
            Every finding category on the exception with how many lines carry
            it, most common first — counted over the whole exception, not the
            current filter.
          items:
            type: object
            properties:
              name:
                type: string
              count:
                type: integer
        page:
          type: integer
        per_page:
          type: integer
        total:
          type: integer
          description: Rows matching the current `status`, `category` and `q` filters.
        sides:
          type: object
          description: '`{ a: { data_stream_id, name }, b: { data_stream_id, name } }`'
        row_side:
          type: string
          enum:
            - a
            - b
          description: Which side the exception's lines are on.
        pending_notes:
          type: integer
          description: Overdue lines of this exception that have no finding yet.
    ReviewRow:
      type: object
      properties:
        record:
          allOf:
            - $ref: '#/components/schemas/ReconciliationEntry'
          description: The record as it stands in the exception's reconciliation.
        finding:
          $ref: '#/components/schemas/Finding'
        status:
          type: string
          enum:
            - to_look_at
            - looks_right
            - done
          description: >-
            Derived on read: `done` once the record is matched, else
            `looks_right` or `to_look_at` from the finding.
        difference_cents:
          type: integer
          description: >-
            |this line's amount| − |finding.other_side.amount_cents|, in cents.
            Zero when nothing was found on the other side.
        quantity:
          type: number
          nullable: true
          description: >-
            The line's count, read from the record's `metadata.quantity`, `qty`,
            `count`, `event_qty` or `units` (first present). Null when the
            record carries none.
        other_quantity:
          type: number
          nullable: true
          description: '`finding.other_side.count`, or null.'
        quantity_difference:
          type: number
          nullable: true
          description: '`quantity` − `other_quantity`; null unless both sides carry a count.'
    ReviewCounts:
      type: object
      description: >-
        Counts of review lines by status. A line is `done` once its record is
        matched, `looks_right` when its finding says so and it is not yet
        matched, and `to_look_at` otherwise.
      properties:
        all:
          type: integer
        to_look_at:
          type: integer
        looks_right:
          type: integer
        done:
          type: integer
    ReconciliationEntry:
      description: >-
        A record's entry in one reconciliation. Match status, escalation, and
        matched records are all scoped to that reconciliation; a record has one
        entry per reconciliation it participates in. `id` is the record id.
      allOf:
        - $ref: '#/components/schemas/Record'
        - type: object
          properties:
            reconciliation_id:
              type: integer
            reconciliation_name:
              type: string
            status:
              type: string
              enum:
                - reconciled
                - unreconciled
              description: Whether the record is matched in this reconciliation. Read-only.
            escalated:
              type: boolean
              description: Unmatched and past its `overdue_at`.
            overdue_at:
              type: string
              format: date-time
              nullable: true
            matched_records:
              type: array
              description: Records matched with this record in this reconciliation
              items:
                type: object
                properties:
                  id:
                    type: integer
                  amount:
                    type: integer
                    description: Amount in cents
                  currency:
                    type: string
                    description: Three-letter ISO 4217 currency code (e.g. USD, EUR)
                    default: USD
                  decimal_places:
                    type: integer
                    default: 2
                  direction:
                    type: string
                    enum:
                      - credit
                      - debit
                  description:
                    type: string
                  date:
                    type: string
                    format: date
                  external_id:
                    type: string
                  data_stream_key:
                    type: string
                  reconciliation_id:
                    type: integer
                    description: The reconciliation in which this match was made
                  reconciliation_name:
                    type: string
                    description: Name of the reconciliation in which this match was made
            days_unreconciled:
              type: integer
              nullable: true
              description: >-
                Number of days since the record's date. Null when the record is
                reconciled.
            exception_id:
              type: integer
              nullable: true
              description: >-
                Open exception covering this entry's data stream when the entry
                is escalated. Null otherwise.
    Finding:
      type: object
      description: 'A stored finding: the `FindingInput` fields as saved, plus provenance.'
      properties:
        id:
          type: string
        record_id:
          type: string
        looks_right:
          type: boolean
        note:
          type: string
        suggestion:
          type: object
          description: >-
            As `FindingInput.suggestion`, with `record_ids` resolved to record
            ids and `difference_cents` recomputed.
        evidence:
          type: array
          items:
            type: object
        precedent:
          type: string
          nullable: true
        other_side:
          type: object
          description: >-
            What the other column shows: `{ amount_cents, count, record_ids }`
            derived from the suggested records on the opposite side, or `{}`.
            `count` is the sum of those records' counts (`metadata.quantity`,
            `qty`, `count`, `event_qty` or `units`, first present) and is only
            there when one of them carries one. You may send `amount_cents` and
            `count` yourself; a `count` you leave out is still derived.
        category:
          type: string
          nullable: true
        labels:
          type: object
        source:
          type: string
          enum:
            - api
            - agent
          description: >-
            `api` when written through this API; `agent` when written by End
            Close's own review.
        created_at:
          type: string
          format: date-time
    Record:
      type: object
      required:
        - date
        - data_stream_key
        - amount
        - direction
      properties:
        id:
          type: integer
        amount:
          type: integer
          description: The monetary amount in cents (e.g., 1234 = $12.34)
        currency:
          type: string
          description: >-
            Three-letter ISO 4217 currency code (e.g. USD, EUR). **Optional on
            create — defaults to `USD` when omitted.** Case-insensitive on
            input; always returned uppercase.
          pattern: ^[A-Za-z]{3}$
          default: USD
        decimal_places:
          type: integer
          description: Number of decimal places for this currency (2 for USD)
          default: 2
        direction:
          type: string
          enum:
            - credit
            - debit
        description:
          type: string
        date:
          type: string
          format: date
        metadata:
          type: object
          additionalProperties: true
          default: {}
        external_id:
          type: string
        data_stream_key:
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.