# 执行 AI 牙齿美白 任务。

AI 任务是异步处理的。功能支持 Webhook 时，优先用 Webhook 来接收完成通知。配置好您的 Webhook 端点、校验 Webhook 签名，收到 `success` 或 `error` 通知后，用收到的 `task_id` 查询任务结果。配置与校验的细节请见 [Webhook 接入指南](/develop/webhook)。
若功能不支持 Webhook，或您的接入方式用不了 Webhook，就请实现轮询。提交 AI 任务后，按固定间隔（例如每 10 秒）轮询状态接口，直到任务状态变为 `success` 或 `error`。

Endpoint: POST /s2s/v2.0/task/teeth-whiten
Security: BearerAuthenticationV2

## Security:

  - `BearerAuthenticationV2` (unknown)
    http bearer

## Request fields (application/json):

  - `version` (string, required)
    Enum: "1.0"

  - `index` (integer)
    要施加特效的目标对象的下标，从 0 开始。图中存在多个对象时，请先运行预处理任务，在 `data.results.result` 中查看各对象的坐标，再把您选定对象的下标传到这里。
预处理这一步会在施加任何特效之前，先分析输入图片、识别出所有可检测的对象。它运行的是一个检测任务，为每个对象返回结构化数据，其中包含一组边界框坐标。列表中每一项的位置就是它的下标（从 0 开始），后续就用这个下标来指定特效要作用的目标对象。
这些信息以结构化格式返回，通常位于 `data.results.result` 之下。
先做这一步，您可以：
* 了解图中一共有多少个对象
* 查看它们的位置与大小
* 按下标选出正确的目标对象

图中存在多个对象时，请务必先运行预处理这一步。
查看 `data.results.result`，确认有哪些对象以及各自的下标。
用对应的下标（从 0 开始）选中正确的目标。
    Example: 0

  - `effect` (object, required)

  - `effect.whitening_intensity` (integer, required)

  - `effect.skin_smooth_strength` (integer)

  - `effect.skin_smooth_color_intensity` (integer)

  - `src_file_url` (string, required)
    用于运行任务的文件 URL，该 URL 需可公开访问。
    Example: https://example.com/selfie.jpg

  - `src_file_id` (string, required)
    用于运行任务的文件 ID，取自上传文件接口返回的 file_id。
    Example: pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE=

## Response 200:

  - `200` (unknown)
    任务执行成功

## Response 200 fields (application/json):

  - `status` (integer)
    响应状态
    Example: 200

  - `data` (object)

  - `data.task_id` (string)
    该任务的 ID。凭这个 ID 可在 24 小时内查询任务结果。
    Example: grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe

## Response 400:

  - `400` (unknown)
    任务执行失败

## Response 400 fields (application/json):

  - `status` (integer)
    响应状态
    Example: 400

  - `error` (string)
    错误信息
    Example: The operation could not be completed

  - `error_code` (string)
    错误码：
* InvalidParameters - 请求参数无效
* CreditInsufficiency - 点数不足，无法运行
* BadRequest - 请求参数不符合预期
* InvalidStyleGroup - 风格分组 ID 无效
* InvalidStyle - 风格 ID 无效
    Enum: "InvalidParameters", "CreditInsufficiency", "InvalidStyleGroup", "InvalidStyle", "BadRequest"

## Response 401:

  - `401` (unknown)
    API 密钥无效或缺失

## Response 401 fields (application/json):

  - `status` (integer)
    响应状态
    Example: 401

  - `error` (string)
    Example: Invalid API key

## Response 429:

  - `429` (unknown)
    请求过多

## Response 429 fields (application/json):

  - `status` (integer)
    响应状态
    Example: 429

  - `error` (string)
    Example: Too many requests

