♪Suno API 中文教程

Suno API 的 Java 调用示例

不需要 SDK:Java 11 的 HttpClient 加 Jackson 就能跑通提交、轮询、下载。

准备

Java 11+、Jackson(解析 JSON)、一个放在环境变量里的 Key。请求头统一用 Authorization: Bearer <KEY>。生成类接口按次计费,查询与取地址免费。

提交与轮询

var client = HttpClient.newBuilder()
    .connectTimeout(Duration.ofSeconds(30)).build();
var mapper = new ObjectMapper();
var key = System.getenv("SUNO_API_KEY");

var create = HttpRequest.newBuilder(URI.create(BASE + "/api/music/create"))
    .timeout(Duration.ofMinutes(5))
    .header("Authorization", "Bearer " + key)
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(
        "{\"description\":\"city pop, 90s, female vocal\",\"model\":\"suno-v6\"}"))
    .build();
var body = client.send(create, HttpResponse.BodyHandlers.ofString()).body();
var songId = mapper.readTree(body).path("data").path("clips").get(0)
    .path("song_id").asText();

轮询时把客户端超时设到分钟级;超时只代表没等到响应,先查同一个任务,不要立刻重提。

取地址与下载

完成后调用 POST /api/music/download-url,传 { song_id, kind: "song" }。地址是临时的:要长期保存就把文件下载到自己的对象存储,数据库里存任务 ID,而不是存 URL。

429 用指数退避(1s → 2s → 4s),并降低并发;不要用固定 1 秒无限重试。

常见问题 / FAQ

Java 8 能用吗?

示例用的是 Java 11+ 的 HttpClient;Java 8 可以用 OkHttp 或 Apache HttpClient,接口逻辑一样。

需要官方 SDK 吗?

不需要。接口就是普通 HTTP,JSON 用 Jackson/Gson 即可。

要自己写异步吗?

单首用同步 + 轮询就够;批量时再用 sendAsync 或线程池,并限制并发。

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