Suno API: Suno V6로 노래 생성하기
Suno V6는 아이디어, 스타일, 또는 직접 쓴 가사로 완성된 노래를 작곡해 부르거나 인스트루멘털을 연주합니다. 이 가이드는 REST API로 호출하는 방법, 비용, 네 가지 입력이 어떻게 맞물리는지를 보여 줍니다.
Suno V6 API로 얻을 수 있는 것
Suno V6는 Suno의 최신 음악 모델입니다. 아이디어, 스타일, 직접 쓴 가사 또는 이들의 조합을 주면 완성된 노래를 작곡해 부르거나 인스트루멘털을 연주합니다. Revana에서는 모델 id suno-v6이며, 모든 영상·이미지 모델과 같은 엔드포인트로 호출합니다.
| 항목 | 상세 |
|---|---|
| 모델 id | suno-v6 |
| 생성물 | 보컬이 있는 노래 또는 인스트루멘털 |
| 작업당 트랙 수 | 같은 요청에 대한 두 가지 테이크 |
| 입력 | prompt, style, lyrics, instrumental |
| 프롬프트 길이 | 최대 3,000자 |
| 가격 | 두 트랙 합쳐 작업당 $0.08 |
| 경로 | 경로 1개 |
Suno API 가격 (2026년 10월)
Suno V6는 초당이나 트랙당이 아니라 작업당 가격입니다. 작업 하나는 $0.08이고 두 트랙을 반환하므로, 완성된 노래 한 곡은 그 절반입니다.
| 작업 | 받는 트랙 | 합계 |
|---|---|---|
| 1 | 2 | $0.08 |
| 10 | 20 | $0.80 |
| 100 | 200 | $8.00 |
| 1,000 | 2,000 | $80.00 |
실패한 작업은 요금이 청구되지 않습니다. 크레딧은 $10부터 시작하는 선불이며 구독은 없습니다. 요금 페이지를 참고하세요.
네 가지 입력과 그 조합 방식
prompt는 원하는 노래를 일상적인 말로 설명합니다. 분위기, 주제, 대상 같은 것들입니다.style는 "lo-fi hip hop, soft piano, vinyl crackle"이나 "upbeat pop punk, female vocals"처럼 장르와 사운드를 지정합니다.lyrics는 직접 쓴, 노래로 불릴 가사입니다.[Verse],[Chorus]같은 섹션 태그를 각각 별도의 줄에 넣으면 모델이 노래의 구성을 잡는 데 도움이 됩니다.instrumental를true로 설정하면 보컬 없는 음악을 만듭니다.
각 요청에는 style 또는 lyrics(또는 둘 다)가 필요합니다. 가사를 부를 사람이 없으므로 instrumental: true는 lyrics와 함께 보낼 수 없으며, 두 규칙 중 하나라도 어긴 요청은 요금이 청구되기 전에 거부됩니다.
노래 생성하기
모델 id와 input와 함께 POST /v1/generations를 보낸 다음, 작업이 succeeded 또는 failed가 될 때까지 폴링하세요. 이 요청은 $0.08입니다.
export REVANA_API_KEY="sr_live_..."
# 1. Submit the job (returns 202 with the generation id)
curl https://api.revana.si/v1/generations \
-H "Authorization: Bearer $REVANA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"input": {
"prompt": "A warm, hopeful song about a small bakery opening before sunrise on a quiet street.",
"style": "acoustic indie folk, male vocals, fingerpicked guitar, light percussion"
},
"max_cost_usd": 0.1
}'
# 2. Poll with the id from step 1 until status is "succeeded" or "failed"
curl https://api.revana.si/v1/generations/gen_01JC2V8K5T \
-H "Authorization: Bearer $REVANA_API_KEY"import os
import time
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
resp = requests.post(f"{API}/generations", headers=HEADERS, json={
"model": "suno-v6",
"input": {
"prompt": "A warm, hopeful song about a small bakery opening before sunrise on a quiet street.",
"style": "acoustic indie folk, male vocals, fingerpicked guitar, light percussion",
},
"max_cost_usd": 0.1,
})
resp.raise_for_status()
job = resp.json()
while job["status"] in ("queued", "running"):
time.sleep(5)
job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()
if job["status"] == "succeeded":
print(job["output"]["urls"], job["cost_usd"])
else:
print("Failed:", job["error"])// Node 18 or later. Save as generate.mjs and run: node generate.mjs
const API = "https://api.revana.si/v1";
const headers = {
Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
"Content-Type": "application/json",
};
const res = await fetch(`${API}/generations`, {
method: "POST",
headers,
body: JSON.stringify({
model: "suno-v6",
input: {
prompt: "A warm, hopeful song about a small bakery opening before sunrise on a quiet street.",
style: "acoustic indie folk, male vocals, fingerpicked guitar, light percussion",
},
max_cost_usd: 0.1,
}),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 5000));
job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}
if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error);{
"id": "gen_01JC2V8K5T",
"model": "suno-v6",
"status": "succeeded",
"output": {
"urls": [
"https://cdn.revana.si/g/gen_01JC2V8K5T/0.mp3",
"https://cdn.revana.si/g/gen_01JC2V8K5T/1.mp3"
]
},
"cost_usd": 0.08,
"attempts": 1,
"error": null,
"created_at": "2026-10-28T10:14:02Z",
"completed_at": "2026-10-28T10:15:31Z"
}output.urls의 두 파일은 같은 요청에 대한 두 가지 테이크입니다. 다음과 같이 API에서 다운로드하세요.
# Each Suno job returns two tracks. Fetch both once the job has succeeded.
curl -L -o take-1.mp3 https://api.revana.si/v1/generations/gen_01JC2V8K5T/content \
-H "Authorization: Bearer $REVANA_API_KEY"
curl -L -o take-2.mp3 https://api.revana.si/v1/generations/gen_01JC2V8K5T/content/2 \
-H "Authorization: Bearer $REVANA_API_KEY"직접 쓴 가사를 부르게 하기
직접 쓴 가사를 Suno가 부르게 하려면 style와 함께 lyrics로 보내세요.
{
"model": "suno-v6",
"input": {
"style": "synth pop, bright female vocals, 112 bpm",
"lyrics": "[Verse]\\nCity lights are coming on\\nEvery window tells a story\\n\\n[Chorus]\\nWe run until the morning\\nWe run until the sun"
},
"max_cost_usd": 0.1
}영상용 인스트루멘털
클립에 깔 배경음악이라면 lyrics를 빼고 instrumental를 설정하세요.
{
"model": "suno-v6",
"input": {
"prompt": "Calm background music for a 30 second product video about a ceramic coffee mug.",
"style": "ambient electronic, soft pads, slow tempo",
"instrumental": true
},
"max_cost_usd": 0.1
}같은 API 키로 영상도 만들 수 있습니다. Suno 트랙을 영상 모델 가이드의 모든 모델의 클립과 함께 쓰거나, 에이전트가 Revana MCP 서버를 통해 둘 다 처리하게 할 수 있습니다.
Suno V6는 모델 페이지에 다른 모든 모델과 함께 나열되어 있으며, 전체 요청 레퍼런스는 문서에 있습니다. API 키를 받아 첫 노래를 만들어 보세요.
자주 묻는 질문
Suno API는 얼마인가요?
2026년 10월 기준 Revana에서 Suno V6는 작업당 $0.08입니다. 각 작업은 두 곡을 반환하며, 실패한 작업은 요금이 청구되지 않습니다.
Suno API는 노래를 두 곡 반환하나요?
네. Suno V6 작업은 모두 같은 요청에 대한 두 가지 테이크를 반환합니다. /v1/generations/{id}/content와 /content/2에서 다운로드하세요.
Suno API에서 직접 쓴 가사를 사용할 수 있나요?
네. 사운드를 위한 style과 함께 lyrics로 보내세요. [Verse], [Chorus] 같은 섹션 태그를 각각 별도의 줄에 넣으면 노래의 구성을 잡는 데 도움이 됩니다.
Suno로 인스트루멘털 음악을 만들 수 있나요?
네. instrumental을 true로 설정하고 prompt와 style에 음악을 설명하세요. 인스트루멘털 요청에는 lyrics를 보내지 마세요.
Suno 프롬프트는 얼마나 길 수 있나요?
최대 3,000자입니다. 더 긴 프롬프트는 요금이 청구되기 전에 거부됩니다.