Truy vấn (poll) endpoint này để kiểm tra trạng thái của tác vụ tạo nhạc của bạn.
Nếu phản hồi tạo bao gồm poll_url, hãy ưu tiên chính URL đó khi polling. id và task_id nên được coi là cùng một định danh của tác vụ bất đồng bộ. Nếu tác vụ không còn tồn tại hoặc không còn có thể được phân giải thông qua hợp đồng tác vụ bất đồng bộ công khai, TokenLab trả về async_task_not_found với thông điệp Task not found or no longer available.
Tham số Đường dẫn
Phản hồi
Bí danh của mã tác vụ bất đồng bộ khi có sẵn.
URL polling ưu tiên khi phản hồi tạo tác vụ cung cấp.
Trạng thái tác vụ: pending, processing, completed, hoặc failed.
Giá trị tiến độ tùy chọn. Chỉ được trả về khi có giá trị tiến độ thực; hãy dùng status để xác định khi tác vụ hoàn tất.
URL để tải xuống tệp âm thanh (khi hoàn tất).
URL dẫn đến phiên bản video với visualizer (khi hoàn tất).
Tiêu đề bài hát được tạo.
Lời bài hát được tạo hoặc được cung cấp.
Thông báo lỗi (khi thất bại).
cURL
Python
JavaScript
Go
PHP
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] \n Driving through the night..."
}