Dates
All date parameters areYYYY-MM-DD and inclusive on both ends:
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_idfield 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.
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 anitems array plus pagination metadata:
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.POSTbodies require the fields the endpoint page marks required; everything else is optional. PATCHis 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 andDELETE /autopay/{id}cancels the schedule; both stay visible afterward (is_active: false,status: cancelled) so payment history remains auditable, and repeating the call returns204again. Cancelled schedules cannot be reactivated.
Pagination
List endpoints acceptcursor 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:
next_cursor — there is no offset.