Proposals (releasing soon)
Collect signer approvals over days for payments, signer changes and threshold changes.
Releasing soon
Proposals are being released and are not yet available.
What a proposal is
A proposal is one transaction on a treasury's Safe that signers approve over time. Approvals do not expire with network fees, so signers can approve hours or days apart.
kind | Does |
|---|---|
payment | Sends a token or the network's native coin. |
owner_add | Adds a signer. |
owner_remove | Removes a signer. |
threshold_change | Changes the signing threshold. |
reject | Cancels another proposal at the same place in the queue. |
POST /v1/treasury/proposalssafeTxHashpasskeytxHashFlow
- Create proposal with the network,
kindandparams. It returns asafeTxHash, which is the proposal's id and what each signer signs. - Each signer signs the
safeTxHashwith their passkey: Sign proposal, or Sign proposals in batch for up to 16 at once. - Once enough signers have signed, the platform sends it and pays the network fee.
A proposal needs the larger of the treasury's signing threshold and the Safe's own threshold, checked again when it is sent.
Verify before signing
A signer sees only the safeTxHash on their device. Your app must recompute
it from the returned transaction fields and refuse to sign if it does not
match.
Timing and order
- A proposal collects signatures for 7 days by default. Set
ttlSeconds(at least 3,600) for a shorter window. - Proposals on the same network execute in order.
queuePositionshows how many must execute first, andstatusReasonsays what a proposal is waiting for.
Rejecting a proposal
Reject proposal creates a reject proposal at the same place in the queue. Once signers approve it, the original can never execute. A rejection needs as many signatures as any other proposal.
Tracking
List proposals and Get proposal show who has signed, the queue position and the transaction hash once sent. Finished proposals are kept for 30 days.
Errors
| Code | Status | Cause |
|---|---|---|
not_found | 404 | The proposal belongs to another business, project or customer treasury. |
validation_failed | 409 | The signer is not a current owner of the Safe on that network, or already signed. |
validation_failed | 400 | ttlSeconds is below 3,600 or above the platform window. |