API v1
Proposals
Approval-gated agent write operations.
Proposals are drafts. Humans approve or reject them in Ledger → Approvals. Approved proposals mutate the ledger. Propose and review events are audit-logged in Log (/log) — there is no agent API to read Log in v1.
/api/v1/proposalsreadlist_pending_proposals
Pending agent proposals awaiting human approval.
Response
{
"data": [ { "id": "…", "type": "categorization", "status": "pending", … } ],
"meta": { "count": 2 }
}/api/v1/proposals/{id}readget_proposal
Single proposal by ID.
Parameters
| Name | Type | Description |
|---|---|---|
| id* | uuid | Proposal ID |
Response
{ "data": { "id": "…", "type": "categorization", "status": "pending", … } }/api/v1/proposals/categorizationpropose-writepropose_categorization
Suggest a category for a transaction. Prefer categoryCode. Creates a pending proposal — the ledger is not updated until a human approves in Ledger → Approvals.
Request body
{
"transactionId": "uuid",
"categoryCode": "5300",
"confidence": 0.91,
"reason": "Description matches counterparty AWS",
"evidence": [
{ "type": "counterparty_match", "value": "aws" }
]
}Response
{ "data": { "id": "…", "status": "pending", "type": "categorization", … } }/api/v1/proposals/journal-entrypropose-writepropose_journal_entry
Propose a new manual ledger entry. Creates a pending proposal — a transaction is created only after human approval.
Request body
{
"date": "2026-08-28",
"description": "Office supplies",
"amount": -42.50,
"currency": "EUR",
"categoryCode": "5200",
"source": "manual_csv",
"confidence": 0.88,
"reason": "One-off office purchase"
}Response
{ "data": { "id": "…", "status": "pending", "type": "journal_entry", … } }/api/v1/proposals/receipt-linkpropose-writepropose_receipt_link
Suggest linking a receipt to a transaction. Approval required.
Request body
{
"transactionId": "uuid",
"receiptId": "uuid",
"confidence": 0.85,
"reason": "Amount and date match"
}Response
{ "data": { "id": "…", "status": "pending", "type": "receipt_link", … } }| type | On approval |
|---|---|
| categorization | Sets canonical category + agent metadata; status → matched |
| journal_entry | Creates new transaction (status matched) |
| receipt_link | Links receipt to transaction |
| note | Creates note on transaction |