Skip to main content
Treasury payout proposals are exposed through the proposal router and vault proposal routes in the backend.

List Proposals

GET /api?status=pending
Returns proposal records, optionally filtered by status.

List Vault Proposals

GET /api/vaults/:vaultId/proposals
Returns proposals for a specific vault.

Get Proposal

GET /api/proposals/:id
Returns a single proposal.

Create Off-Chain Proposal Record

POST /api/vaults/:vaultId/proposals
x-user-address: bchtest:q...
Creates the proposal record before the on-chain proposal state is funded.

Create On-Chain Proposal State

POST /api/proposals/:id/create-onchain
POST /api/proposals/:id/confirm-create
These routes build and confirm the proposal covenant funding flow.

Approvals

POST /api/proposals/:id/approve-onchain
POST /api/proposals/:id/confirm-approval
These routes collect proposal approval state on-chain.

Execute Treasury Payout

POST /api/proposals/:id/execute
POST /api/proposals/:id/execute-signature
Execution uses a session-based signature collection flow. Once the required signatures are collected, the backend broadcasts the payout transaction and marks the proposal executed.

Low-Level Broadcast

POST /api/broadcast
Used by the proposal execution flow when raw transaction broadcast control is needed.

Scope

These routes document the current treasury proposal implementation that the app uses today.