# 订单延长使用API密钥

要使用此功能，您必须拥有API密钥。请阅读[这里](https://docs.tronsave.io/chinese/developer/get-api-key)以了解如何获取我们的API密钥。

## [使用API密钥购买（Postman)](https://www.postman.com/tronsave/tronsave/folder/3gu7nlf/)

## 步骤 1：检查所有可延长的委托

<mark style="color:orange;">`POST`</mark> `https://api.tronsave.io/v0/get-extendable-delegates`

速率限制 (Rate limit): 每1秒1个请求。

通过[API](https://docs.tronsave.io/chinese/developer/get-api-key)密钥检查可延长的委托

速率限制：每2秒1个请求

**请求头**

<table><thead><tr><th width="135">名称 </th><th width="209">类型</th><th> 描述</th></tr></thead><tbody><tr><td>apikey<mark style="color:red;">*</mark></td><td>String</td><td>Tronsave API密钥，适用于内部账户</td></tr></tbody></table>

**请求体**

<table><thead><tr><th width="145">名称</th><th width="170">类型</th><th> 描述</th></tr></thead><tbody><tr><td>extend_to<mark style="color:red;">*</mark></td><td>String</td><td>你想要延长的时间（以毫秒为单位）</td></tr><tr><td>max_price</td><td>Number</td><td>你愿意支付的最大延长费用（数字）</td></tr><tr><td>receiver</td><td>String</td><td>接收资源委托的地址</td></tr></tbody></table>

{% tabs %}
{% tab title="200: OK Success" %}

```java
{
    "extend_order_book": [
        {
            "price": 133,
            "value": 64319
        },
        ...
    ], // 概述每个价格的扩展能源数量
    "total_delegate_amount": 64319,
    // 收件人在Tronsave上的当前总委托
    "total_available_extend_amount": 64319,
    // 收件人在Tronsave上的可用总委托
    "total_estimate_trx": 8554427,
    // 如果使用下面的extend_data创建延长请求，估算的TRX支付
    "your_balance": 20000000,
    // API密钥的内部余额
    "is_able_to_extend": true,
    // 比较余额和total_estimate_trx
    "extend_data": [
        {
            "delegator": "TMN2uTdy6rQYaTm4A5g732kHRf72tKsA4w",
            "is_extend": true,
            "extra_amount": 0,
            "extend_to": 1728459019000
        }
    ]
    // 用于创建下面延长请求的扩展数据
}

```

{% endtab %}

{% tab title="401: Unauthorized Invalid api key" %}

```java
{
    "API_KEY_REQUIRED": "Missing api key in headers",
    "INVALID_API_KEY":"api key not correct"
}
```

{% endtab %}

{% tab title="429: Too many requests Rate limit reached" %}

```java
{
    "RATE_LIMIT": "Rate limit reached",
}
```

{% endtab %}
{% endtabs %}

**示例**

{% tabs %}
{% tab title="请求体  " %}

```java
{
    "extend_to":1728704969000,
    "max_price":165,
    "receiver":"TFwUFWr3QV376677Z8VWXxGUAMF11111111"
}
```

{% endtab %}

{% tab title="请求头" %}

```java
{
  "apikey": <YOUR_API_KEY>
}
```

{% endtab %}

{% tab title="成功响应" %}

```java
{
    "extend_order_book": [
        {
            "price": 108,
            "value": 100000
        },
        {
            "price": 122,
            "value": 200000
        }
    ],
    "total_delegate_amount": 500000,
    "total_available_extend_amount": 300000,
    "total_estimate_trx": 24426224,
    "is_able_to_extend": true,
    "your_balance": 37780396,
    "extend_data": [
        {
            "delegator": "TQBV7xU489Rq8ZCsYi72zBhJM2222222",
            "is_extend": true,
            "extra_amount": 0,
            "extend_to": 1728704969000
        },
        {
            "delegator": "TMN2uTdy6rQYaTm4A5g732kHR333333333",
            "is_extend": true,
            "extra_amount": 0,
            "extend_to": 1728704969000
        }
    ]
}
```

{% endtab %}
{% endtabs %}

**示例代码**

{% tabs %}
{% tab title="Javascript" %}

```java
const GetEstimateExtendData = async () => {
    const url = `https://api.tronsave.io/v0/get-extendable-delegates`
    const body = {
    "extend_to": extend_to, // 你想要延长的时间（以毫秒为单位）
    "receiver": RECEIVER,   // 接收资源委托的地址
    "max_price": max_price   // 可选。你愿意支付的最大延长费用（数字）
}
    const data = await fetch(url, {
            method: "POST",
            headers: {
                'apikey': API_KEY,
                "content-type": "application/json",
            },
            body: JSON.stringify(body)
        })
    const response = await data.json()
        /**
         * 示例响应:
         {
            "extend_order_book": [
                {
                    "price": 133,
                    "value": 64319
                }
            ],
            "total_delegate_amount": 64319,
            "total_available_extend_amount": 64319,
            "total_estimate_trx": 8554427,
            "is_able_to_extend": true,
            "your_balance": 20000000,
            "extend_data": [
                {
                    "delegator": "TMN2uTdy6rQYaTm4A5g732kHRf72tKsA4w",
                    "is_extend": true,
                    "extra_amount": 0,
                    "extend_to": 1728459019000
                }
            ]
        }
         */
        return response
}
```

{% endtab %}

{% tab title="cURL" %}

{% endtab %}
{% endtabs %}

## 步骤 2：通过API密钥创建延长请求

<mark style="color:orange;">`POST`</mark> `https://api.tronsave.io/v0/internal-extend-request`

速率限制 (Rate limit): 每1秒15个请求。

通过[API密钥](https://docs.tronsave.io/chinese/developer/rest-api-v0/broken-reference)创建新的延长请求订单

速率限制：每2秒1个请求

**请求头**

<table><thead><tr><th width="171">名称 </th><th width="168">类型</th><th>描述</th></tr></thead><tbody><tr><td>apikey<mark style="color:red;">*</mark></td><td>String</td><td>Tronsave API密钥，适用于内部账</td></tr></tbody></table>

**请求体**

<table><thead><tr><th width="162">名称 </th><th width="138">类型</th><th>描述</th></tr></thead><tbody><tr><td>receiver<mark style="color:red;">*</mark></td><td>String</td><td>接收资源的地址</td></tr><tr><td>extend_data<mark style="color:red;">*</mark></td><td>Array</td><td>扩展数据数组。在API估算可延长委托的响应中获取。</td></tr></tbody></table>

{% tabs %}
{% tab title="200: OK Success" %}
如果成功，返回订单 ID 数组。

```
[<order_id_1>,<order_id_2>,...]
```

{% endtab %}

{% tab title="401: Unauthorized Invalid api key" %}

```java
{
    "API_KEY_REQUIRED": "Missing api key in headers",
    "INVALID_API_KEY":"api key not correct"
}
```

{% endtab %}

{% tab title="429: Too many requests Rate limit reached" %}

```java
{
    "RATE_LIMIT": "Rate limit reached",
}
```

{% endtab %}
{% endtabs %}

**示例**

{% tabs %}
{% tab title="请求体  " %}

```java
{
    "extend_data": [
        {
            "delegator": {{some_delegator_address}}, // 委托者地址
            "is_extend": true,
            "extra_amount": 0,
            "extend_to": {{extend_timestamp_in_millisecs}} // 延长到的时间（以毫秒为单位）
        },
        ...
    ],
    "receiver": {{receiver_address}} // 接收者地址
}

```

{% endtab %}

{% tab title="请求头" %}

```java
{
  "apikey": <YOUR_API_KEY>
}
```

{% endtab %}

{% tab title="成功响应" %}

```java
["651d2306e55c073f6ca0992e","651d2306e55c073f6ca09923",...]
```

{% endtab %}
{% endtabs %}

**示例代码**

{% tabs %}
{% tab title="Javascript" %}

```java
const SendInternalExtendRequest = async () => {
    const url = `https://api.tronsave.io/v0/internal-extend-request`
    const body = {
            "extend_data": [    
                {
                    "delegator": {{some_delegator_address}},
                    "is_extend": true,
                    "extra_amount": 0,
                    "extend_to": {{extend_timestamp_in_millisecs}}
                }
            ],
            "receiver": RECEIVER,
        }
    const data = await fetch(url, {
            method: "POST",
            headers: {
                'apikey': API_KEY,
                "content-type": "application/json",
            },
            body: JSON.stringify(body)
        })
    const response = await data.json()
        /**
         * Example response 
         * @link  //TODO
           [<order_id>]
         */
        return response
    }
    return []
}
```

{% endtab %}

{% tab title="cURL" %}

```java
curl --location 'https://api.tronsave.io/v0/internal-extend-request' \
--header 'apikey: {{apikey}}' \
--data '
{
    "extend_data": [
        {
            "delegator": {{some_delegator_address}}, // 委托者地址
            "is_extend": true,
            "extra_amount": 0,
            "extend_to": {{extend_timestamp_in_millisecs}} // 延长到的时间（以毫秒为单位）
        },
        ...
    ],
    "receiver": {{receiver_address}} // 接收者地址
}
'
```

{% endtab %}
{% endtabs %}

## 测试用API列表 - Nile 测试网 <a href="#api-list-for-testing-tron-nile-testnet" id="api-list-for-testing-tron-nile-testnet"></a>

{% tabs %}
{% tab title="测试\_API" %}

* 检查所有可延长的委托:

  <mark style="color:orange;">`POST`</mark> `https://api-dev.tronsave.io/v0/get-extendable-delegates`
* 通过API密钥创建延长请求:

  <mark style="color:orange;">`POST`</mark> `https://api-dev.tronsave.io/v0/internal-extend-request`
  {% endtab %}
  {% endtabs %}
