> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trusset.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Redeem

> Redemption calldata

Builds the transaction that redeems vault shares for the settlement asset at the current share price. One signature, no approval step, since the vault burns its own shares.

Redemptions cannot be paused. What bounds them is liquidity: idle funds pay immediately, and beyond that the vault pulls from its market allocations as far as each market's free liquidity allows.

## Path Parameters

<ParamField path="vaultId" type="string" required>Vault ID.</ParamField>

## Body Parameters

<ParamField body="shares" type="string" required>
  Shares to redeem as a decimal string, parsed at the vault's `assetDecimals`.
</ParamField>

## Response Fields

<ResponseField name="data" type="object">
  <Expandable>
    <ResponseField name="action" type="string">`SIGN_TRANSACTION`.</ResponseField>
    <ResponseField name="transaction" type="object">`to` and `data` for the `redeem` call.</ResponseField>
    <ResponseField name="note" type="string">Explains the partial-fill behavior. Show it near your redeem control.</ResponseField>
    <ResponseField name="confirmWith" type="object">Report the hash to `confirm-tx` with `txType: "REDEEM"`.</ResponseField>
  </Expandable>
</ResponseField>

<Warning>
  When market utilization blocks part of the value, the redemption fills partially: the investor is paid what liquidity allows and the unpaid shares stay in the wallet. The amount recorded on confirmation comes from the `Redeemed` event, meaning the assets actually paid, not the shares requested. Compare the two if you need to detect a partial fill.
</Warning>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.trusset.org/lending-external-securities/api/vaults/{vaultId}/redeem" \
    -H "X-API-Key: trusset_your_key_here" \
    -H "Content-Type: application/json" \
    -d '{"shares": "500"}'
  ```

  ```typescript TypeScript theme={null}
  const res = await fetch(
    `https://api.trusset.org/lending-external-securities/api/vaults/${vaultId}/redeem`,
    {
      method: 'POST',
      headers: { 'X-API-Key': 'trusset_your_key_here', 'Content-Type': 'application/json' },
      body: JSON.stringify({ shares: '500' })
    }
  );
  const { data } = await res.json();
  const tx = await signer.sendTransaction({ to: data.transaction.to, data: data.transaction.data });
  await tx.wait();
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "success": true,
    "data": {
      "action": "SIGN_TRANSACTION",
      "transaction": {
        "to": "0x4d0cfe39a3431b145d1a1393d901a36d459a1b13",
        "data": "0xdb006a75..."
      },
      "functionName": "redeem",
      "note": "When market utilization blocks part of the value, the redemption fills partially: unpaid shares stay in the wallet.",
      "confirmWith": { "endpoint": "confirm-tx", "txHash": true, "txType": "REDEEM" }
    }
  }
  ```
</ResponseExample>
