Skip to content

List Snapshots Endpoint

GET
/api/v1/snapshots
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.

limit
Limit
integer
default: 250 >= 1 <= 500
offset
Offset
integer
0
date_limit
Any of:
integer
>= 1 <= 100
date_offset
Date Offset
integer
0
account_id
Any of:
integer
date_from
Any of:
string format: date
date_to
Any of:
string format: date
min_balance
Any of:
number
max_balance
Any of:
number
sort_by
Any of:
string
Allowed values: date account balance
sort_dir
Any of:
string
Allowed values: asc desc

Successful Response

Media typeapplication/json
Response List Snapshots Endpoint Api V1 Snapshots Get
Array<object>
SnapshotOut

Schema for snapshot response — ORM serialization via from_attributes.

object
id
required
Id
integer
account_id
required
Account Id
integer
date
required
Date
string format: date
balance
required
Balance
string
currency
required
Currency
string
source
required
Source
string
note
required
Any of:
string
deleted_at
required
Any of:
string format: date-time
created_at
required
Created At
string format: date-time
updated_at
required
Updated At
string format: date-time

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

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object

Example generated

{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}