媒体指南
音乐生成
生成歌曲或歌词,并等待最终音频
音乐生成是异步任务。POST /v1/music/generations 会返回任务 ID、状态,通常还会返回 poll_url。使用这个地址查询,直到任务变为 completed 或 failed。
选择要生成的内容
| 想生成什么 | 关键字段 | 说明 |
|---|---|---|
| 完整歌曲或伴奏 | model、mv、prompt,可选 title、tags、action: "MUSIC" | 最终会返回音频 |
| 只生成歌词 | model、prompt、action: "LYRICS" | 所选模型必须支持歌词生成 |
| 续写已有片段 | continue_clip_id,可选 continue_at | 保存上一段音乐的片段 ID |
用下面的请求获取当前音乐模型:
curl "https://api.tokenlab.sh/v1/models?recommended_for=music" \
-H "Authorization: Bearer sk-your-api-key"下面的示例使用 suno_music,并把 mv 设为 chirp-v4。只生成歌词时,请选择明确支持歌词的模型,发送 action: "LYRICS",并省略 mv。
创建音乐任务
curl 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": "一首充满活力的合成流行曲,伴有温暖的声乐和干净的合唱",
"title": "晨间静电",
"tags": "合成流行,充满活力",
"action": "MUSIC"
}'提示词、标题和标签可能会出现在产品历史中,不要把 API 密钥、私密 URL 或诊断信息写进去。
获取生成结果
使用创建响应中的 poll_url 查询。客户端需要固定地址时,可以用返回的 id 或 task_id 调用 GET /v1/tasks/{id}。
curl "https://api.tokenlab.sh/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer sk-your-api-key"创建响应
创建成功后会得到任务记录,此时音乐还没有完成:
{
"id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"task_id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"poll_url": "/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"status": "pending",
"created": 1706000000,
"model": "suno_music"
}状态变为 completed 后,响应可能包含:
{
"id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"task_id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"poll_url": "/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"status": "completed",
"audio_url": "https://cdn.example.com/music/abc123.mp3",
"video_url": "https://cdn.example.com/music/abc123.mp4",
"stream_audio_url": "https://cdn.example.com/music/abc123-stream.mp3",
"image_url": "https://cdn.example.com/music/cover.jpg",
"title": "晨间静电",
"lyrics": "[Verse 1]\n..."
}下载地址只会在 status 变为 completed 后出现。失败时会返回 status: "failed" 和 error。请保存最终 URL,让用户以后可以直接打开,不必再次生成。
在产品中展示状态
- 创建成功后显示“生成中”。
- 耗时较长时每 5–10 秒查询一次,
completed或failed后停止。 - 只有状态完成且存在
audio_url时才显示播放器。 - 只生成歌词时展示文字结果,不要让用户误以为会收到音频。
- 页面刷新后继续查询已经保存的
task_id,不要重新创建。
费用记录
创建音乐任务时可能暂扣预估费用,完成或失败后记录最终金额。请保存 request_id、task_id、模型、API 地址和返回时的 billing_transaction_id;最终费用以 Management API 的 Usage 为准。
常见错误
| 症状 | 可能原因 | 修复 |
|---|---|---|
| 创建后没有播放器 | 仍在生成,或完成时没有 audio_url | 查询到最终状态;没有音频时按失败处理 |
| 刷新后出现两首 | 页面重新创建了任务 | 保存并复用 task_id |
| 歌词任务没有音频 | action: "LYRICS" 只返回文字 | 歌词和音乐使用不同的界面 |
| 参数不支持 | 所选模型不接受这个字段 | 删除字段,或改用明确支持它的模型 |