get /v1/budgets/{budget_id}/entries
Filed history: search entries
scope budget:read · listEntries
Parameters
budget_id path · string · required
envelope_id query · string
from query · string
to query · string
q query · string
min_cents query · string
max_cents query · string
cursor query · string
limit query · integer · ≥ 1 · ≤ 100
Returns · 200
{ entries: [{ id, envelope_id, transaction_id, amount_cents, note, filed_by, created_at, transaction: { id, date, name, merchant_name, amount_cents, currency, account_id, pending } }], next_cursor }, newest filed first. This is where past spending lives: the inbox holds only what is NOT yet filed. Filter by envelope_id, an inclusive from/to on the transaction date (YYYY-MM-DD), q (case-insensitive substring of name or merchant) and min_cents/max_cents on the entry's magnitude, so "restaurants in July" is envelope_id + from + to, and "everything over $500 this year" is min_cents=50000 + from. Page with cursor/limit (max 100).
Example
Errors · besides 401, 429, 500
- 400
budget_ambiguous: This tenant holds more than one budget, so the call must say which. GET /v1/budgets for the ids, then pass budget_id.validation_failed: The request body or query is malformed. The message names the offending field; fix it and retry. - 403
forbidden: The key is valid but lacks the scope this call needs. Ask the human to mint a key with the scope named in the message. - 404
not_found: No such record on this budget. Re-read GET /v1/budgets/{id} (or the relevant list) for current ids rather than reusing a remembered one.