API reference · Pricing, reporting & reconciliation

Reconciliation runs

GET List a definition's runs

GET /reconciliation/definition/{code}/runs

Newest first, including blocked and superseded ones - a period that failed to reconcile is part of the record, not something to hide until it succeeds.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
code

Example

Response: GenericResponseListRunResponse

curl -X GET "https://api.bridgemoni.com/reconciliation/definition/value/runs" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Runs retrieved successfully

GET List an entity's stream exceptions

GET /reconciliation/entity/{code}/stream-exceptions

MISSING_ON_STREAM is a record the entity's own file names that no webhook ever delivered - the only honest monitor of webhook delivery health, because an endpoint that drops one delivery in a thousand is invisible until something counts what should have arrived. MISSING_ON_FILE is the reverse: we hold a record the entity does not.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
code

Example

Response: GenericResponseListStreamExceptionResponse

curl -X GET "https://api.bridgemoni.com/reconciliation/entity/value/stream-exceptions" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Stream exceptions retrieved successfully

POST Raise an exception for every stale stream on an entity

POST /reconciliation/entity/{code}/sweep-stale-streams

Run before a period is scheduled, never after it closes: a stale stream discovered afterwards is a clean certificate over a dead endpoint. Raising twice for the same silent channel does nothing - the exception stays open until somebody resolves it.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
code

Example

Response: GenericResponseInteger

curl -X POST "https://api.bridgemoni.com/reconciliation/entity/value/sweep-stale-streams" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Stale streams swept successfully

GET Read an entity's stream watermarks

GET /reconciliation/entity/{code}/watermarks

When each stream channel last delivered anything, against the heartbeat it promised. A channel that has delivered nothing since Tuesday is either an entity with no transactions or an integration that is down, and those look identical until a heartbeat says which was expected. The figure is derived from the deliveries themselves rather than accumulated in a column, so there is nothing to drift.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
code

Example

Response: GenericResponseListWatermarkResponse

curl -X GET "https://api.bridgemoni.com/reconciliation/entity/value/watermarks" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Watermarks retrieved successfully

POST Open a run over a period

POST /reconciliation/run

Every side is checked for completeness before anything is compared: declared row counts against what we accepted, declared control totals against what the records sum to, this statement's opening balance against the last one's closing, and a gap in a statement sequence. If any side fails, the run is BLOCKED and matches nothing at all - reconciling what is there would produce a queue of breaks that are artefacts of the missing data, mixed with real ones and indistinguishable from them. The gate that matters most is EXAMINED_NOTHING: a comparison of zero against zero reports a clean period, and looks exactly like success.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Example

Request body: OpenRunRequest · Response: GenericResponseRunResponse

curl -X POST "https://api.bridgemoni.com/reconciliation/run" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "definitionCode": "string",
  "periodStart": "string",
  "periodEnd": "string",
  "supersedesRunReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
}'

Responses

StatusWhen
200Run opened successfully

GET Read a run

GET /reconciliation/run/{reference}

The run and every side of it, with what each side declared beside what we actually hold. completenessAsserted is false where a side has no authoritative channel - the run still executes, and the certificate says so on its face. That is the difference between a limitation and a lie.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: GenericResponseRunResponse

curl -X GET "https://api.bridgemoni.com/reconciliation/run/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Run retrieved successfully

GET Read what a corrected run changed

GET /reconciliation/run/{reference}/delta

Compares a superseding run against the one it replaced and says which differences the correction explained, which appear only in the corrected data, and which survive and still need somebody. A corrected statement that simply replaced the earlier report would leave a reader unable to tell whether the correction fixed the problem or moved it, and the earlier certificate is kept precisely so this comparison is possible. A run that is the first over its period has nothing to compare with and says so rather than inventing a baseline.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: GenericResponseRunDeltaResponse

curl -X GET "https://api.bridgemoni.com/reconciliation/run/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/delta" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Delta retrieved successfully

GET List every unresolved stream exception

GET /reconciliation/stream-exceptions

The operations queue for delivery health across all entities.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Example

Response: GenericResponseListStreamExceptionResponse

curl -X GET "https://api.bridgemoni.com/reconciliation/stream-exceptions" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Stream exceptions retrieved successfully

Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors