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

# HD color migration API

> HD Color Migration API applies high-definition color transfer while preserving natural portrait colors and key image details.

<Danger>
  \[Important: API Service Retirement Notice]

  Dear Developers,

  Thank you for your continued trust and support of the AILabTools API.

  To better focus on delivering more efficient, stable, and future-ready solutions, we are announcing the retirement of this API.

  Due to its outdated architecture and limitations in performance and scalability, this API will be permanently discontinued and will no longer be available starting from the date of this announcement. Any applications or integrations that still rely on this API may experience service interruptions if no action is taken.

  We strongly recommend that you evaluate alternative solutions and plan your migration as soon as possible to ensure a smooth transition and uninterrupted service for your users.

  If you have any questions or need assistance during this transition, our support team is ready to help:
  📧 [support@ailabtools.com](mailto:support@ailabtools.com)

  We sincerely appreciate your understanding and cooperation. Thank you for being part of AILabTools. We remain committed to providing you with more powerful and reliable services.

  Best regards,

  AILabTools Support Team
</Danger>

## Request

* **URL**: `https://www.ailabapi.com/api/image/effects/image-hd-color-migration`
* **Method**: `POST`
* **Content-Type**: `multipart/form-data`

### Image requirements

* **Image format**: `PNG` `JPG` `JPEG`
* **Image size**: No more than 3 MB.
* **Image resolution**: Larger than 64x64px, smaller than 10000x10000px.
* The image must be RGB 3-channel.

### Headers

| Field              | Required | Type     | Description                                           |
| :----------------- | :------- | :------- | :---------------------------------------------------- |
| `ailabapi-api-key` | YES      | `string` | Application API KEY. [Get API KEY](/docs/get-api-key) |

### Body

#### Fixed Fields

| Field       | Required | Type     | Scope                         | Default | Example | Description                                                                                                                      |
| :---------- | :------- | :------- | :---------------------------- | :------ | :------ | :------------------------------------------------------------------------------------------------------------------------------- |
| `task_type` | YES      | `string` | `async`                       | `async` |         | \`\`async`: Asynchronous tasks.`                                                                                                 |
| `image`     | YES      | `file`   |                               |         |         |                                                                                                                                  |
| `mode`      | YES      | `string` | `AUTO`, `TEMPLATE`, `REF_PIC` |         |         | ``AUTO`: Automatic color extension.`, ``TEMPLATE`: Color palette extension.`, \`\`REF\_PIC`: Reference picture extension color.` |
| `degree`    | YES      | `string` | \[0, 1]                       |         | `0.4`   | Top color degree.                                                                                                                |

#### `mode` === `AUTO`

| Field         | Required | Type      | Scope                                  | Default | Description                          |
| :------------ | :------- | :-------- | :------------------------------------- | :------ | :----------------------------------- |
| `color_count` | NO       | `integer` | `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8` | `1`     | Expand the number of color families. |

#### `mode` === `TEMPLATE`

| Field            | Required | Type     | Example         | Description                                                                                                  |
| :--------------- | :------- | :------- | :-------------- | :----------------------------------------------------------------------------------------------------------- |
| `color_template` | YES      | `string` | `056A6B,0A0B0C` | Color palette topology, Top master color list, color value definition ARGB. e.g. 0A0B0C, array size \[1, 7]. |

#### `mode` === `REF_PIC`

| Field | Required | Type   | Description      |
| :---- | :------- | :----- | :--------------- |
| `ref` | YES      | `file` | Reference image. |

## Response

<Warning>
  **Response Field Handling Flow**

  1. **Handle `Public Response Fields`**

     Parse and validate the `Public Response Fields`, checking the status code or response message to ensure the request is successful and error-free.

  2. **Handle `Business Response Fields`**

     If the `Public Response Fields` are valid and error-free, proceed with processing the business logic in the `Business Response Fields`.
</Warning>

### Public Response Fields

<a href="/docs/response-description" target="_blank">Viewing Public Response Fields and Error Codes</a>

### Business Response Fields

| Field       | Type     | Scope   | Description                                                                                                                                 |
| :---------- | :------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------ |
| `task_type` | `string` | `async` | Task Type. \`\`async`: Asynchronous tasks.`                                                                                                 |
| `task_id`   | `string` |         | Asynchronous task ID. <br />**Please use this field when calling the [Querying Async Task Results](ai-common/async-task-results/api) API.** |

### Response Example

```json theme={null}
{
  "request_id":     "",
  "log_id":         "",
  "error_code":     0,
  "error_msg":      "",
  "error_detail":   {
    "status_code":  200,
    "code":         "",
    "code_message": "",
    "message":      ""
  },
  "task_type":      "",
  "task_id":        ""
}
```

<Tip>
  This API is asynchronous, please keep `task_id` and call [`Querying Async Task Results`](ai-common/async-task-results/api) to get the final results.

  Asynchronous task results are valid for 24 hours. It is recommended that asynchronous task results be queried every 5 seconds.
</Tip>

## `Querying Async Task Results` Response

<Warning>
  **Response Field Handling Flow**

  1. **Handle `Public Response Fields`**

     Parse and validate the `Public Response Fields`, checking the status code or response message to ensure the request is successful and error-free.

  2. **Handle `Business Response Fields`**

     If the `Public Response Fields` are valid and error-free, proceed with processing the business logic in the `Business Response Fields`.
</Warning>

### Public Response Fields

<a href="/docs/response-description" target="_blank">Viewing Public Response Fields and Error Codes</a>

### Business Response Fields

| Field         | Type              | Scope         | Description                                                                                                              |
| :------------ | :---------------- | :------------ | :----------------------------------------------------------------------------------------------------------------------- |
| `task_status` | `integer`         | `0`, `1`, `2` | Asynchronous task status. ``0`: The task is queued.` ``1`: Asynchronous processing.` \`\`2`: Processing was successful.` |
| `data`        | `object`          |               | The content of the result data returned.                                                                                 |
| +`image_list` | `array of string` |               | Result URL address.                                                                                                      |

<Tip>
  The URL address is a temporary address, valid for 24 hours, and will not be accessible after it expires. If you need to save the file for a long time or permanently, please visit the URL address within 24 hours and download the file to your own storage space.
</Tip>

### Response Example

```json theme={null}
{
   "error_code":     0,
   "error_msg":      "",
   "error_detail":   {
      "status_code":  200,
      "code":         "",
      "code_message": "",
      "message":      ""
   },
   "task_status":    0,
   "data":           {
      "image_list": []
   }
}
```
