메인 콘텐츠로 건너뛰기
이 엔드포인트를 폴링하여 음악 생성 작업의 상태를 확인하세요.
생성 응답에 poll_url 이 포함되어 있으면, 상태 조회에는 그 URL 을 우선 사용하세요. idtask_id 는 같은 비동기 작업 ID 로 취급해야 합니다.작업이 더 이상 존재하지 않거나 공개 작업 기록에서 확인할 수 없는 경우 TokenLab는 async_task_not_foundTask not found or no longer available. 메시지를 반환합니다.

경로 파라미터

id
string
필수
음악 생성 작업 ID입니다.

응답

id
string
작업 ID.
task_id
string
사용 가능할 때의 비동기 작업 ID 별칭입니다.
poll_url
string
생성 응답에서 제공될 때 우선 사용할 폴링 URL입니다.
status
string
작업 상태: pending, processing, completed 또는 failed.
progress
integer
선택적 진행 값입니다. 실제 진행 값이 제공될 때만 반환됩니다. 완료 여부는 status 로 판단하세요.
audio_url
string
오디오 파일을 다운로드할 URL (완료 시).
video_url
string
비주얼라이저가 포함된 비디오 버전의 URL (완료 시).
title
string
생성된 곡 제목.
lyrics
string
생성되거나 제공된 가사.
error
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..."
}