如果建立回應中包含
poll_url,請優先直接呼叫該 URL 輪詢。id 與 task_id 應視為同一個非同步任務身分。如果該任務已不存在,或無法再從公開任務記錄中查詢到,TokenLab 會回傳 async_task_not_found,並附上訊息 Task not found or no longer available.路徑參數
string
必填
音樂生成任務 ID。
回應
string
任務 ID。
string
可用時返回的非同步任務 ID 別名。
string
建立回應提供時,優先使用的輪詢 URL。
string
任務狀態:
pending、processing、completed 或 failed。integer
可選進度值。僅在任務提供真實進度時返回;請使用
status 判斷任務是否完成。string
音訊檔案下載連結(完成時)。
string
帶有視覺化效果的影片版本連結(完成時)。
string
生成的歌曲標題。
string
生成或提供的歌詞。
string
錯誤訊息(失敗時)。
curl "https://api.tokenlab.sh/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-H "Authorization: Bearer sk-your-api-key"
import requests
import time
task_id = "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
while True:
response = requests.get(
f"https://api.tokenlab.sh/v1/tasks/{task_id}",
headers={"Authorization": "Bearer sk-your-api-key"}
)
result = response.json()
if result["status"] == "completed":
print(f"Audio URL: {result['audio_url']}")
break
elif result["status"] == "failed":
print(f"Error: {result['error']}")
break
time.sleep(5) # Poll every 5 seconds
const taskId = 'ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
async function pollForMusic() {
while (true) {
const response = await fetch(
`https://api.tokenlab.sh/v1/tasks/${taskId}`,
{ headers: { 'Authorization': 'Bearer sk-your-api-key' } }
);
const result = await response.json();
if (result.status === 'completed') {
console.log(`Audio URL: ${result.audio_url}`);
return result.audio_url;
} else if (result.status === 'failed') {
throw new Error(result.error);
}
await new Promise(r => setTimeout(r, 5000));
}
}
package main
import (
"encoding/json"
"fmt"
"net/http"
"time"
)
func main() {
taskID := "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
for {
req, _ := http.NewRequest("GET",
fmt.Sprintf("https://api.tokenlab.sh/v1/tasks/%s", taskID), nil)
req.Header.Set("Authorization", "Bearer sk-your-api-key")
client := &http.Client{}
resp, _ := client.Do(req)
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
resp.Body.Close()
if result["status"] == "completed" {
fmt.Printf("Audio URL: %s\n", result["audio_url"])
break
} else if result["status"] == "failed" {
fmt.Printf("Error: %s\n", result["error"])
break
}
time.Sleep(5 * time.Second)
}
}
<?php
$taskId = 'ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
while (true) {
$ch = curl_init("https://api.tokenlab.sh/v1/tasks/{$taskId}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer sk-your-api-key'
]
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
if ($result['status'] === 'completed') {
echo "Audio URL: {$result['audio_url']}\n";
break;
} elseif ($result['status'] === 'failed') {
echo "Error: {$result['error']}\n";
break;
}
sleep(5);
}
{
"id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"task_id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"poll_url": "/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"status": "completed",
"audio_url": "https://cdn.suno.ai/abc123.mp3",
"video_url": "https://cdn.suno.ai/abc123.mp4",
"title": "Night Drive",
"lyrics": "[Verse 1]\nDriving through the night..."
}