> For the complete documentation index, see [llms.txt](https://tri.gitbook.io/tri-doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tri.gitbook.io/tri-doc/liquidity-pool/release-reservation.md).

# Release Reservation

### Liquidity Pool

<mark style="color:red;">`DELETE`</mark> <https://sandbox.triangle.digital/api/v2/liquidity\\_pool/clients/{client\\_id}/reservations/{reservation\\_group}>

Frees a QTY hold before it runs out, so the held quantity becomes available to buy again straight away. One endpoint for both kinds of hold — the one taken by [Reserve Pool Price QTY](/tri-doc/liquidity-pool/reserve-pool-price-qty.md) and the one taken by [Reserve Invoices QTY](/tri-doc/liquidity-pool/reserve-invoices-qty.md).

Call it when the client cancels or closes the purchase flow. A hold spent by a purchase is released by that purchase, and an unused hold disappears by itself when its 10 minutes are over — so this call is only for the paths that never reach a purchase.

Idempotent: a group that was already released, has expired, or belongs to another client frees nothing and still answers 200 with the same body.

**Path parameters**

<table data-full-width="true" data-search="false"><thead><tr><th width="230">Name</th><th width="110">Type</th><th>Description</th><th width="210">Where to take it from</th></tr></thead><tbody><tr><td><code>client_id</code></td><td>integer</td><td><strong>Required.</strong> The client the hold was taken for.</td><td><a href="/tri-doc/liquidity-pool/get-clients.md">Get Clients</a> — <code>client_id</code></td></tr><tr><td><code>reservation_group</code></td><td>uuid</td><td><strong>Required.</strong> The hold to free.</td><td><a href="/tri-doc/liquidity-pool/reserve-pool-price-qty.md">Reserve Pool Price QTY</a> or <a href="/tri-doc/liquidity-pool/reserve-invoices-qty.md">Reserve Invoices QTY</a> — <code>reservation_group</code></td></tr></tbody></table>

**Headers**

<table data-full-width="true"><thead><tr><th>Name</th><th>Value</th></tr></thead><tbody><tr><td>Content-Type</td><td><code>application/json</code></td></tr></tbody></table>

**Query parameters**

<table data-full-width="true" data-search="false"><thead><tr><th width="220">Name</th><th width="110">Type</th><th>Description</th><th width="260">Example</th></tr></thead><tbody><tr><td><code>hash</code></td><td>string</td><td><strong>Required.</strong> API key.</td><td>fk5f0iuy-rr06-j4x3-i75b-fy2s67s4ilo1</td></tr></tbody></table>

**Response fields**

<table data-full-width="true" data-search="false"><thead><tr><th width="360">Field</th><th width="110">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>message</code></td><td>string</td><td>Human-readable result of the call.</td></tr><tr><td><code>success</code></td><td>boolean</td><td>Whether the call succeeded; a refused call answers HTTP 400.</td></tr><tr><td><code>data.reservation_group</code></td><td>uuid</td><td>The group from the path, echoed back.</td></tr><tr><td><code>operations_count</code></td><td>integer</td><td>Always <code>1</code>.</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="200" %}
The hold no longer holds anything. The same answer comes back for a group that was already released or has expired.

{% code fullWidth="false" %}

```json
{
    "message": "Reservation released.",
    "success": true,
    "data": {
        "reservation_group": "6f7d2a41-8c3e-4b90-9a55-2f0c1de7b834"
    },
    "operations_count": 1
}
```

{% endcode %}
{% endtab %}

{% tab title="400" %}
Nothing was freed. `Invalid request parameters.` — the client is unknown or not available to this API key; `'reservation_group' is required.` — the group is empty.

```json
{
    "message": "Invalid request parameters.",
    "success": false,
    "data": {},
    "operations_count": 1
}
```

{% endtab %}
{% endtabs %}
