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

# 提款

> 通过 LI.FI API 从 Composer 支持的协议头寸中提款，支持同链和跨链模式。

提款遵循与存入相同的集成模式。使用 `GET /quote` 或 `POST /advanced/routes`，将用户的头寸代币作为 `fromToken`，将期望的输出代币作为 `toToken`。

<Note>
  提款适用于支持 **Withdraw** 操作的协议。
  请查看[支持的协议](/composer/protocols-and-chains)
  参考文档以了解各协议的能力。
</Note>

***

## 提款的工作原理

| 参数 | 在提款中的作用 |
| - | - |
| `fromToken` | 用户持有的协议头寸代币（vault 代币、aToken、LST 等） |
| `toToken` | 用户希望收到的代币 |
| `fromChain` / `toChain` | 本地提款时为同一条链；跨链提款时为不同的链 |

如果协议和市场支持通过 Composer 提款，LI.FI 将返回一个支持 Composer 的路由。

***

## 同链提款

在同一条链上从协议头寸提款到底层代币。

<CodeGroup>
  ```bash curl theme={"system"}
  curl -X GET 'https://li.quest/v1/quote?\
  fromChain=CHAIN_ID&\
  toChain=CHAIN_ID&\
  fromToken=PROTOCOL_POSITION_TOKEN_ADDRESS&\
  toToken=DESIRED_OUTPUT_TOKEN_ADDRESS&\
  fromAddress=0xYOUR_WALLET_ADDRESS&\
  toAddress=0xYOUR_WALLET_ADDRESS&\
  fromAmount=POSITION_AMOUNT_IN_SMALLEST_UNIT'
  ```

  ```ts TypeScript theme={"system"}
  const quote = await axios.get("https://li.quest/v1/quote", {
    params: {
      fromChain: CHAIN_ID,
      toChain: CHAIN_ID,
      fromToken: "PROTOCOL_POSITION_TOKEN_ADDRESS",
      toToken: "DESIRED_OUTPUT_TOKEN_ADDRESS",
      fromAddress: "0xYOUR_WALLET_ADDRESS",
      toAddress: "0xYOUR_WALLET_ADDRESS",
      fromAmount: "POSITION_AMOUNT_IN_SMALLEST_UNIT",
    },
  });
  ```
</CodeGroup>

***

## 跨链提款

在一条链上提款，并在单个 flow 中于另一条链上收到输出代币。

<CodeGroup>
  ```bash curl curl -X GET 'https://li.quest/v1/quote?\ theme={"system"}
  fromChain=SOURCE_CHAIN_ID&\ toChain=DESTINATION_CHAIN_ID&\
  fromToken=PROTOCOL_POSITION_TOKEN_ADDRESS&\
  toToken=DESTINATION_OUTPUT_TOKEN_ADDRESS&\ fromAddress=0xYOUR_WALLET_ADDRESS&\
  toAddress=0xYOUR_WALLET_ADDRESS&\ fromAmount=POSITION_AMOUNT_IN_SMALLEST_UNIT'
  ```
</CodeGroup>

<Note>
  跨链提款需要在源链交易确认后通过 `GET /status` 进行状态轮询。请参阅[跨链 Composer
  模式](/composer/lifi-api/guides/cross-chain-compose)。
</Note>

***

## 执行 flow

执行步骤与 Composer 存入完全相同。

1. 通过 `/quote` 或 `/advanced/routes` 请求报价
2. 如果存在 `approvalAddress` 且 `fromToken` 为 ERC-20，则设置代币授权额度
3. 提交 `transactionRequest`
4. 对跨链转账轮询 `/status`

<Card title="API Integration" icon="code" href="/composer/lifi-api/guides/api-integration">
  报价、授权额度、执行和状态轮询 flow 的完整演练。
</Card>

***

## 支持 Withdraw 的协议

以下协议支持通过 Composer 提款。仅支持存入的协议（Ethena、Kinetiq、Maple、Royco）必须通过它们自己的界面提款。

| 协议 | 类型 | 通过 Composer 提款 |
| - | - | - |
| Aave V3 | Lending | 是 |
| Avant | Yield | 是 |
| Avon | Lending | 是 |
| Cap | Yield | 是 |
| Euler | Lending | 是 |
| Felix Vanilla | Vaults | 是 |
| Fluid | Lending | 是 |
| HyperLend | Lending | 是 |
| HypurrFi | Lending | 是 |
| Kelp | Liquid Staking | 是 |
| Morpho V1/V2 | Lending / Vaults | 是 |
| Neutrl | Yield | 是 |
| Neverland | Vaults | 是 |
| Spark | Lending | 是 |
| Tokemak | Yield | 是 |

<Card title="Supported Protocols" icon="list" href="/composer/protocols-and-chains">
  完整的协议参考，包括仅支持存入与支持存入 + 提款的对比。
</Card>

***

## 错误处理

提款特有的常见问题：

| 问题 | 解决方法 |
| - | - |
| 未返回路由 | 确认该协议支持通过 Composer 提款，且用户持有该头寸代币 |
| 余额不足 | 验证用户的 `fromToken` 余额与请求的 `fromAmount` 相符 |
| 授权额度错误 | 为头寸代币向报价中返回的 `approvalAddress` 设置授权 |
| 跨链部分失败 | 桥接后的代币已到达目标链，但最终的交换可能需要手动完成 |

有关完整的 status 和 substatus 取值，请参阅[交易状态跟踪](/introduction/user-flows-and-examples/status-tracking)。

***

## 后续步骤

<CardGroup cols={2}>
  <Card title="Cross-Chain Patterns" icon="bridge" href="/composer/lifi-api/guides/cross-chain-compose">
    包含桥接的执行模式与状态处理
  </Card>

  <Card title="Deposit Recipes" icon="book" href="/composer/lifi-api/recipes/vault-deposits">
    针对多种协议的端到端存入 recipe
  </Card>

  <Card title="API Parameters" icon="sliders" href="/composer/lifi-api/reference/api-parameters">
    Composer 路由如何被激活和返回
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.