♪Suno API 中文教程

Suno API 的 Python 调用示例

流程四步,和语言无关;Python 这边真正要处理的是「任务没跑完但请求超时」这件事。

准备

把 Key 放服务端(环境变量或密钥管理),不要写进代码库;请求头用 Authorization: Bearer <KEY>。生成类接口按次计费,读取类免费。

四步跑通

import time, requests

BASE = "https://www.suno-api.io"
H = {"Authorization": "Bearer YOUR_API_KEY"}

# 1) 提交生成:0.6 元一次,返回 2 首
song = requests.post(f"{BASE}/api/music/create", headers=H, timeout=300, json={
    "description": "明亮的中文流行,钢琴前奏,温暖女声", "model": "suno-v6"
}).json()["data"]["clips"][0]["song_id"]

# 2) 轮询到完成(建议 3-5 秒一次)
for _ in range(60):
    s = requests.post(f"{BASE}/api/music/query", headers=H, timeout=60,
                      json={"song_id": song}).json()
    if s.get("data", {}).get("status") in ("complete", "completed"):
        break
    time.sleep(4)

# 3) 取媒体地址(免费,可指定 wav / video / cover / midi)
url = requests.post(f"{BASE}/api/music/download-url", headers=H, timeout=60,
                    json={"song_id": song, "kind": "song"}).json()
print(url)

# 4) 需要落盘时用下载接口,或直接 requests.get(url)

三个必踩的坑

429 怎么处理

加指数退避(1s → 2s → 4s…),并检查并发是否过高。生成类接口不要瞬发大量请求,读取类也有限流。

常见问题 / FAQ

有官方 SDK 吗?

没有。接口就是普通 HTTP,用 requests 或 httpx 都能调,不需要额外依赖。

需要异步吗?

多数场景不需要。轮询 + sleep 足够;只有你要同时跑很多首时才值得上 asyncio。

一次调用出几首?

生成类默认返回 2 首;替换段落、分轨等编辑类通常返回 1 个结果。

申请 Key、第一个请求、接口清单与报错排查
注册只需要邮箱,一次生成 0.6 元出 2 首,MP3 与 WAV 下载不限次。
看完整接口清单