빠른 시작 가이드

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

이 문서는 API 키를 발급받아 첫 곡을 생성하고, 진행 상황을 조회해 음원을 내려받기까지의 전체 과정을 5분 안에 끝내는 것을 목표로 합니다.

모든 예시는 그대로 복사해 실행할 수 있습니다.

현재 기본 생성 모델은 suno-v6입니다. suno-v2부터 suno-v5-5까지의 일반 생성 모델은 종료되었으며, 과거 작업에는 남아 있을 수 있지만 새 요청에는 사용할 수 없습니다.

1단계: API 키 발급

  1. https://www.suno-api.io 에 접속합니다.
  2. API 키 받기를 눌러 가입하거나 로그인합니다. 이메일 주소만 있으면 되고 휴대폰 번호는 필요하지 않습니다.
  3. 콘솔의 토큰 관리에서 새 키를 만듭니다.
  4. 키는 한 번만 표시되므로 즉시 복사하세요. 첫 유료 호출 전에 교환 코드로 잔액을 충전합니다.

2단계: 요청 설정

모든 호출은 동일한 기본 URL과 헤더를 사용합니다.

POST https://www.suno-api.io
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

3단계: 첫 요청 보내기

예시 1 — 한 줄 설명으로 생성

곡을 설명하면 가사, 멜로디, 편곡까지 자동으로 만들어집니다.

curl -X POST https://www.suno-api.io/api/music/create \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "봄날의 첫날을 노래한 경쾌한 포크",
    "model": "suno-v6"
  }'

응답 예시:

[
  {
    "song_id": "abc123",
    "status": "pending",
    "song_title": "봄의 이야기",
    "description": "봄날의 첫날을 노래한 경쾌한 포크",
    "created_at": "2026-04-22T10:30:00Z"
  },
  {
    "song_id": "def456",
    "status": "pending",
    "song_title": "봄의 발걸음",
    "description": "봄날의 첫날을 노래한 경쾌한 포크",
    "created_at": "2026-04-22T10:30:00Z"
  }
]

1회 생성에 서로 다른 두 가지 버전이 반환되므로 더 마음에 드는 쪽을 고르면 됩니다. 비용은 1회 0.6위안입니다.

예시 2 — 생성 진행 상황 조회

반환된 song_id 값을 조회 API에 전달합니다.

curl -X POST https://www.suno-api.io/api/music/query \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "song_ids": ["abc123", "def456"],
    "model": "suno-v6"
  }'

생성 중일 때:

[
  {
    "song_id": "abc123",
    "status": "processing",
    "song_title": "봄의 이야기",
    "progress": "60%"
  }
]

완료되었을 때:

[
  {
    "song_id": "abc123",
    "status": "completed",
    "song_title": "봄의 이야기",
    "audio_url": "https://media.code-go.com/assets/abc123-mp3.mp3",
    "video_url": "https://media.code-go.com/assets/abc123-mp4.mp4",
    "cover_url": "https://media.code-go.com/assets/abc123-cover.jpg",
    "duration": 168
  }
]

status는 pending, submitted, processing을 거쳐 completed로 이동합니다. 작업이 진행 중일 때는 주소가 비어 있을 수 있으므로, audio_url의 유무가 아니라 status를 기준으로 판단하세요.

4단계: 파일 다운로드

status가 completed가 되면 audio_url을 그대로 요청하면 됩니다. MP3와 WAV 다운로드는 횟수 제한이 없고 추가 비용도 없습니다. 추가 편집을 위해 무손실 원본이 필요하면 WAV API를 사용하세요.

⚠️ 미디어 URL은 7일 후 만료됩니다. audio_url(및 WAV 등 미디어 링크)은 당사 오브젝트 스토리지에서 제공됩니다. 7일 이내에 자체 저장소로 옮겨 보관하세요. 만료 후에는 기존 링크가 404가 되지만, 곡 조회 API를 다시 호출하면 새로운 유효 URL을 받을 수 있습니다(재생성 불필요, 추가 과금 없음).

자주 쓰는 시나리오

영상 배경 음악

{
  "description": "제품 소개 영상용 잔잔한 로파이 배경 음악, 보컬 없음, 기복이 크지 않음",
  "instrumental": true,
  "model": "suno-v6"
}

instrumental을 true로 설정하면 보컬 없이 연주만 생성됩니다.

직접 쓴 가사와 스타일 지정

{
  "lyrics": "[Verse 1]\n도시의 불빛이 천천히 흐려져\n\n[Chorus]\n우리는 계속 걸어가",
  "style": "acoustic pop, 따뜻한 여성 보컬, 92 BPM",
  "model": "suno-v6"
}

완료될 때까지 폴링

import time
import requests

API_KEY = "sk-your-key-here"
BASE = "https://www.suno-api.io"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

created = requests.post(
    f"{BASE}/api/music/create",
    headers=HEADERS,
    json={"description": "봄날의 첫날을 노래한 경쾌한 포크", "model": "suno-v6"},
).json()

song_ids = [track["song_id"] for track in created]

for _ in range(60):
    time.sleep(10)
    tracks = requests.post(
        f"{BASE}/api/music/query",
        headers=HEADERS,
        json={"song_ids": song_ids, "model": "suno-v6"},
    ).json()
    if all(track.get("status") == "completed" for track in tracks):
        for track in tracks:
            print(track["song_title"], track["audio_url"])
        break

오류 처리

주요 상태 코드

코드 의미 대응
200 성공 응답 본문을 읽습니다
400 잘못된 요청 — 파라미터 누락 또는 형식 오류 참조 문서와 페이로드를 비교합니다
401 API 키가 없거나 유효하지 않음 Authorization 헤더를 확인합니다
403 권한 없음, 대부분 잔액 부족 계정을 충전합니다
429 요청 제한 초과 지수 백오프로 재시도합니다
500 서버 오류 재시도하고, 계속되면 문의합니다

오류 응답 형식

{
  "error": {
    "message": "Invalid API key provided",
    "type": "invalid_request_error",
    "code": "invalid_api_key"
  }
}

권장 사항

다음 단계

API 키 발급

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

API 키 받기 개요로 돌아가기