category_override = 'agent' on affected transactions, which prevents rules from reassigning the category on future syncs. A transaction whose category_override is 'user' (set by a human in the dashboard) is skipped — the write is a no-op and the human’s choice is preserved. To restore a transaction to automatic categorization, use reset_transaction_category.
Prefer compound ops for review-driven categorization. When you’re closing a review (set category + remove
needs-review + leave a note) reach for update_transactions instead. It writes one linked annotation per transaction covering the whole edit, where categorize_transaction only writes the category set.session_id + reason.
categorize_transaction
Manually overrides one transaction’s category. Passtransaction_id plus either category_id or category_slug — slug is resolved automatically.
Mirrors: PATCH /api/v1/transactions/{id}/category
Parameters
Transaction UUID or short ID.
Category slug (e.g.
food_and_drink_groceries). Alternative to category_id.Category UUID or short ID. Takes precedence if both are supplied.
From
create_session.Brief rationale.
Example input
Example output
batch_categorize_transactions
Categorize multiple transactions at once. Each item is a{transaction_id, category_slug} pair. Max 500 items per request. Sets category_override = 'agent' on every affected transaction (skips any transaction already at 'user').
Mirrors: POST /api/v1/transactions/batch-categorize
Parameters
Array of
{transaction_id, category_slug} pairs. Max 500.Example input
Example output
bulk_recategorize
Moves every transaction matchingfrom_category (plus any other filters) to to_category. Requires to_category and at least one filter as a safety requirement. Sets category_override = 'agent' on affected rows (skips any at 'user'). Typical use: “move everything currently in general_merchandise for March to groceries”.
Mirrors: POST /api/v1/transactions/bulk-recategorize
Parameters
Destination category slug.
Only transactions currently in this category are matched.
Filter transactions whose
name contains this string.The legacy parameter names
target_category_slug (for to_category) and category_slug (for from_category) are still accepted but deprecated. Prefer the new names.Example input
Example output
reset_transaction_category
Removes a manual category override from one transaction and re-resolves its category from the automatic mapping + rule pipeline. Use this to undo acategorize_transaction action.
Mirrors: DELETE /api/v1/transactions/{id}/category
Parameters
Example input
Example output
apply_rules
Applies rules retroactively to existing transactions. Passrule_id to run one rule in isolation, or omit to run the full active-rule pipeline in priority-ASC order. Materializes set_category, add_tag, and remove_tag actions; add_comment is sync-only and does not fire here. Hit counts increment per condition match, matching sync-time semantics.
Use sparingly. This is for initial setup and explicit back-fills — not routine reviews. During normal work, create the rule and let it match future syncs naturally. Running the full pipeline across thousands of historical transactions can take time.
Parameters
UUID or short ID of a specific rule to apply. Omit to apply every active rule.
Examples
- Single rule
- All rules
Apply one specific rule retroactively. Pass its Output:
rule_id.Input: