Chuyển đến nội dung chính
Tạo nhạc và lời bài hát bằng AI. Đây là một API bất đồng bộ. Phản hồi tạo trả về danh tính tác vụ và, khi có sẵn, cũng có thể bao gồm poll_url ưu tiên.

Nội dung yêu cầu

model
string
mặc định:"suno_music"
Model để sử dụng: suno_music để tạo nhạc, suno_lyrics chỉ để tạo lời bài hát.
prompt
string
Mô tả âm nhạc. Bắt buộc cho yêu cầu music, lyrics, upload-cover và upload-extend; bỏ qua với add-instrumental.
title
string
Tiêu đề cho bài hát được tạo.
tags
string
Các thẻ phong cách (ví dụ: “pop, upbeat, electronic”).
negative_tags
string
Phong cách cần tránh. Bắt buộc khi audio_operationadd-instrumental.
action
string
Loại tạo: MUSIC (mặc định) hoặc LYRICS.
mv
string
Phiên bản mô hình Suno chính thức. Bắt buộc khi tạo nhạc (khi bỏ qua action hoặc dùng MUSIC); bỏ qua cho yêu cầu chỉ tạo lời bài hát. Giá trị được hỗ trợ: 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.
make_instrumental
boolean
Đặt thành true để tạo đầu ra nhạc không lời, không có giọng hát.
audio_url
string
URL âm thanh tham chiếu hoặc đã tải lên có thể truy cập công khai. Nếu không gửi audio_operation, TokenLab dùng luồng upload-cover.
audio_operation
string
Chế độ âm thanh tải lên: upload-cover, upload-extend, hoặc add-instrumental. upload-extend cần continue_at; add-instrumental cần audio_url, title, tags, và negative_tags.
continue_clip_id
string
ID của một clip trước đó để tiếp tục.
continue_at
number
Mốc thời gian tính bằng giây để bắt đầu nối tiếp. Bắt buộc khi audio_operationupload-extend.

Phản hồi

id
string
ID tác vụ để kiểm tra trạng thái.
task_id
string
Bí danh của mã tác vụ bất đồng bộ khi được adapter trả về.
poll_url
string
URL polling ưu tiên khi có sẵn.
status
string
Trạng thái tác vụ: pending, processing, completed, hoặc failed.
created
integer
Dấu thời gian Unix khi tạo tác vụ.
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",
  "status": "pending",
  "created": 1706000000,
  "model": "suno_music"
}