Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.montereyfinancial.dev/llms.txt

Use this file to discover all available pages before exploring further.

The Monterey Reporting API exposes historical portfolio, transactional, and lifecycle reports as HTTPS JSON endpoints. Each API key is bound to a fixed set of organizations; every request returns only rows the key is authorized to see.

What’s available today

Reports

CodeEndpointStatus
CRRGET /reports/crrAvailable
NSFRGET /reports/nsfrAvailable
CARGET /reports/carAvailable
NCARGET /reports/ncarAvailable
MPRGET /reports/mprAvailable
NSRGET /reports/nsrAvailable
WORGET /reports/worAvailable
PIFGET /reports/pifAvailable
ABRGET /reports/abrAvailable
DRGET /reports/drAvailable
SPRGET /reports/sprDeferred (candidate→party resolution gap)

Resource endpoints (all paginated where applicable)

EndpointDescription
GET /accountsList accounts the key can see
GET /accounts/{id}Single account; 404 if out of scope
GET /accounts/{id}/transactionsAll transactions for an account
GET /organizationsList organizations from the key’s allowlist
GET /organizations/{id}Single organization; 404 if out of scope
GET /personsPersons reachable through in-scope accounts
GET /persons/{id}Single person; 404 if not reachable
GET /transactionsAll transactions across in-scope accounts

Before you call

1

Get an API key

Keys are minted in the client portal. Each key is bound to an explicit allowlist of organization IDs you own.
2

Add the Authorization header

Send your API key on every request, prefixed with Bearer:
Authorization: Bearer mk_your_key_here
3

Pick a date range

Every report takes from and to query parameters (inclusive, YYYY-MM-DD). The column each report filters on differs — see the endpoint pages.
The plaintext key is shown once at creation. Store it like a password — we only keep its hash, and a revoked key cannot be recovered.

Where rows come from

Every row carries an organization_id so clients with multi-org keys can group their own reports. The discriminator on the server side is Account.servicing_dealer_party_id — when the same logical customer appears as multiple Party rows, the portal can scope a single key to all of them or to a subset.

Known data gaps

Some historical rows have NULL values in fields that were added more recently. The most common is amount_cents, which is NULL for some pre-2017 payments — the migration that added per-fee-category amounts only filled new transactions. Treat NULL as “unknown” rather than “zero”.

Tools & integrations

The full OpenAPI 3.1 spec is downloadable and importable into any API tool that understands OpenAPI — Postman, Insomnia, Bruno, code generators, and more.

Download OpenAPI spec

The complete machine-readable spec for every endpoint and schema in this API. JSON, OpenAPI 3.1.

Use it in Postman, Insomnia, or Bruno

Right-click the Download OpenAPI spec link above and copy the URL. Then in your tool of choice:
  • Postman — File → Import → Link, paste the URL. Postman generates a full collection with the Bearer auth scheme pre-wired.
  • Insomnia — Create → Import From → URL, paste the URL.
  • Bruno — Collection → Import → OpenAPI v3 Spec, paste the URL.
You’ll be prompted to add your API key as a collection-level variable on first import. After that every endpoint is one click to try.

Next

Authentication

Org-scoped keys, 401 vs 403 semantics, key rotation.

Conventions

Date formats, error responses, the organization_id query parameter.