---
title: "ACEStep で BGM を生成する（2クレジット）"
method: POST
path: "/api/v1/projects/{projectId}/bgm/generate"
tags: ["projects"]
---

# ACEStep で BGM を生成する（2クレジット）

`POST /api/v1/projects/{projectId}/bgm/generate`

## Request

- Base URL: `https://app.yukkurigen.com`
- URL: `https://app.yukkurigen.com/api/v1/projects/{projectId}/bgm/generate`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

## Path parameters

- `projectId` string, required

## Headers

- `Prefer` 'respond-async'

## Request body

- object
  - `tags` string, required: 音楽スタイルを表すタグ（例: "calm, piano, lo-fi"）
  - `duration` integer: 生成する秒数（30〜240）

## Response `200`

生成成功（同期パス。Prefer なしの呼び出しをサーバが待つ設定で、待つ間にジョブが終わったときも同じ形）

- object
  - `success` boolean
  - `audioUrl` string
  - `durationSec` number
  - `trackId` string
  - `playbackUrl` string: 再生用の署名付き URL（1時間で失効）。保存はしないこと。保存するのは bgm_path の方

## Other responses

- `202`: 非同期ジョブを受け付けた（Prefer: respond-async を付け、サーバの設定でジョブが使えるとき。Prefer なしでサーバが待つ設定のとき、待つ間に終わらなければ Preference-Applied なしで返る）。result.s3AudioUrl は private URL なので playbackUrl は GET /api/v1/projects/{projectId}/bgm から取得すること。
- `400`: リクエスト不正（code: validation_error）
- `401`: 未認証（code: unauthenticated）
- `402`: クレジット不足（code: insufficient_credits）
- `403`: 権限不足（audio:generate / code: insufficient_scope）
- `404`: プロジェクトが見つからない（code: not_found）

---

[API](https://skmtc.dev/yukkurigen/apis/yukkurigen-ai-operated-api.md) · [All operations](https://skmtc.dev/yukkurigen/apis/yukkurigen-ai-operated-api/llms.txt) · [OpenAPI document](https://skmtc.dev/yukkurigen/apis/yukkurigen-ai-operated-api/revisions/ba5f36b016da?raw)
