> For the complete documentation index, see [llms.txt](https://docs.console.zenlayer.com/api-reference/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.console.zenlayer.com/api-reference/zec/unmanaged-egressip/inquirypricechangeunmanagedegressipinternetchargetype.md).

# InquiryPriceChangeUnmanagedEgressIpInternetChargeType

## 1. API Description

This API (InquiryPriceChangeUnmanagedEgressIpInternetChargeType) is used to inquire the price after changing the network billing mode of an unmanaged egress IP. The currently effective price of each billing item before the change is also returned through previousPrices, so that you can compare which billing items have price changes.

{% hint style="info" %}
**Notes**

* When changing to bandwidth billing (`ByBandwidth`), `bandwidth` is required.
* When changing to traffic package billing (`ByTrafficPackage`), `flowPackage` is required (in TB, 0 or a multiple of 0.1).
* When changing to shared bandwidth package billing (`BandwidthCluster`), `bandwidthPrice` returns null (no charge), but `previousPrices` still returns the price before the change, so that you can see how much this change saves.
* The guaranteed traffic package size is only valid for a monthly billing period.
  {% endhint %}

## 2. Input Parameters

The following request parameter list only provides API request parameters.

| Parameter Name      | Required | Type                                                                         | Description                                                                                                                                                                                     |
| ------------------- | -------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| unmanagedEgressIpId | Yes      | String                                                                       | <p>Unmanaged egress IP to be operated on.</p><p>It can be obtained by calling <a href="/api-reference/zec/unmanaged-egressip/describeunmanagedegressips.md">DescribeUnmanagedEgressIps</a>.</p> |
| internetChargeType  | Yes      | [InternetChargeType](/api-reference/zec/datastructure.md#internetchargetype) | Target billing mode to change to.                                                                                                                                                               |
| bandwidth           | No       | Integer                                                                      | <p>Bandwidth limit.</p><p>Unit: Mbps.</p><p>Required when changing to bandwidth billing (<code>ByBandwidth</code>).</p><p>Value range: \[1, +)</p>                                              |
| flowPackage         | No       | Float                                                                        | <p>Traffic package size.</p><p>Unit: TB, a multiple of 0.1 or 0.</p><p>Required when changing to traffic package billing (<code>ByTrafficPackage</code>).</p><p>Value range: \[0.0, +)</p>      |

## 3. Output Parameters

| Parameter Name | Type                                                                                                   | Description                                                                                                                                                                                                                       |
| -------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| requestId      | String                                                                                                 | <p>The unique request ID, which is returned for each request.</p><p>RequestId is required for locating a problem.</p>                                                                                                             |
| bandwidthPrice | [PriceItem](/api-reference/zec/datastructure.md#priceitem)                                             | <p>Bandwidth price for the unmanaged egress IP.</p><p>Null (free of charge) when changed to shared bandwidth package billing (<code>BandwidthCluster</code>).</p>                                                                 |
| previousPrices | [UnmanagedEgressIpPreviousPrices](/api-reference/zec/datastructure.md#unmanagedegressippreviousprices) | <p>Currently effective price of each billing item before the change. The fields correspond one by one to those above and are used to compare which billing items have price changes.</p><p>It is null when there is no order.</p> |

## 4. Code Example

{% tabs %}
{% tab title="Example" %}
**Query the price after changing an unmanaged egress IP to bandwidth-based billing (with a bandwidth of 20 Mbps).**

```json
POST /api/v2/zec HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: InquiryPriceChangeUnmanagedEgressIpInternetChargeType
<Common Request Params>

Request：
{
  "unmanagedEgressIpId": "uneip-xxx",
  "internetChargeType": "ByBandwidth",
  "bandwidth": 20
}

Response：
{
  "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3",
  "response": {
    "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3",
    "bandwidthPrice": {
      "discount": 100.0,
      "discountPrice": null,
      "originalPrice": null,
      "unitPrice": 0.02,
      "discountUnitPrice": 0.02,
      "chargeUnit": "HOUR",
      "stepPrices": null
    },
    "previousPrices": {
      "bandwidthPrice": {
        "discount": 100.0,
        "discountPrice": null,
        "originalPrice": null,
        "unitPrice": 0.015,
        "discountUnitPrice": 0.015,
        "chargeUnit": "HOUR",
        "stepPrices": null
      }
    }
  }
}
```

**Query the price after changing to bandwidth cluster billing (`BandwidthCluster`). No bandwidth fee is charged after the change, so `bandwidthPrice` is null, but `previousPrices` still provides the price before the change.**

```json
Request：
{
  "unmanagedEgressIpId": "uneip-xxx",
  "internetChargeType": "BandwidthCluster"
}

Response：
{
  "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D4",
  "response": {
    "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D4",
    "bandwidthPrice": null,
    "previousPrices": {
      "bandwidthPrice": {
        "discount": 100.0,
        "discountPrice": null,
        "originalPrice": null,
        "unitPrice": 0.015,
        "discountUnitPrice": 0.015,
        "chargeUnit": "HOUR",
        "stepPrices": null
      }
    }
  }
}
```

In the example above, no bandwidth fee is charged after the change. Compared with 0.015/hour before the change, this is the cost saved by this change.
{% endtab %}
{% endtabs %}

## 5. Developer Resources

Zenlayer Cloud API 2.0 integrates [SDKs](/api-reference/api-introduction/toolkit/api-sdk.md)，to make it easier for you to call APIs. More programming languages will be supported.

## 6. Error Codes

The following only lists the error codes related to the API business logic. For other error codes, see [Common Error Codes](/api-reference/api-introduction/instruction/commonerrorcode.md).

| HTTP Status Code | Error Code                                                                    | Description                                                                                                    |
| ---------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| 404              | INVALID\_UNMANAGED\_EGRESS\_IP\_NOT\_FOUND                                    | The unmanaged egress IP does not exist.                                                                        |
| 400              | OPERATION\_DENIED\_UNMANAGED\_EGRESS\_IP\_UNSUPPORTED\_INTERNET\_CHARGE\_TYPE | The unmanaged egress IP does not support this internet charge type change.                                     |
| 400              | OPERATION\_DENIED\_FLOW\_PACKAGE\_NOT\_SUPPORTED\_HOUR\_PERIOD                | The current product cycle is based on hourly billing and does not support setting a minimum data package size. |
