Skip to main content
GET
/
reconciliation_exceptions
/
{id}
Retrieve a reconciliation exception
curl --request GET \
  --url https://api.endclose.com/v1/reconciliation_exceptions/{id} \
  --header 'X-API-KEY: <api-key>'
{
  "reconciliation_id": 123,
  "data_stream_id": 123,
  "title": "<string>",
  "id": 123,
  "reconciliation_name": "<string>",
  "data_stream_name": "<string>",
  "data_stream_key": "<string>",
  "description": "<string>",
  "status": "open",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "opened_at": "2023-11-07T05:31:56Z",
  "closed_at": "2023-11-07T05:31:56Z",
  "assignees": [
    {
      "id": 123,
      "workos_user_id": "<string>"
    }
  ],
  "decimal_places": 2,
  "aggregates": {
    "record_count": 123,
    "total_amount": 123,
    "debit_count": 123,
    "debit_sum": 123,
    "credit_count": 123,
    "credit_sum": 123,
    "avg_age_days": 123,
    "oldest_at": "2023-11-07T05:31:56Z",
    "newest_at": "2023-11-07T05:31:56Z"
  },
  "filtered_aggregates": {
    "record_count": 123,
    "total_amount": 123,
    "debit_count": 123,
    "debit_sum": 123,
    "credit_count": 123,
    "credit_sum": 123,
    "avg_age_days": 123,
    "oldest_at": "2023-11-07T05:31:56Z",
    "newest_at": "2023-11-07T05:31:56Z"
  },
  "comments": [
    {
      "id": 123,
      "body": "<string>",
      "author_workos_id": "<string>",
      "mentions": [
        123
      ],
      "created_at": "2023-11-07T05:31:56Z"
    }
  ],
  "investigation": {
    "id": 123,
    "status": "<string>",
    "recommendation_text": "<string>",
    "confidence_score": 123,
    "candidate_records_searched": 123,
    "suggested_record_ids": [
      123
    ],
    "filter_params": {},
    "completed_at": "2023-11-07T05:31:56Z",
    "created_at": "2023-11-07T05:31:56Z"
  },
  "investigation_sessions": [
    {
      "id": 123,
      "status": "<string>",
      "recommendation_text": "<string>",
      "confidence_score": 123,
      "candidate_records_searched": 123,
      "suggested_record_ids": [
        123
      ],
      "filter_params": {},
      "completed_at": "2023-11-07T05:31:56Z",
      "created_at": "2023-11-07T05:31:56Z"
    }
  ]
}

Authorizations

X-API-KEY
string
header
required

Path Parameters

id
string
required

Query Parameters

amount_min
integer

Include records with signed amount >= amount_min (cents)

amount_max
integer

Include records with signed amount <= amount_max (cents)

date_from
string<date>

Include records with transaction date >= date_from

date_to
string<date>

Include records with transaction date <= date_to

direction
enum<string>

Include only debits (amount < 0) or credits (amount > 0)

Available options:
debit,
credit
counterparty
string

Case-insensitive substring match on record description

age_bucket
enum<string>

Convenience age filter on time since overdue_at

Available options:
lt_7d,
7_30d,
30_90d,
gt_90d

Response

Exception retrieved

A reconciliation exception represents unmatched overdue records that need human attention. Exceptions are scoped to a (reconciliation, data_stream) tuple and managed by the sweeper job — record membership is computed on read from the set of unmatched records whose overdue_at has passed.

reconciliation_id
integer
required

The reconciliation this exception belongs to

data_stream_id
integer
required

The data stream this exception is scoped to

title
string
required
id
integer
reconciliation_name
string

Name of the parent reconciliation

data_stream_name
string

Human-readable name of the scoped data stream

data_stream_key
string

Immutable key of the scoped data stream

description
string
status
enum<string>
default:open
Available options:
open,
investigating,
dismissed,
resolved
created_at
string<date-time>
updated_at
string<date-time>
opened_at
string<date-time> | null

When the exception most recently transitioned into an open state. Distinct from created_at so reopening is tracked cleanly.

closed_at
string<date-time> | null

When the exception most recently transitioned into a resolved or dismissed state. Cleared on reopen.

assignees
object[]
decimal_places
integer
default:2

Number of decimal places (2 for USD)

aggregates
object

Whole-exception aggregates over the current unmatched overdue slice.

filtered_aggregates
object

Aggregates restricted to the filter query parameters. Equals aggregates when no filter is supplied. Only present on the show response.

comments
object[]

Comments on this exception, oldest first

investigation
object

The most recent agent investigation session for this exception, if any.

investigation_sessions
object[]

Up to the five most recent investigation sessions, newest first. Exceptions may accumulate multiple sessions as the overdue set evolves.