모델

음악 생성 API: Sume Music Router와 Lyria 3.5

Sume Music Router는 POST /v1/music-router/generate로 텍스트 프롬프트를 트랙으로 만듭니다. sume/music-auto가 엔진을 고르며, 현재는 Lyria 3.5입니다.

읽는 시간 5분Sume
전체 글

Sume의 음악 생성 API는 Music Router입니다. POST /v1/music-router/generate로 텍스트 프롬프트를 보내면 Sume가 오디오 Job을 만듭니다. model을 생략하거나 sume/music-auto로 지정하면 Sume가 엔진을 고르며, 현재는 Lyria 3.5입니다. lyria-3.5나 lyria-3-pro를 고정해 해당 엔진으로 그대로 전달할 수도 있습니다.

아래 내용은 모두 Music Router 문서 (영문)와 Music 1.0 문서 (영문)에서 가져왔습니다.

API로 음악 트랙을 어떻게 생성하나요?

프롬프트로 Job을 만든 뒤 폴링하고 결과를 가져오세요. 아래 요청은 프로덕션 호스트를 쓰는 문서 예제입니다.

  • POST /v1/music-router/generate는 Job을 만듭니다.
  • GET /v1/jobs/{id}/status는 진행 상황을 알려 줍니다.
  • GET /v1/jobs/{id}/result는 완료된 Job을 반환합니다. 오디오 산출물은 result.artifacts[]에서 type이 audio인 항목을 읽으세요. 보통 media.sume.com의 audio/mpeg입니다.
curl -X POST https://api.sume.com/v1/music-router/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: music-router-001" \
  -d '{
    "model": "sume/music-auto",
    "prompt": "Warm lo-fi hip hop, 84 BPM, C minor. Dusty Rhodes chords, brushed boom-bap drums, a muted trumpet answer at 0:10. A 30-second track. Instrumental, no vocals."
  }'

curl https://api.sume.com/v1/jobs/$JOB_ID/result \
  -H "Authorization: Bearer $SUME_API_KEY"

어떤 모델 id를 보낼 수 있나요?

공개 모델 id는 sume/music-router입니다. 카탈로그는 GET /v1/music-router/models와 GET /v1/music-router/models/{model_id}에 있습니다.

  • sume/music-auto가 기본값입니다. Sume가 엔진을 고르며, 현재는 Lyria 3.5입니다.
  • lyria-3.5와 lyria-3-pro는 해당 엔진으로 그대로 전달되는 명시적 카탈로그 id입니다.
  • 알 수 없는 id는 400 model_not_found와 catalog_url을 반환하며 실패합니다.
  • job.model은 요청한 id를 그대로 돌려주므로 sume/music-auto는 sume/music-auto로 남습니다. job.request.routed_model은 실제로 실행된 엔진을 알려 줍니다(예: lyria-3.5).

Music Router는 어떤 요청 필드를 받나요?

본문은 Music 1.0 본문에 선택 필드 model을 더한 것입니다. seed, temperature, guidance, duration 파라미터는 없습니다.

Music Router (영문)와 Music 1.0 (영문) 기준, 2026-09-25 확인.
필드필수설명
model아니요카탈로그의 라우팅 가능 id입니다. 생략하면 sume/music-auto입니다.
prompt예1–5000자입니다. 제외할 내용은 긍정 프롬프트에 적으세요.
image_url아니요시각 조건을 주는 선택적 공개 HTTPS 이미지입니다. 비우려면 null을 보냅니다.
negative_prompt아니요비어 있지 않으면 지원되지 않습니다. 생략하거나 ""를 보내세요.
metadata아니요Job에 저장되는 호출자 메타데이터입니다. 프로바이더로 전달되지 않습니다.
mode아니요async, sync, subscribe, webhook 중 하나입니다.
webhook_url아니요웹훅 모드를 위한 공개 HTTPS 콜백입니다.
wait_timeout_seconds아니요sync와 subscribe에서 0–30입니다.

트랙의 길이와 스타일은 어떻게 조절하나요?

길이는 프롬프트로 지시하세요. “a 2-minute track”처럼 쓰거나 [0:00-0:30] Intro: … 같은 구간 표시를 넣습니다. Music 1.0 페이지는 Lyria 3.5의 출력을 최대 몇 분 길이의, 구조를 갖춘 완전한 곡으로 설명합니다.

뻔한 음악적 선택을 피하도록, 문서는 장면에 맞춘 브리프를 일곱 가지 축으로 쓰고 마지막에 “Instrumental, no vocals.” 한 문장을 붙이라고 권합니다. 각 축은 창작 방향일 뿐 출력을 보장하는 설정값이 아니므로, 생성된 오디오를 확인하세요.

  • 정확하게 표현한 감정: “hushed, slightly melancholic”.
  • 장르 또는 계보: 네오소울, 보사노바, 신스웨이브.
  • 숫자로 적은 템포: “72 BPM”.
  • 조성과 모드: “D minor”.
  • 질감을 붙인 악기 2–4개: “Rhodes through tape wow”.
  • 전환점 하나를 짚은 구성: “breakdown to bass and claps at 0:20, full return at 0:28”.
  • 시대 또는 프로덕션: “1998 production, dry and close”.

Music Router에서 반드시 지켜야 할 제약은 무엇인가요?

문서에 나온 필수 제약은 다음과 같습니다.

  • duration과 duration_seconds는 거부됩니다. 길이는 프롬프트로 정합니다.
  • 비어 있지 않은 negative_prompt는 public_reason=negative_prompt_unsupported와 함께 HTTP 400을 반환합니다. Lyria가 네거티브 프롬프트를 지원하지 않기 때문입니다. 대신 “no vocals, no spoken word” 같은 제외 사항을 프롬프트에 적으세요.
  • 프롬프트는 최대 5000자입니다.
  • 이미지 URL은 공개 HTTPS여야 합니다.

무엇을 돌려받고, 비용은 얼마인가요?

완료된 Job은 result.artifacts[] 아래에 Sume가 호스팅하는 오디오를 반환합니다. 이 media.sume.com URL을 사용하세요. 원본 프로바이더 URL은 공개 출력이 아닙니다. result.lyrics에는 모델이 보고한 가사나 섹션 구성이 있을 때 담깁니다. 이는 모델이 준 메타데이터이며 오디오를 측정한 값이 아닙니다.

모든 Music Router 모델은 오디오 생성마다 고정 Music 요금을 청구하며, 카탈로그에는 참고용으로 모델별 프로바이더 정가가 나와 있습니다. 현재 요율은 API 요금에 있고, 지갑은 Sume 요금제는 어떻게 동작하나요에서 설명합니다.

Music 1.0을 계속 호출해야 하나요?

새 연동이라면 아닙니다. Music 1.0(sume/music-1.0)은 점진적으로 은퇴합니다. Music 1.0의 경로인 POST /v1/music-1.0/generate와 POST /v1/models/sume/music-1.0/runs는 계속 동작하고 job.model = sume/music-1.0도 그대로 유지하지만, 이제 모든 요청은 Music Router를 거쳐 처리되며 이 경로에서도 job.request.routed_model이 엔진을 알려 줍니다. 문서는 새 연동이라면 라우터를 호출하라고 안내합니다.

Music Router는 Image Router, Video Router의 자매 라우터입니다. 이 둘은 레퍼런스 이미지를 쓰는 이미지 생성과 OpenRouter 호환 영상 API를 참고하세요.

출처

관련 글

작성자 Sume