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

# Fish Tasks API 的對接和使用

> Fish voice generation 整合指南 - Ace Data Cloud

Fish Tasks API 的主要功能是通過輸入 Fish Audios Generation API 生成的任務ID來查詢該任務的執行情況。

本文檔將詳細介紹 Fish Tasks API 的對接說明，幫助您輕鬆集成並充分利用該 API 的強大功能。通過 Fish Tasks API，您可以輕鬆實現查詢 Fish Audios Generation API 的任務執行情況。

## 申請流程

要使用 Fish Audios Generation API，首先到 [Ace Data Cloud 控制台](https://platform.acedata.cloud/console/applications) 獲取您的 API Token，留作備用。

![](https://cdn.acedata.cloud/5hmkdg.jpg)

如果你尚未登錄或註冊，會自動跳轉到登錄頁面邀請你註冊和登錄，完成後會自動返回當前頁面。

**一個 API Token 即可調用平台所有服務，無需為每個服務單獨申請。** 首次申請會贈送免費額度，可免費體驗；額度不足時可在 [控制台](https://platform.acedata.cloud/console/coin) 充值通用餘額。

> 📘 完整文檔：[Fish Audios Generation API →](https://platform.acedata.cloud/documents/fish-tts)

## 請求示例

Fish Tasks API 可以用於查詢 Fish Audios Generation API 的結果。關於怎樣使用 Fish Audios Generation API，請參考文檔 [Fish Videos Generation API ](https://platform.acedata.cloud/documents/fish-tts-integration)。

我們以 Fish Audios Generation API 服務返回的任務ID一個為例，演示如何使用該 API。假設我們有一個任務ID：2725a2d3-f87e-4905-9c53-9988d5a7b2f5，接下來演示如何通過傳入一個任務ID來。

### 任務示例圖

<p>
  <img src="https://cdn.acedata.cloud/jxvue8.png" width="500" className="m-auto" />
</p>

### 設置請求頭和請求體

**Request Headers** 包括：

* `accept`：指定接收 JSON 格式的響應結果，這裡填寫為 `application/json`。
* `authorization`：調用 API 的密鑰，申請之後可以直接下拉選擇。

**Request Body** 包括：

* `id`：上傳的任務ID。
* `action`：對任務的操作方式。

設置如下圖所示：

<p>
  <img src="https://cdn.acedata.cloud/xc5ejq.png" width="500" className="m-auto" />
</p>

### 代碼示例

可以發現，在頁面右側已經自動生成了各種語言的代碼，如圖所示：

<p>
  <img src="https://cdn.acedata.cloud/851zv2.png" width="500" className="m-auto" />
</p>

部分代碼示例如下：

#### CURL

```bash theme={null}
curl -X POST 'https://api.acedata.cloud/fish/tasks' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "id": "2725a2d3-f87e-4905-9c53-9988d5a7b2f5",
  "action": "retrieve"
}'
```

### 響應示例

請求成功後，API 將返回此處任務的詳細信息。例如：

```json theme={null}
{
  "_id": "68cfad98550a4144a5476a92",
  "id": "2725a2d3-f87e-4905-9c53-9988d5a7b2f5",
  "api_id": "8e6f8083-4683-45fe-a993-3e1d993fc999",
  "application_id": "3559d836-2505-46be-96ea-ea72bcb7c080",
  "created_at": 1758440856.34,
  "started_at": 1758440856.4,
  "finished_at": 1758440869.2,
  "elapsed": 12.8,
  "credential_id": "881ad87d-8ba7-40b7-ac45-d19e41ae6e3a",
  "request": {
    "action": "speech",
    "prompt": "a white siamese cat",
    "model": "fish-tts",
    "voice_id": "d7900c21663f485ab63ebdb7e5905036",
    "callback_url": "https://webhook.site/4815f79f-a40f-4078-ac85-1cc126b6bb34"
  },
  "trace_id": "e2d308bc-4df8-4c69-9369-a60f3c54f2b3",
  "type": "audios",
  "user_id": "ad7afe47-cea9-4cda-980f-2ad8810e51cf",
  "response": {
    "success": true,
    "task_id": "2725a2d3-f87e-4905-9c53-9988d5a7b2f5",
    "trace_id": "e2d308bc-4df8-4c69-9369-a60f3c54f2b3",
    "data": [
      {
        "audio_url": "https://platform.r2.fish.audio/task/b627c2f7d38a4083a837570ba6d0962f.mp3"
      }
    ]
  }
}
```

返回結果一共有多個字段，request 字段就是發起任務時的 request body，同時response 字段是任務完成後返回的response body。字段介紹如下。

* `id`，生成此任務的 ID，用於唯一標識此次生成任務。
* `request`，查詢任務中的請求信息。
* `response`，查詢任務中的返回信息。
* `created_at`，任務創建時間，Unix 時間戳（秒，浮點）。
* `started_at`，任務開始執行時間，Unix 時間戳（秒，浮點）。
* `finished_at`，任務完成時間，Unix 時間戳（秒，浮點）。任務未完成時不返回該字段。
* `elapsed`，任務執行耗時，單位為秒（浮點，保留 3 位小數）。任務未完成時不返回該字段。

## 批量查詢操作

這是是針對多個任務ID來進行查詢任務詳細信息，與上面不同的是需要將action選中為retrieve\_batch

**Request Body** 包括：

* `ids`：上傳的任務ID數組。
* `action`：對任務的操作方式。

設置如下圖所示：

<p>
  <img src="https://cdn.acedata.cloud/64lid9.png" width="500" className="m-auto" />
</p>

### 代碼示例

可以發現，在頁面右側已經自動生成了各種語言的代碼，如圖所示：

<p>
  <img src="https://cdn.acedata.cloud/ezkzmw.png" width="500" className="m-auto" />
</p>

部分代碼示例如下：

### 響應示例

請求成功後，API 將返回此次所有批量任務的具體詳細信息。例如：

```json theme={null}
{
  "items": [
    {
      "_id": "68cfad98550a4144a5476a92",
      "id": "2725a2d3-f87e-4905-9c53-9988d5a7b2f5",
      "api_id": "8e6f8083-4683-45fe-a993-3e1d993fc999",
      "application_id": "3559d836-2505-46be-96ea-ea72bcb7c080",
      "created_at": 1758440856.34,
      "started_at": 1758440856.4,
      "finished_at": 1758440869.2,
      "elapsed": 12.8,
      "credential_id": "881ad87d-8ba7-40b7-ac45-d19e41ae6e3a",
      "request": {
        "action": "speech",
        "prompt": "一隻白色的暹羅貓",
        "model": "fish-tts",
        "voice_id": "d7900c21663f485ab63ebdb7e5905036",
        "callback_url": "https://webhook.site/4815f79f-a40f-4078-ac85-1cc126b6bb34"
      },
      "trace_id": "e2d308bc-4df8-4c69-9369-a60f3c54f2b3",
      "type": "audios",
      "user_id": "ad7afe47-cea9-4cda-980f-2ad8810e51cf",
      "response": {
        "success": true,
        "task_id": "2725a2d3-f87e-4905-9c53-9988d5a7b2f5",
        "trace_id": "e2d308bc-4df8-4c69-9369-a60f3c54f2b3",
        "data": [
          {
            "audio_url": "https://platform.r2.fish.audio/task/b627c2f7d38a4083a837570ba6d0962f.mp3"
          }
        ]
      }
    },
    {
      "_id": "68cfad98550a4144a5476a92",
      "id": "2725a2d3-f87e-4905-9c53-9988d5a7b2f5",
      "api_id": "8e6f8083-4683-45fe-a993-3e1d993fc999",
      "application_id": "3559d836-2505-46be-96ea-ea72bcb7c080",
      "created_at": 1758440856.34,
      "started_at": 1758440856.4,
      "finished_at": 1758440869.2,
      "elapsed": 12.8,
      "credential_id": "881ad87d-8ba7-40b7-ac45-d19e41ae6e3a",
      "request": {
        "action": "speech",
        "prompt": "一隻白色的暹羅貓",
        "model": "fish-tts",
        "voice_id": "d7900c21663f485ab63ebdb7e5905036",
        "callback_url": "https://webhook.site/4815f79f-a40f-4078-ac85-1cc126b6bb34"
      },
      "trace_id": "e2d308bc-4df8-4c69-9369-a60f3c54f2b3",
      "type": "audios",
      "user_id": "ad7afe47-cea9-4cda-980f-2ad8810e51cf",
      "response": {
        "success": true,
        "task_id": "2725a2d3-f87e-4905-9c53-9988d5a7b2f5",
        "trace_id": "e2d308bc-4df8-4c69-9369-a60f3c54f2b3",
        "data": [
          {
            "audio_url": "https://platform.r2.fish.audio/task/b627c2f7d38a4083a837570ba6d0962f.mp3"
          }
        ]
      }
    }
  ],
  "count": 2
}
```

返回結果一共有多個字段，其中items是包含了批量任務的具體詳情信息，每個任務的具體信息與上文的字段一樣，字段信息如下。

* `items`，批量任務的所有具體詳情信息。它是一個數組，每個數組的元素和上文查詢單個任務的返回結果格式是一樣的。
* `count`，此處批量查詢任務的個數。

#### CURL

```bash theme={null}
curl -X POST 'https://api.acedata.cloud/fish/tasks' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "ids": ["2725a2d3-f87e-4905-9c53-9988d5a7b2f5","2725a2d3-f87e-4905-9c53-9988d5a7b2f5"],
  "action": "retrieve_batch"
}'
```

## 錯誤處理

在調用 API 時，如果遇到錯誤，API 會返回相應的錯誤代碼和信息。例如：

* `400 token_mismatched`：錯誤請求，可能是由於缺少或無效的參數。
* `400 api_not_implemented`：錯誤請求，可能是由於缺少或無效的參數。
* `401 invalid_token`：未授權，無效或缺少授權令牌。
* `429 too_many_requests`：請求過多，您已超過速率限制。
* `500 api_error`：內部伺服器錯誤，伺服器出現問題。

### 錯誤響應示例

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "獲取失敗"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## 結論

通過本文檔，您已經了解了如何使用 Fish Tasks API 進行查詢單個或批量任務的所有具體詳情信息。希望本文檔能幫助您更好地對接和使用該 API。如有任何問題，請隨時聯繫我們的技術支持團隊。
