Interrogez cet endpoint pour vérifier le statut de votre tâche de génération de musique.
Si la réponse de création contient poll_url, privilégiez cette URL exacte pour le polling. id et task_id doivent être traités comme le même identifiant de tâche asynchrone. Si la tâche n’existe plus ou n’est plus disponible dans l’enregistrement public de tâche, TokenLab renvoie async_task_not_found avec le message Task not found or no longer available.
Paramètres de chemin
L’ID de la tâche de génération de musique.
Réponse
Alias de l’identifiant de tâche asynchrone lorsqu’il est disponible.
URL de polling à privilégier lorsque la réponse de création la fournit.
Statut de la tâche : pending, processing, completed ou failed.
Valeur de progression facultative. Renvoyée uniquement lorsqu’une progression réelle est disponible ; utilisez status pour déterminer la fin de la tâche.
URL pour télécharger le fichier audio (une fois terminé).
URL vers la version vidéo avec visualiseur (une fois terminé).
Titre de la chanson générée.
Paroles générées ou fournies.
Message d’erreur (en cas d’échec).
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..."
}