available drops at once and posted does not move. Holds need the holds:write scope.
Ending a hold
Capture posts some or all of it.credits says where the value goes, and the debit leg on the held account is added for you. Leave amount out to capture everything still held.
ACTIVE with captured: "40000", and the rest stays reserved. When all of it is captured, the status becomes CAPTURED.
Release gives back what is still held, and the status becomes RELEASED.
Expiry happens by itself once expiresAt passes: the status becomes EXPIRED and the money is back. A hold without expiresAt stays until you end it.
A hold behind a pending entry
For a payout whose final legs you already know, protect a pending entry with the hold, by givingholdId. The hold’s reservation covers the debit, so it is not counted twice.
Capturing or releasing such a hold directly gets
HOLD_IN_USE, with the entry in details.entry_id. holdId needs "pending": true.