> ## 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 Intents 订单服务器为跨链和同链意图获取解算器定价。

订单服务器缓存来自其解算器网络的报价。在构造订单之前，调用 `POST /quote/request` 来获取意图的定价。

使用订单服务器获取报价是可选的，但推荐使用。它将意图与解算器的常驻报价进行匹配，并提供更强的执行保证。

<Note>
  为了更简单地处理集成方参数，还提供了一个 V1 报价端点，地址为 `POST /api/v1/integrator/quote/request`。它接受 CAIP-2 链加上**原生**地址（例如 `{ "chain": "tron:728126428", "address": "T…" }`），这使其成为 **Tron** 的推荐路径——参见 [Tron vs EVM](/lifi-intents/knowledge-database/tron-deltas)。
</Note>

***

## 请求格式

<CodeGroup>
  ```bash curl theme={"system"}
  curl -X POST 'https://order.li.fi/quote/request' \
    -H 'Content-Type: application/json' \
    -d '{
      "user": "0x0001000002210514d8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
      "intent": {
        "intentType": "oif-swap",
        "inputs": [{
          "user": "0x0001000002210514d8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
          "asset": "0x0001000002210514833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "10000000"
        }],
        "outputs": [{
          "receiver": "0x0001000002A4B114d8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
          "asset": "0x0001000002A4B114af88d065e77c8cC2239327C5EDb3A432268e5831",
          "amount": null
        }],
        "swapType": "exact-input"
      },
      "supportedTypes": ["oif-escrow-v0"]
    }'
  ```

  ```ts TypeScript theme={"system"}
  const response = await fetch('https://order.li.fi/quote/request', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      user: '0x0001000002210514d8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
      intent: {
        intentType: 'oif-swap',
        inputs: [{
          user: '0x0001000002210514d8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
          asset: '0x0001000002210514833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',  // USDC on Base
          amount: '10000000',  // 10 USDC (6 decimals)
        }],
        outputs: [{
          receiver: '0x0001000002A4B114d8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
          asset: '0x0001000002A4B114af88d065e77c8cC2239327C5EDb3A432268e5831',  // USDC on Arbitrum
          amount: null,
        }],
        swapType: 'exact-input',
      },
      supportedTypes: ['oif-escrow-v0'],
    }),
  });

  const { quotes } = await response.json();
  ```
</CodeGroup>

### 请求字段

| 字段                             | 类型     | 描述                                                                                                                                                                                                           |
| ------------------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `user`                         | string | 用户的可互操作地址（失败时的退款接收方）                                                                                                                                                                                         |
| `intent.intentType`            | string | 始终为 `"oif-swap"`                                                                                                                                                                                             |
| `intent.inputs[]`              | array  | 输入资产，包含 `user`、`asset`（可互操作地址）和 `amount`                                                                                                                                                                     |
| `intent.outputs[]`             | array  | 期望的输出，包含 `receiver`、`asset` 和 `amount`（exact-input 时为 `null`）                                                                                                                                                |
| `intent.swapType`              | string | `"exact-input"` 固定输入数额并让解算器确定输出（将 `outputs[].amount` 设为 `null`）。这是最常用的模式。`"exact-output"` 固定输出数额并让解算器确定所需的输入（将 `inputs[].amount` 设为 `null`）。当目标数额很重要时使用它，例如偿还贷款或满足合约要求。                                      |
| `supportedTypes`               | array  | 用户支持的资源锁类型。对于标准托管集成使用 `"oif-escrow-v0"`；仅当您的流程支持 Compact/资源锁领取时才包含 `"oif-resource-lock-v0"`。在 **Tron** 上，仅使用 `"oif-escrow-v0"`——Compact/资源锁不可用（[Tron vs EVM](/lifi-intents/knowledge-database/tron-deltas)）。 |
| `intent.metadata.exclusiveFor` | array  | 可选。将报价限制为特定的解算器地址。对合规或合作伙伴关系很有用，但过度限制会降低填充可靠性。                                                                                                                                                               |

***

## 响应格式

```ts theme={"system"}
interface QuoteResponse {
  quotes: {
    order: null;
    validUntil: number;
    quoteId: string;         // e.g. "quote_yCyE5aWW4NILo2UdM-8ETpia05TCLv"
    preview: {
      inputs: { user: string; asset: string; amount: string }[];
      outputs: { receiver: string; asset: string; amount: string }[];
    };
    metadata: {
      exclusiveFor: string | null;
    };
    partialFill: boolean;
    failureHandling: string; // e.g. "refund-automatic"
  }[];
}
```

最佳报价始终位于索引 0 处。保存 `quoteId` 以便在[提交订单](/lifi-intents/intents-api/create-and-submit)时使用。

### 响应字段

| 字段                                   | 描述                               |
| ------------------------------------ | -------------------------------- |
| `validUntil`                         | 报价过期之后的 Unix 时间戳。如果过期则重新获取。      |
| `quoteId`                            | 提交订单时包含的引用 ID，用于优先的解算器匹配。        |
| `preview.inputs` / `preview.outputs` | 此报价的预期输入和输出数额。                   |
| `metadata.exclusiveFor`              | 为此报价选择的解算器地址，或 `null`。           |
| `partialFill`                        | 解算器是否支持此报价的部分填充。                 |
| `failureHandling`                    | 如何处理失败（例如 `"refund-automatic"`）。 |

### 独占解算器匹配

响应中的 `metadata.exclusiveFor` 字段标识了为此报价选择的解算器。如果您想在构造订单时强制执行独占性，请将解算器地址和过期时间编码到输出的 `context` 字段中：

```ts theme={"system"}
const exclusiveFor = bestQuote.metadata.exclusiveFor;
if (exclusiveFor) {
  const currentTime = Math.floor(Date.now() / 1000);
  const exclusiveExpiry = (currentTime + 60).toString(16);
  const paddedExclusiveFor = exclusiveFor.replace('0x', '').padStart(64, '0');
  mandateOutput.context = `0xe0${paddedExclusiveFor}${exclusiveExpiry}`;
}
```

仅当您完全掌控解算器策略和回退行为时才应用独占性。

***

## 后续步骤

<CardGroup cols={2}>
  <Card title="创建并提交订单" icon="paper-plane" href="/lifi-intents/intents-api/create-and-submit">
    构造一个 StandardOrder 并将其提交到解算器网络
  </Card>

  <Card title="跟踪订单状态" icon="signal" href="/lifi-intents/intents-api/track-status">
    通过 API 或链上事件监控订单进度
  </Card>
</CardGroup>
