Skip to main content
POST /api/hermesco/treasury/decide
The human-in-the-loop decision. Approves or denies a pending spend proposal. An approved spend then executes, re-checking the hard caps and the minimum reserve before any money moves.

Request body

proposalId
string
required
The proposal to decide.
decision
string
required
Either approve or deny.
workspaceId
string
default:"demo"
The workspace the proposal belongs to.
operator
string
The name of the human making the decision. Stamped on the proposal record.

Response

proposal
Proposal
The updated proposal, including its new status (approved, denied, executed, or failed), the deciding operator, and timestamps.
state
TreasuryState
The live Treasury state after the decision.
curl -s https://hermesco.ai/api/hermesco/treasury/decide \
  -H "content-type: application/json" \
  -d '{"workspaceId":"g_demo","proposalId":"PROPOSAL_ID","decision":"approve","operator":"Joseph"}' | jq

Errors

StatusCondition
400proposalId missing, decision not approve/deny, or invalid JSON.
500The proposal cannot be found or execution failed (returned in error).
Approving a spend never bypasses the caps. If an approved spend would exceed the per-action cap, the daily cap, or draw the balance below the minimum reserve, it fails at execution and is recorded as failed.