---
title: Music 1.0
description: Sume Music 1.0에서 텍스트(그리고 선택적 이미지 조건)로 음악을 생성하는 방법을 살펴보세요.
---

프롬프트 기반 음악 생성에는 Music 1.0을 사용하세요. 요청은 텍스트 중심이며
선택적으로 이미지 조건을 지원합니다. 프로바이더 모델 id는 내부에 남습니다.

기본 실행 URL입니다.

```text
POST /v1/music-1.0/generate
```

model-run 별칭입니다(본문은 같습니다).

```text
POST /v1/models/sume/music-1.0/runs
```

공개 모델 id는 `sume/music-1.0`입니다.

## 언제 사용하나요

| 목표 | 방법 |
|---|---|
| 텍스트 → 음악 | `prompt`만 사용합니다 |
| 시각 조건 | `prompt` + 선택적 `image_url` |
| 특정 스타일 피하기 | 제외할 내용을 긍정 `prompt`에 적으세요(예: "no vocals, no spoken word") |

## 프롬프트 작성 (음악 브리프)

Music 1.0은 텍스트 프롬프트와 선택적 이미지 조건을 지원합니다. seed,
temperature, guidance, duration 파라미터는 없습니다. 장면에 맞는 음악을
위해 아래 일곱 축을 구체적으로 작성하세요. 이는 창작 방향이며 결과를
보장하는 설정값은 아니므로 생성된 오디오를 확인해야 합니다.

| 축 | 예시 |
|---|---|
| 감정 (정확하게, 어두운 감정도 허용) | “숨죽인, 약간 멜랑콜리한”, “자랑스럽고 향수 어린”, “건방지고 들뜬” |
| 장르 / 계보 | 네오소울, 드릴, 보사노바, 국악 퓨전, 신스웨이브, 챔버 포크 |
| 숫자로 적은 템포 | “72 BPM”, “142 BPM half-time” |
| 조성과 모드 | “D minor”, “E phrygian”, “G major with a lydian lift” |
| 질감을 붙인 악기 2–4개 | “테이프 워블을 거친 로즈”, “가야금 플럭”, “긴 글라이드의 808” |
| 한 번의 전환점이 있는 구성 | “0:20에 베이스와 클랩만 남기고 0:28에 전체 복귀” |
| 시대 / 프로덕션 | “1998년 프로덕션, 드라이하고 가까운”, “2024년 하이퍼 클린” |

마지막에 한 문장만 붙입니다: “Instrumental, no vocals.” (나레이션 아래에
깔릴 때만 “no spoken word” 추가). 여러 곡을 만들 때는 곡마다 장르, BPM(12
이상), 리드 악기를 바꾸고, 승인된 장면 스틸이 있으면 `image_url`로 전달하세요.
서로 대비되는 장면은 넓은 장르군, 템포, 리드 악기를 바꾸되 사용자가
일관된 스코어를 원하면 연속성을 유지하세요. 정책 거부 시 지적된 내용을
수정하고 음악적 구체성은 보존합니다. 승인된 예산 안에서만 재시도하세요.
`lyrics`의 BPM·구성 설명은 모델이 보고한 메타데이터이며 오디오 측정값이 아닙니다.

```text
Hushed and slightly melancholic neo-soul nocturne, 72 BPM, D minor. Rhodes through tape wow, soft sub bass, brushed snare with rimshots, a single muted trumpet line. Sparse first half; the trumpet answers the Rhodes from 0:12 and the bass thickens for the last pass. Late-night, dry and close, 1998 production. Instrumental, no vocals.
```

## 반드시 지켜야 할 제약

- `duration`이나 `duration_seconds`를 보내지 **마세요**. Music 1.0에서는 인식되지
  않으며 거부됩니다.
- 비어 있지 않은 `negative_prompt`를 보내지 **마세요**. Music 1.0 / Lyria는
  네거티브 프롬프트를 지원하지 않으며, 값이 비어 있지 않으면
  `public_reason=negative_prompt_unsupported`와 함께 HTTP 400을 반환합니다.
  필드를 생략하거나 `""`를 보내세요.
- 프롬프트 최대 길이는 5000자입니다.
- 이미지 URL은 공개 HTTPS여야 합니다. 요청 객체를 재사용하는 클라이언트에서
  이미지 입력을 의도적으로 비울 때만 `image_url`에 `null`을 보내세요.

## 요청 필드

| 필드 | 필수 | 설명 |
|---|---|---|
| `prompt` | 예 | 1~5000자입니다. 제외할 내용도 긍정 프롬프트에 포함하세요. |
| `negative_prompt` | 아니요 | 비어 있지 않으면 지원되지 않습니다. 생략하거나 `""`를 보내세요. |
| `image_url` | 아니요 | 선택적인 공개 HTTPS 이미지 URL이거나, 비우려면 `null`입니다. |
| `metadata` | 아니요 | Job에 저장되는 호출자 메타데이터입니다. 프로바이더로 전달되지 않습니다. |
| `mode` | 아니요 | `async`, `sync`, `subscribe`, `webhook`입니다. |
| `webhook_url` | 아니요 | 웹훅 모드를 위한 공개 HTTPS 콜백입니다. |
| `wait_timeout_seconds` | 아니요 | `sync` / `subscribe`에서 0~30입니다. |

## 음악 Job 만들기

<!-- api-call-example:music-generate -->

이미지 조건을 준 예제입니다.

```bash
curl -X POST https://api.sume.com/v1/music-1.0/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: music-image-001" \
  -d '{
    "prompt": "Cinematic ambient underscore matching the mood of the reference still, instrumental only",
    "image_url": "https://example.com/moodboard.png"
  }'
```

## 폴링하고 결과 가져오기

```bash
curl https://api.sume.com/v1/jobs/job_123/status \
  -H "Authorization: Bearer $SUME_API_KEY"

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

성공하면 `result.artifacts[]`에서 `type`이 `audio`인 오디오 산출물을
읽으세요(보통 `media.sume.com`의 `audio/mpeg`입니다).

## 산출물

완료된 Music 1.0 Job은 Sume가 호스팅하는 오디오 산출물을 반환합니다.

```json
{
  "id": "job_...",
  "status": "completed",
  "result": {
    "artifacts": [
      {
        "id": "artifact_...",
        "type": "audio",
        "url": "https://media.sume.com/artifacts/...",
        "content_type": "audio/mpeg"
      }
    ]
  }
}
```

결과의 Sume 미디어 URL을 사용하세요. 원본 프로바이더 URL은 공개 출력이
아닙니다.

## 가격

접수된 Music 1.0 생성마다 고정 **0.10 USD**입니다. 프롬프트 길이나 선택적 이미지
조건에 따라 달라지지 않습니다.

## 다음

- 폴링과 웹훅은 [Job과 결과](/workflows/jobs-and-results)
- 짧게 복사해 쓰는 플로는 [레시피](/api/cookbook)
