Walletguide
DevelopersAPI

Metrics

The data slices behind net worth, cash flow and every report in Walletguide, and why you should ask them instead of summing transactions.

Every number the app shows comes from a slice: a named computation that runs on the server over the full history. There are seventeen of them, and they are the same code the dashboard and the reports use, so an answer from the API is the answer in the app.

curl -s -X POST -H "Authorization: Bearer $WALLETGUIDE_API_KEY" \
  -H 'content-type: application/json' -d '{"period":"ytd"}' \
  "https://api.walletguide.com/wallets/$W/data/netWorthTimeSeries"

Why not add the rows up yourself

Because you would get a different number, and nothing would tell you.

A list route is paginated, so you would be summing a page. Beyond that, several rules live in the engine rather than on the row. A split transaction has a parent that must not be counted alongside its children. A transfer between two of your own accounts is two rows and zero net change. Offset and balance categories exist to correct a total rather than contribute to it. A holding in another currency converts at the rate for its date, not today's.

The slices apply all of that. Raw rows are for showing transactions, not for totalling them.

What there is

SliceAnswers
netWorthTimeSeriesWhat it was worth, bucketed by month or day
networthAtDateWhat it was worth on one date
netWorthByAssetWhich assets make it up
netWorthByAssetAccessThe same, grouped by how liquid it is
assetPerformanceWhat each asset did over a window
cashFlowTimeSeriesIn and out, over time
cashFlowByCategoryIn and out, by category
categoryBreakdownWhere the money went
categoryAveragesWhat a category usually costs
expensesByMerchantWho it went to
topExpensesThe largest of them
profitLossIncome against expenses
planVsActualThe plan against what happened
periodDetailsOne period, in full
transfersMovement between your own accounts
cryptoHoldingsValueCrypto positions and their value
securityHoldingsValueSecurities positions and their value

Each is a route under /wallets/{walletId}/data/, with its own parameters. See the reference for the exact shapes, or walletguide data --help.

Periods

Most slices take a period, either a named window or an explicit one:

{ "period": "ytd" }
{ "period": { "startDate": "2026-01-01", "endDate": "2026-03-31" } }

Named windows: today, yesterday, 7days, 30days, 3months, 6months, 1year, mtd, ytd, lastWeek, lastMonth, lastYear, thisYear, thisAndNextYear, allTime. Omitting it altogether means the whole history, from the earliest transaction to today.

Asking for several at once

A dashboard wants six numbers, and six round trips is five too many. data/batch takes them together and shares the loaded engine between them:

curl -s -X POST -H "Authorization: Bearer $WALLETGUIDE_API_KEY" \
  -H 'content-type: application/json' \
  -d '{"slices":[
        {"type":"netWorthTimeSeries","period":"1year"},
        {"type":"categoryBreakdown","period":"30days"}
      ]}' \
  "https://api.walletguide.com/wallets/$W/data/batch"

The results come back in the order you asked. This is what the app itself does on every page load.

On this page