POST/api/v1/sign-psbt

Sign a transaction proposal

Records the caller's approval on a transaction proposal, and finalises and submits the transaction automatically once the vault's threshold is met.

AccessRequires a signed-in caller

An approval is a signature. You sign the proposal's PSBT with your own key, outside the platform, and send the signed result here. Private keys never leave your device, so the platform only ever receives the signature you produced. Approvals accumulate on the proposal until the vault's threshold is met, which is the workflow The signing workflow describes for operators.

Pass the id of the registered key you signed with in key_id, and the whole proposal in signed_psbt_base64 once your signature has been added. The response tells you whether the signature was recorded (accepted) and whether your approval was the one that completed the proposal (finalized). Read the proposal's recipients, threshold, and outstanding approvals with GET /api/v1/psbt before you sign.

warning:
The final approval is the point of no return

Once the required number of approvals is reached, the proposal is finalised and submitted to the Bitcoin network automatically. There is no separate confirmation step and no window in which to hold it back. Once broadcast, the transaction cannot be reversed or cancelled. Check the recipients and the amount before you send the approval that meets the threshold.

Body parameters
workspace_idnumberrequired
The workspace the proposal belongs to. You must be a member of it.
psbt_idstringrequired
The proposal you are approving, as returned by create-psbt or forward-to-vault.
key_idstringrequired
The registered signing key you signed with.
signed_psbt_base64stringrequired
The proposal's PSBT with your signature added, in base64.

#What happens next

While finalized is false the proposal keeps waiting, and the remaining approvers sign the same PSBT through this endpoint. The approval that meets the threshold comes back with finalized set to true, and the transaction is submitted without any further call. GET /api/v1/psbt reports the proposal's status throughout and carries the Bitcoin transaction id once it has been broadcast.