List Snapshots Endpoint
const url = 'https://example.com/api/v1/snapshots?limit=250&offset=0&date_offset=0';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/api/v1/snapshots?limit=250&offset=0&date_offset=0'List non-deleted snapshots for the current user’s accounts, paginated.
Always returns X-Total-Count; a caller that needs everything (e.g. the Android client’s offline grid sync) pages through offset using that header rather than relying on an unbounded default – this endpoint used to allow omitting limit entirely for “all snapshots”, which both violated this project’s own no-unbounded-list-endpoints rule and let a long-running user’s response grow without limit.
date_limit/date_offset are an alternate pagination mode, mutually exclusive with limit/offset (which are ignored when date_limit is given): they page by distinct DATE using the same get_snapshot_grid_dates_page() the /grid endpoint uses, then return every row for that page’s dates. This is what the web UI’s cards view uses – a row-count limit could split a date’s entries across the page boundary (some accounts’ balances for a date but not others); date_limit guarantees a page is always whole dates. X-Total-Count is then the total distinct date count, not the row count.
Optional filters combine with AND: account_id (exact; another user’s or an unknown id matches nothing, indistinguishably), date_from/date_to and min_balance/max_balance (inclusive; the balance is the snapshot’s own, unconverted). sort_by (date, account or balance) and sort_dir (asc or desc) order the whole matching set before limit/offset apply; omitting both is date descending. After the primary key the order is fixed: date descending (unless sorting by date), account sort_order, account name, snapshot id descending, so offset pages are deterministic; the account sort compares the lower-cased name. X-Total-Count is the number of rows matching the filters. date_limit cannot be combined with any of these seven parameters (422, invalid_snapshot_query). Omitting them changes nothing.
Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Responses
Section titled “Responses”Successful Response
Schema for snapshot response — ORM serialization via from_attributes.
object
Example generated
[ { "id": 1, "account_id": 1, "date": "2026-04-15", "balance": "example", "currency": "example", "source": "example", "note": "example", "deleted_at": "2026-04-15T12:00:00Z", "created_at": "2026-04-15T12:00:00Z", "updated_at": "2026-04-15T12:00:00Z" }]Validation Error
object
object
object
Example generated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}