Update Account
const url = 'https://example.com/accounts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PATCH', headers: {'Content-Type': 'application/json'}, body: '{"description":"example","drift_basis_override":"pending_inclusive","feed_invert":true,"feed_start":"2026-04-15","hidden":true,"holdings_source":"feed","name":"example","path":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://example.com/accounts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Content-Type: application/json' \ --data '{ "description": "example", "drift_basis_override": "pending_inclusive", "feed_invert": true, "feed_start": "2026-04-15", "hidden": true, "holdings_source": "feed", "name": "example", "path": "example" }'Rename / re-describe / hide / move a real account.
A new path moves the account and every account beneath it, keeping
their relative paths; the move is audited (account.move) and emits
account.moved. Balances and history are unaffected: transactions point
at accounts by id.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”Rename / re-describe / hide / move a real account (DESIGN §3.4).
hidden toggles the display-only hidden_at timestamp; path
moves the account and everything beneath it (decision 72).
feed_start (§7.1, decision 40) is admin-only: explicit null clears,
absent leaves unchanged (model_fields_set distinguishes the two).
feed_invert (§7.1, decision 43) is admin-only feed configuration
too; a plain bool, so absent/None simply leaves it unchanged.
drift_basis_override (§7.3, decision 83) is admin-only as well, with
feed_start’s explicit-null-clears rule. holdings_source (§8,
decision 88) is admin-only too; absent/None leaves it unchanged.
object
Responses
Section titled “Responses”Successful Response
object
A recorded reconciliation (issue #268), re-checked against the ledger
when it is read — so a backdated import, edit or replay that moved the
balance on as_of shows up here as a nonzero difference instead of
leaving the reconciled-through marker silently wrong.
statement_balance is the figure as the statement shows it (positive =
money held; for a credit card, the amount owed). Every other amount is in
ledger sign (a card is negative when owed).
object
Example
{ "drift_basis_override": "pending_inclusive", "feed_invert": false, "holdings_source": "feed", "reconciliation": { "basis": "posted" }}The new path is taken: an account already sits at it or beneath it.
Validation Error
object
object
object
Example generated
{ "detail": [ { "ctx": {}, "input": "example", "loc": [ "example" ], "msg": "example", "type": "example" } ]}