AIを使用して音楽と歌詞を生成します。これは非同期 API です。作成レスポンスはタスク ID を返し、利用可能な場合は優先して使う poll_url も返します。
リクエストボディ
使用するモデル:音楽生成には suno_music、歌詞のみには suno_lyrics を使用します。
音楽の説明。music、lyrics、upload-cover、upload-extend では必須です。add-instrumental では省略できます。
スタイルタグ(例:「pop, upbeat, electronic」)。
避けたいスタイル。audio_operation が add-instrumental の場合は必須です。
生成タイプ:MUSIC(デフォルト)または LYRICS。
公式のSunoモデルバージョン。音楽生成では必須です(actionを省略した場合、またはMUSICの場合)。歌詞のみのリクエストでは省略します。対応値: chirp-v3-5, chirp-v4, chirp-v4-5, chirp-v4.5, chirp-v4-5plus, chirp-v4.5plus, chirp-v4-5all, chirp-v4.5all, chirp-v5, chirp-v5-5, chirp-v5.5.
true にするとボーカルなしのインストゥルメンタルを生成します。
公開アクセス可能な参照またはアップロード済み音声 URL。audio_operation を省略すると upload-cover フローを使います。
アップロード音声モード:upload-cover、upload-extend、add-instrumental。upload-extend には continue_at、add-instrumental には audio_url、title、tags、negative_tags が必要です。
継続を開始する秒数。audio_operation が upload-extend の場合は必須です。
レスポンス
アダプタが返す場合の非同期タスク ID 別名です。
利用可能な場合に返される優先ポーリング URL です。
タスクのステータス:pending、processing、completed、または failed。
curl -X POST "https://api.tokenlab.sh/v1/music/generations" \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "suno_music",
"mv": "chirp-v4",
"prompt": "An upbeat electronic dance track with heavy bass",
"title": "Night Drive",
"tags": "electronic, EDM, energetic"
}'
import requests
response = requests.post(
"https://api.tokenlab.sh/v1/music/generations",
headers={"Authorization": "Bearer sk-your-api-key"},
json={
"model": "suno_music",
"mv": "chirp-v4",
"prompt": "An upbeat electronic dance track with heavy bass",
"title": "Night Drive",
"tags": "electronic, EDM, energetic"
}
)
task_id = response.json()["id"]
print(f"Task ID: {task_id}")
const response = await fetch('https://api.tokenlab.sh/v1/music/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk-your-api-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'suno_music',
mv: 'chirp-v4',
prompt: 'An upbeat electronic dance track with heavy bass',
title: 'Night Drive',
tags: 'electronic, EDM, energetic'
})
});
const data = await response.json();
console.log(`Task ID: ${data.id}`);
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
payload := map[string]interface{}{
"model": "suno_music",
"mv": "chirp-v4",
"prompt": "An upbeat electronic dance track with heavy bass",
"title": "Night Drive",
"tags": "electronic, EDM, energetic",
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://api.tokenlab.sh/v1/music/generations", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer sk-your-api-key")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("Task ID: %s\n", result["id"])
}
<?php
$ch = curl_init('https://api.tokenlab.sh/v1/music/generations');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer sk-your-api-key'
],
CURLOPT_POSTFIELDS => json_encode([
'model' => 'suno_music',
'mv' => 'chirp-v4',
'prompt' => 'An upbeat electronic dance track with heavy bass',
'title' => 'Night Drive',
'tags' => 'electronic, EDM, energetic'
])
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo "Task ID: " . $data['id'];
{
"id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"task_id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"poll_url": "/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"status": "pending",
"created": 1706000000,
"model": "suno_music"
}