> ## 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.

# Age & Gender Swap API

> Age & Gender Swap API edits portrait attributes to change age or gender and generate realistic face transformation effects.

## Request

* **URL**: `https://www.ailabapi.com/api/portrait/effects/face-attribute-editing`
* **Method**: `POST`
* **Content-Type**: `multipart/form-data`

### Image requirements

* **Image format**: `JPEG` `JPG` `PNG` `BMP`
* **Image size**: No more than 4 MB.
* **Image resolution**: Larger than 256x256px, smaller than 4096x4096px. The face area must be 64x64px or more.

### 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 | Description                                                                                                                                                                                                                                       |
| :---------------- | :------- | :------------ | :---------------------------------------------------------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `image`           | YES      | `file`        |                                                                   |         |                                                                                                                                                                                                                                                   |
| `action_type`     | YES      | `string`      | `TO_KID`, `TO_OLD`, `TO_FEMALE`, `TO_MALE`, `V2_AGE`, `V2_GENDER` |         | ``TO_KID`: V1 version becomes a child.`, ``TO\_OLD`: V1 version becomes old man.`, ``TO_FEMALE`: V1 version becomes girls.`, ``TO\_MALE`: V1 version becomes boys.`, ``V2_AGE`: V2 version age change.`, ``V2\_GENDER`: v2 version gender shift.` |
| `quality_control` | NO       | `string`      | `NONE`, `LOW`, `NORMAL`, `HIGH`                                   | `NONE`  | ``NONE`: No control is performed.`, ``LOW`: Lower quality requirements.`, ``NORMAL`: General quality requirements.`, ``HIGH`: Higher quality requirements.`                                                                                       |
| `face_location`   | NO       | `json string` |                                                                   |         | When multiple faces are detected in the image, use this parameter to specify the position of the face to be edited in the image, or default to the largest face in the image if not specified. [More Details](#face_location)                     |

#### `action_type` === `V2_AGE`

| Field    | Required | Type      | Scope    | Description |
| :------- | :------- | :-------- | :------- | :---------- |
| `target` | YES      | `integer` | \[1, 85] | Age.        |

#### `action_type` === `V2_GENDER`

| Field    | Required | Type      | Scope    | Description                         |
| :------- | :------- | :-------- | :------- | :---------------------------------- |
| `target` | YES      | `integer` | `0`, `1` | Gender. ``0`: Male.` ``1`: Female.` |

#### `quality_control`

The quality control thresholds corresponding to different control systems: If any quality information detected does not meet the requirements of the control threshold, an error will be returned.

| `quality_control` = `LOW` | `quality_control` = `NORMAL` | `quality_control` = `HIGH` | Scope                                       | Description                                                                                                                                  |
| :------------------------ | :--------------------------- | :------------------------- | :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------- |
| `0.8`                     | `0.6`                        | `0.2`                      | \[0, 1]                                     | The proportion of the left eye being obscured. `1` indicates complete obstruction.                                                           |
| `0.8`                     | `0.6`                        | `0.2`                      | \[0, 1]                                     | The proportion of the right eye being obscured. `1` indicates complete obstruction.                                                          |
| `0.8`                     | `0.6`                        | `0.2`                      | \[0, 1]                                     | The proportion of the nose being obscured. `1` indicates complete obstruction.                                                               |
| `0.8`                     | `0.6`                        | `0.2`                      | \[0, 1]                                     | The proportion of the mouth being obscured. `1` indicates complete obstruction.                                                              |
| `0.8`                     | `0.6`                        | `0.2`                      | \[0, 1]                                     | The proportion of the left cheek being obscured. `1` indicates complete obstruction.                                                         |
| `0.8`                     | `0.6`                        | `0.2`                      | \[0, 1]                                     | The proportion of the right cheek being obscured. `1` indicates complete obstruction.                                                        |
| `0.8`                     | `0.6`                        | `0.2`                      | \[0, 1]                                     | The proportion of the chin being obscured. `1` indicates complete obstruction.                                                               |
| `20`                      | `40`                         | `100`                      | \[0, 255]                                   | Lighting. `0` indicates poor lighting.                                                                                                       |
| `0.8`                     | `0.6`                        | `0.2`                      | \[0, 1]                                     | Image blur. `1` indicates complete blur.                                                                                                     |
| `0`                       | `0`                          | `1`                        | `0`, `1`                                    | Completeness of the face.  ``0`: The face overflows the image boundaries.` ``1`: The entire face is within the image boundaries.`            |
| `45`                      | `30`                         | `20`                       | \[-90 (left), 90 (right)]                   | Left-right rotation angle in three-dimensional rotation. A threshold of 30 indicates that the absolute value of the angle must be within 30. |
| `45`                      | `30`                         | `20`                       | \[-180 (counterclockwise), 180 (clockwise)] | Rotation angle within the plane. A threshold of 30 indicates that the absolute value of the angle must be within 30.                         |
| `45`                      | `30`                         | `20`                       | \[-90 (up), 90 (down)]                      | Pitch angle in three-dimensional rotation. A threshold of 30 indicates that the absolute value of the angle must be within 30.               |

#### `face_location`

* **Request Example**

  ```json theme={null}
  {"left":111.4,"top":96.56,"width":98,"height":98,"rotation":3}
  ```

## 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     | Description                              |
| :------- | :------- | :--------------------------------------- |
| `result` | `object` | The content of the result data returned. |
| +`image` | `string` | The BASE64 value of the edited image.    |

### Response Example

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


## OpenAPI

````yaml POST /api/portrait/effects/face-attribute-editing
openapi: 3.0.0
info:
  title: AILabAPI
  description: >-
    [<b>AILabTools</b>](https://www.ailabtools.com) is an advanced tool that
    offers a vast array of simple and flexible API endpoints to suit your
    specific needs. With just one [<b>API
    KEY</b>](https://www.ailabtools.com/doc/get-api-key), you can easily call
    any of the endpoints and integrate them quickly into your application or
    workflow, allowing for smooth and efficient operations. 
     
    [<b>AILabTools</b>](https://www.ailabtools.com) is continuously evolving,
    and you can anticipate even more API endpoints being added in the future,
    further enhancing its capabilities and usefulness for your artificial
    intelligence and machine learning requirements.
  version: 1.0.0
servers:
  - url: https://www.ailabapi.com
    description: Production server
security:
  - apiKeyAuth: []
tags:
  - name: AI IMAGE
  - name: AI IMAGE > Image Enhancement
  - name: AI IMAGE > Image Effects
  - name: AI IMAGE > Image Editing
  - name: AI IMAGE > Image Scoring
  - name: AI BACKGROUND REMOVAL
  - name: AI BACKGROUND REMOVAL > Portrait
  - name: AI BACKGROUND REMOVAL > General
  - name: AI PORTRAIT
  - name: AI PORTRAIT > Portrait Effects
  - name: AI PORTRAIT > Portrait Enhance
  - name: AI PORTRAIT > Portrait Editing
  - name: AI PORTRAIT > Portrait Analysis
  - name: AI COMMON
paths:
  /api/portrait/effects/face-attribute-editing:
    post:
      tags:
        - AI PORTRAIT > Portrait Effects
      summary: Age & Gender swap
      description: >-
        Age & Gender Swap API edits portrait attributes to change age or gender
        and generate realistic face transformation effects.
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                image:
                  type: string
                  format: binary
                action_type:
                  type: string
                  description: |-
                    Face editing method. 
                    - `TO_KID`: V1 version becomes a child. 
                    - `TO_OLD`: V1 version becomes old man. 
                    - `TO_FEMALE`: V1 version becomes girls. 
                    - `TO_MALE`: V1 version becomes boys. 
                    - `V2_AGE`: V2 version age change. 
                    - `V2_GENDER`: v2 version gender shift.
                quality_control:
                  type: string
                  description: >-
                    Image quality (`image` field image quality). <br/>Please
                    select the appropriate option based on quality information
                    such as masking, lighting, blurriness, and integrity of the
                    face. <br/>If selecting a higher quality causes the image to
                    be unprocessable, please select a lower quality to try. 

                    - `NONE`: No control is performed. 

                    - `LOW`: Lower quality requirements. 

                    - `NORMAL`: General quality requirements. 

                    - `HIGH`: Higher quality requirements.
                face_location:
                  type: string
                  description: >-
                    When multiple faces are detected in the image, use this
                    parameter to specify the position of the face to be edited
                    in the image, or default to the largest face in the image if
                    not specified.
                target:
                  type: string
      responses:
        '200':
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                request_id: ''
                log_id: ''
                error_detail:
                  code: ''
                  code_message: ''
                  message: ''
                result:
                  image: ''
          description: Success
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: ailabapi-api-key
      description: API Key for authentication

````