곡 미디어 다운로드 및 미리듣기 API

2026-09-18 업데이트 · Suno-API 팀

인터페이스 설명

이 엔드포인트 묶음은 "미디어 주소 가져오기"와 "실제 파일 다운로드"를 분리합니다.

과금: 모두 무료. 다운로드와 미리듣기는 플랫폼이 이미 호스팅 중인 미디어를 읽기만 하고 Suno를 호출하지 않으며, 요금도 청구되지 않습니다.

권장 모델: suno-v6. suno-v6, suno-v6-wild, suno-v6-mini를 사용할 수 있습니다.

인증

파라미터 타입 필수 설명
Authorization string 예 Bearer YOUR_API_KEY(GET /api/music/download는 로그인 세션도 허용합니다)
Content-Type string 예 application/json

지원하는 미디어 형식(kind)

kind 설명
song 오디오(mp3는 그 별칭이며 기본값이고, 응답에서는 항상 song으로 돌려씁니다)
wav WAV 파일. WAV 생성/조회 API로 먼저 준비해야 합니다
video 영상(mp4는 별칭)
midi 분리한 스템의 MIDI. 분리가 끝난 스템에만 유효하며 MIDI 가져오기 API를 참고하세요
cover 커버 이미지(image는 별칭)
lyrics 가사 텍스트(.txt). download-file / GET /api/music/download로만 받을 수 있고, download-url은 가사 주소를 반환하지 않습니다
timestamped_lyrics 타임라인 가사 파일(.lrc, 별칭 lrc). 현재 일부 곡만 지원합니다. success:false가 반환되면 타임라인 가사 API로 타임라인을 받아 직접 생성하세요

1) 미디어 주소 가져오기

curl -X POST https://www.suno-api.io/api/music/download-url \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_id": "song_id", "kind": "song"}'
{
  "code": 200,
  "message": "success",
  "data": {
    "song_id": "song_id",
    "kind": "song",
    "url": "https://media.suno-api.io/assets/song_id-mp3.mp3",
    "nav_url": "https://media.suno-api.io/assets/song_id-mp3.mp3?...&response-content-disposition=attachment..."
  }
}
파라미터 타입 필수 설명
song_id string 예 본인 소유의 곡 ID
kind string 아니오 위 표 참고, 기본값은 song
refresh boolean 아니오 true를 넘기면 리소스를 강제로 다시 준비합니다(예: CDN의 파일이 회수된 뒤)

url은 재생이나 직접 옮겨 저장할 때 씁니다. nav_url에는 Content-Disposition: attachment가 붙어 있어 브라우저 주소창에 그대로 붙여 내려받기에 적합합니다(일부 모바일 브라우저가 blob 다운로드를 지원하지 않을 때 사용하세요).

⚠️ 주소 유효 기간: 7일, 기한 내에 옮겨 저장하세요

url / nav_url은 플랫폼 오브젝트 스토리지를 가리키며 기본 7일 후 만료됩니다(파일이 회수되고 이전 주소는 404를 반환합니다). 이 7일 안에 자체 스토리지로 옮겨 저장하세요.

만료된 뒤에도 곡을 다시 생성할 필요는 없습니다. POST /api/music/download-url을 다시 호출하거나 refresh에 true를 넘기면 해당 곡의 새로운 유효 주소를 받습니다. 이 엔드포인트 묶음 자체는 무료이고 추가 과금이 없습니다.

2) 단일 파일 직접 다운로드

curl -X POST https://www.suno-api.io/api/music/download-file \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_id": "song_id", "kind": "song"}' \
  -o song.mp3

응답 본문은 파일 스트림(JSON이 아님)이고 Content-Disposition에 파일명이 들어 있습니다. 가사와 타임라인 가사는 이 엔드포인트로만 받을 수 있습니다(download-url은 미디어 주소만 반환하고 가사는 반환하지 않습니다). .lrc 파일은 현재 일부 곡만 지원합니다. success:false가 반환되면 다음 절의 타임라인 가사 API 방식으로 .lrc를 직접 생성하세요. 재시도는 필요 없습니다.

타임라인 가사(.lrc) 가져오는 방법

어떤 곡에나 통하는 2단계를 권장합니다.

1단계: 단어별 타임라인 가져오기(무료)

curl -X POST https://www.suno-api.io/api/lyrics/timeline \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "suno-v6", "song_id": "song_id"}'

반환값은 그대로 배열입니다(data 래퍼가 없습니다). 각 요소는 {"word": "…", "start_s": 1.117, "end_s": 8.138, "success": true, "p_align": 0.99} 형태입니다. word에는 이미 줄바꿈이 들어 있으니 줄 단위로 나눌 수 있습니다. 필드 의미와 연주 구간 제외 같은 주의점은 타임라인 가사 API의 "필드 설명"과 "사용 시 주의"를 참고하세요.

2단계: start_s로 .lrc 직접 만들기(시간 형식 [mm:ss.cc])

def to_lrc(segments):
    lines = []
    for seg in segments:
        text = seg["word"].strip()
        if not text:
            continue
        start = max(0.0, float(seg["start_s"]))
        cs = int(start * 100 + 0.5)
        lines.append(f"[{cs // 6000:02d}:{(cs % 6000) // 100:02d}.{cs % 100:02d}]{text}")
    return "\n".join(lines)

GET /api/music/download?song_id=<id>&kind=lrc로도 서버가 만든 .lrc를 바로 내려받을 수 있지만 현재 일부 곡만 지원합니다. success:false가 반환되면 위 방식으로 직접 생성하세요. 재시도는 필요 없고 과금에도 영향이 없습니다.

3) 묶음 다운로드

curl -X POST https://www.suno-api.io/api/music/download-all \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_ids": ["song_id_1", "song_id_2"]}' \
  -o songs.zip

song_id(단일)와 song_ids(일괄, 최대 50개) 중 하나를 사용합니다. 응답 본문은 ZIP 파일 스트림입니다.

4) 안정적인 다운로드 주소

GET /api/music/download?song_id=<id>&kind=<kind>는 곡 응답에 바로 들어 있는 다운로드 진입점입니다. API 키와 로그인 세션을 모두 허용하고 동작은 download-file과 동일하므로, 클라이언트나 서드파티 플레이어에 고정으로 넣기에 적합합니다.

5) 생성 중 미리듣기

curl -X POST https://www.suno-api.io/api/music/generation-stream-url \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_ids": ["song_id_1", "song_id_2"]}'
{
  "code": 200,
  "message": "success",
  "data": {
    "items": [
      {
        "song_id": "song_id_1",
        "url": "https://media.suno-api.io/assets/song_id_1-mp3.mp3",
        "expires_at": 0,
        "content_type": "audio/mpeg",
        "playable_until_completed": false,
        "mode": "mp3",
        "ranges": true
      }
    ]
  }
}
파라미터 타입 필수 설명
song_id string 아니오 단일 곡 ID
song_ids string[] 아니오 일괄, 최대 24개(자동 분리 배치의 스템 수 상한)

playable_until_completed가 true이면 생성 중인 곡의 임시 미리듣기 주소라는 뜻입니다. 곡이 완성되면 정식 주소로 바꿔 쓰세요. 한 곡이 실패하면 그 항목에 error 필드가 붙고 나머지 곡은 평소처럼 반환됩니다.

주의 사항

다음Free2 다운로드 API

API 키 발급

가입 후 콘솔에서 API 키를 만들 수 있습니다. 1회 0.6위안으로 2곡이 생성되고, 다운로드는 횟수 제한이 없으며 휴대폰 번호는 필요하지 않습니다.

API 키 받기 개요로 돌아가기