Extend a hold
Moves an active hold’s expiry and, with amount, changes its total. The new lifetime is counted in whole days, from P1D to P30D from now: expires_in is an ISO 8601 duration like P1D or P3D, and a duration in hours or minutes (such as PT2H) is refused with 400 parameter_invalid. A hold’s first lifetime is set when it is placed, with hold_expires_in on check() (default 15 minutes, up to 30 days), so extending a hold always moves it at least a day out. A larger total must fit the available balance, or the request fails with insufficient_balance and the hold keeps its current amount. Use it for long-running agents that outlive the first expiry.
Authentication
A secret key (rl_sk_test_..., rl_sk_live_...) or a restricted key with limited scopes (rl_rk_test_..., rl_rk_live_...). A restricted key can carry agent: true and an expires_at, and is what a coding agent should hold. Keys end in a checksum so secret scanners can recognize them. People create, roll and revoke keys in the dashboard; GET /v1/api_keys lists them, masked.
Path parameters
The hold ID (hold_...).
Request
New lifetime from now, in whole days only: an ISO 8601 duration from P1D to P30D, such as P3D. Hours and minutes (PT2H, PT30M) are refused with 400 parameter_invalid, even though a hold’s default lifetime is 15 minutes.
Response
active reserves. captured was used by track(), and for an outcome the reservation moves to the outcome charge. released was let go by you or by track(). expired lapsed and was released automatically.
How much track() has captured so far.