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.

These conventions hold across every Reporting API endpoint. The endpoint pages document only their own filters and column projections.

Dates

All date parameters are YYYY-MM-DD and inclusive on both ends:
?from=2024-01-01&to=2024-12-31
The column that the from / to range filters on differs per report — the endpoint page documents which one. CRR filters on effective_at; NSFR filters on effective_at. Times in response bodies are always returned in UTC.

Money

All monetary fields are integers in cents (amount_cents, etc.). No currency conversion happens server-side — every Monterey account is denominated in USD.
Some historical rows have amount_cents: null — the field was added more recently than the data. Treat null as “unknown”, not zero.

The organization_id query parameter

Optional on every endpoint. Two modes:
  • Omit it: results cover every organization the key is scoped to. Each row’s organization_id field tells you which org it belongs to.
  • Include it: results are restricted to that single org. If the org isn’t in the key’s allowlist, you get 403.
The organization_id is the Party.id value Monterey assigns; the portal shows it next to each organization on the key creation screen.

Error shape

Every non-2xx response uses the same JSON body:
{
  "detail": {
    "error_code": "organization_out_of_scope"
  }
}
Statuserror_codeCause
400invalid_date_rangeto is earlier than from, or either is unparseable
400invalid_limitlimit out of range when called outside FastAPI validation (detail includes min_limit, max_limit, provided)
401missing_tokenAuthorization header missing or not Bearer
401invalid_tokenKey is unknown, revoked, expired, or has no party scopes
403organization_out_of_scope?organization_id=X where X is outside the key’s allowlist
422variousFastAPI parameter validation errors (also include a loc field); includes limit out-of-range on list endpoints

Response shape

Every endpoint returns:
{
  "rows": [
    {
      "transaction_id": "01J...",
      "organization_id": "01K...",
      "account_id": "01J...",
      "type": "payment",
      "amount_cents": 12500,
      "effective_at": "2024-03-15",
      "status": null
    }
  ]
}

Pagination

List endpoints accept cursor and limit query parameters. The response body includes a next_cursor field when more rows are available — pass that value back as cursor on the next call to fetch the next page. When next_cursor is null, you’ve reached the end of the result set.
GET /transactions?from=2024-01-01&to=2024-12-31&limit=500
GET /transactions?from=2024-01-01&to=2024-12-31&limit=500&cursor=<next_cursor>

Limit

FieldValue
Default100
Minimum1
Maximum500
Requests with limit > 500 are rejected with 422 before they reach the handler. The validation envelope (FastAPI’s default shape) carries the violated constraint:
{
  "detail": [
    {
      "loc": ["query", "limit"],
      "msg": "Input should be less than or equal to 500",
      "type": "less_than_equal",
      "ctx": {"le": 500},
      "input": "501"
    }
  ]
}
Narrow your page size and walk the result set with the returned next_cursor — there is no offset.