Skip to main content
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:
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 ULID-shaped identifier Monterey assigns to each organization; the portal shows it next to each organization on the key creation screen.

Error shape

Every non-2xx response uses the same JSON body:

Response shape

Every list endpoint — reports and resources alike — returns an items array plus pagination metadata:
Single-resource reads (GET /accounts/{id}), creates (POST /autopay), and updates (PATCH) return the bare object — no envelope. Deletes return 204 No Content with an empty body.

Write requests

The payment-operations endpoints (POST, PATCH, DELETE) follow three conventions:
  • JSON bodies. Send Content-Type: application/json. POST bodies require the fields the endpoint page marks required; everything else is optional.
  • PATCH is partial. Send only the fields you want to change — omitted fields keep their current values. Each endpoint page lists which fields are editable; anything else is immutable (for example, a payment method’s instrument data, or an autopay schedule’s cadence and start date).
  • Deletes are soft and idempotent. DELETE /payment-methods/{id} deactivates the record and DELETE /autopay/{id} cancels the schedule; both stay visible afterward (is_active: false, status: cancelled) so payment history remains auditable, and repeating the call returns 204 again. Cancelled schedules cannot be reactivated.

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.

Limit

Requests with limit > 1000 are rejected with 422 before they reach the handler. The validation envelope (FastAPI’s default shape) carries the violated constraint:
Narrow your page size and walk the result set with the returned next_cursor — there is no offset.