十分钟部署可用的 Suno 音乐生成 API
【免费下载链接】Suno-APICreate Music in Seconds with SunoAPI.项目地址: https://gitcode.com/GitHub_Trending/su/Suno-API
Suno-API 是基于 Python 和 FastAPI 的非官方歌曲生成 API 服务,面向希望以编程方式调用 Suno 音乐生成能力、把它接入自己应用的开发者。它的核心特点是自带 token 自动维护与保活:部署时只需配置一次初始的 session_id 与 cookie,服务之后会自行保持令牌有效,无需人工刷新。
它能为你做什么
- 自定义歌曲生成:调用 POST /generate,提交歌词、风格标签 tags、负向标签 negative_tags、歌曲标题与模型版本 mv(默认 chirp-v3-0),逐项控制生成结果。
- 一句话生成:调用 POST /generate/description-mode,只需用自然语言提交 gpt_description_prompt,也可设 make_instrumental 为 true 生成纯器乐曲目。
- 歌词生成与获取:POST /generate/lyrics/ 按主题 prompt 生成歌词,GET /lyrics/{lid} 再按返回的 id 取回完整歌词。
- 额度查询:GET /get_credits 返回账户剩余点数 credits_left、计费周期与月度用量,便于安排生成计划。
三步完成部署
第一步:克隆仓库并安装依赖
git clone https://gitcode.com/GitHub_Trending/su/Suno-API cd Suno-API pip3 install -r requirements.txt第二步:配置初始凭证
把.env.example重命名为.env,填入 session_id 与 cookie。两者都从浏览器开发者工具中一次获取:
请求头里可找到 session_id 与完整 cookie 字段,粘贴进 .env 即可,之后由服务自动保活
第三步:启动服务
uvicorn main:app启动后访问 http://127.0.0.1:8000/docs 查看接口文档。如果偏好容器化部署,只需一条命令docker compose build && docker compose up,它复用同一份 .env 并映射 8000 端口。
跑通第一个完整示例
服务启动后,用描述模式发起一次生成:
curl -X POST http://127.0.0.1:8000/generate/description-mode \ -H "Content-Type: application/json" \ -d '{"gpt_description_prompt": "A light indie folk song about a rainy afternoon", "make_instrumental": true, "mv": "chirp-v3-0"}'响应中会返回曲目 id(aid)。由于生成需要时间,随后轮询 GET /feed/{aid} 查询状态即可。仓库自带的 test.py 给了一个可参考的轮询写法:每 30 秒查一次,直到响应中 audio_url 字段非空,最长等待 90 秒超时。预期的最终结果是 /feed/{aid} 返回数组,首元素中 audio_url 即音频下载地址,metadata 里包含标题等曲目信息,可直接下载播放。
服务启动后访问 /docs 路由,可在线查看所有接口与参数结构,并直接在页面上试调用
按需使用各项功能
- 生成歌曲:已有完整歌词用自定义模式 POST /generate(歌词、标签、标题、模型版本齐全);只有一个想法则用描述模式 POST /generate/description-mode。
- 查询曲目:拿生成时返回的 id 调用 GET /feed/{aid},audio_url 出现即代表该曲目完成,可顺带取到 metadata。
- 管理歌词:想先要词再要曲时,用 POST /generate/lyrics/ 提交主题生成,再按 id 用 GET /lyrics/{lid} 取回。
- 核对额度:批量调用前先查 GET /get_credits,确认 credits_left 足够,避免中途因余额不足失败。
实现思路
整体是在 Suno 官方后端之上包一层 FastAPI 的轻量封装。所有出站请求使用 aiohttp 全异步处理,单实例即可承接并发生成请求而不互相阻塞。令牌维护与请求链路解耦:cookie.py 在服务启动时拉起独立后台线程,每 5 秒调用官方令牌刷新接口更新 JWT,各请求再通过 get_token 依赖注入拿到当前有效令牌,令牌过期对调用方透明。请求参数由 schemas.py 中的 Pydantic 模型做校验,缺参会在进入上游前就被拦截。
使用注意
- 初始凭证需手工获取:session_id 与 cookie 必须从浏览器手动取得,若账号重新登录或凭证失效,服务将无法调用上游,需重新配置;自动保活只在其有效期内生效。
- 非官方项目:本项目直接调用 Suno 官方服务的非公开接口,字段与 URL 可能随上游调整而变化,生产环境使用需自行评估风险并遵守上游服务条款。
- 生成消耗账户点数:每次生成都会消耗绑定 Suno 账户的额度,点数不足时生成会失败,建议批量调用前先查询 /get_credits。
接下来先检查 .env 配置、启动 uvicorn 并确认 /docs 可正常访问,再用 GET /get_credits 验证账户可用。跑通后就可以把 /generate 与 /feed 两个接口接进自己的脚本或应用里。
【免费下载链接】Suno-APICreate Music in Seconds with SunoAPI.项目地址: https://gitcode.com/GitHub_Trending/su/Suno-API
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考