プロモード生成 API

2026-09-18 更新 · Suno-API チーム

インターフェースの説明

プロモードは、歌詞・スタイル・タイトルがすでに決まっていて、歌声やスタイル参考度、生成のランダム度まで制御したい場合に向いています。

エンドポイント: POST /api/music/create/custom

課金: 有料、現在は既定で 1 回 0.6 元。通常は 1 回につき 2 曲が返ります。実際の請求額は現在の管理画面の価格設定に従います。

Max Mode / Variety: 本エンドポイントは任意パラメータ max_mode と variety(0〜4)に対応しています。 max_mode を有効にするとこの 1 回は 2 倍の価格で課金され(0.6 → 1.2 元/回)、variety に追加課金は ありません。両者の意味と書き方は新版 API 概要の「高度なパラメータ」の節をご覧ください。

待ち時間とタイムアウト(重要): 本エンドポイントは同期インターフェースで、レスポンスが返った時点で初めて注文が受理され生成に投入されます。実測では多くのリクエストが 1〜3 秒で返り、約 10% が 30 秒を超え、最長は約 230 秒です。クライアントのタイムアウトは 300 秒以上に設定してください。レスポンスが無いことは未生成を意味せず、タイムアウト直後の再試行は注文の重複と二重課金につながります。 接続が切れた場合は少し後に GET /api/music/songs で確認できます。詳しくは新版 API 概要の「待ち時間とタイムアウト設定」をご覧ください。

リクエストパラメータ

Headers

パラメータ名 型 必須 説明
Authorization string はい Bearer YOUR_API_KEY
Content-Type string はい application/json

Body パラメータ

パラメータ名 型 必須 既定値 説明
model string いいえ suno-v6 対客モデル名: suno-v6、suno-v6-wild、suno-v6-mini
lyrics string いいえ - 歌詞。純音楽のときは空でも可
style_tags string はい - スタイルタグ。複数はカンマ区切りで指定できます
song_title string いいえ - 曲のタイトル
instrumental boolean いいえ false 純音楽を生成するかどうか
negative_tags string いいえ - 避けたいスタイルや効果
vocal_gender string いいえ - 声の性別: m、f、male、female
style_weight number いいえ - スタイル参考度。範囲は 0.0〜1.0
weirdness_constraint number いいえ - ランダム度。範囲は 0.0〜1.0
wait_completion boolean いいえ false 生成完了まで待ってから返すかどうか

高度なパラメータの説明

声の性別 vocal_gender

スタイル参考度 style_weight

生成結果が style_tags をどれだけ参照するかを制御します。値が高いほど、入力したスタイルタグに沿った結果になりやすくなります。

ランダム度 weirdness_constraint

生成結果の変化の大きさと実験性を制御します。値が高いほど変化が大きく、低いほど無難な結果になりやすくなります。

数値パラメータはいずれも 0.0〜1.0 の範囲で、0 も有効な明示値です。フィールドを完全に省略した場合だけが「未指定」を意味します。

入力時は、これらが割合の小数であって百分率の整数ではないことに注意してください。目安: 0.0〜0.3 は保守的、0.4〜0.6 はバランス型、0.7〜1.0 は実験的。明確な好みがなければ 0.5 を使うか、そのまま省略しても構いません。例: weirdness_constraint: 0.5。50 や 50% は書かないでください。

instrumental=true のときは純音楽が生成されるため、歌詞と声の性別は歌唱曲のようには効きません。ボーカルが必要なら false を渡すか、そのフィールドを省略してください。ブール値は JSON の true/false を使い、文字列は使わないでください。

Python リクエスト例

import requests

response = requests.post(
    'https://www.suno-api.io/api/music/create/custom',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={
        'model': 'suno-v6',
        'lyrics': '[Verse]\n夜が海面に降りる\n窓辺をそっと風が過ぎる',
        'style_tags': 'Mandopop, acoustic guitar, warm vocal',
        'song_title': '海辺の夕風',
        'vocal_gender': 'male',
        'style_weight': 0.68,
        'weirdness_constraint': 0.32,
    },
    timeout=300,
)
response.raise_for_status()
songs = response.json()

受理レシートモード(任意)

本エンドポイントもひらめきモード生成 API の受理レシートモードに対応しています。リクエスト本文に "accept_mode": "async"(またはヘッダ X-Accept-Mode: async)を付けると、インターフェースはすぐに 202 と受理番号を返し、生成はバックグラウンドで続きます。進捗は GET /api/music/requests/{request_id} で照会します。

クライアントが長い接続に適さない場合や、タイムアウトで「生成されていない」と誤判定したくない場合に適しています。このパラメータを付けない場合の動作は従来と完全に同じです。

curl -X POST https://www.suno-api.io/api/music/create/custom \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --max-time 300 \
  -d '{
    "style_tags": "Mandopop, acoustic guitar, warm vocal",
    "song_title": "海辺の夕風",
    "vocal_gender": "male",
    "accept_mode": "async"
  }'

返却構造とポーリング方法はひらめきモード生成 API の「受理レシートモード」の節をご覧ください。

パラメータ検証

次の場合は HTTP 400 を返し、エラー応答の message が無効なフィールドを示します:

テキストフィールドの上限

次のフィールドも超過時は HTTP 400 を返し、生成に入らず、前受金も差し引かれません。数え方は Unicode 文字単位(漢字 1 字は 1 文字)で、前後の空白も含みます:

フィールド 上限
prompt(歌詞。lyrics も可) 3000 文字
style_tags(スタイル。tags、style も可) 1000 文字
negative_tags(除外スタイル) 1000 文字
song_title(タイトル。title も可) 100 文字

エラーメッセージは style_tags must not exceed 1000 characters; received 2772 の形です。先頭の語が超過したフィールド名、末尾が実測文字数なので、400 を受け取ったらこの 2 つの数字でそのまま削ればよく、フィールドを一つずつ試す必要はありません。共通の決まりは新版 API 概要の「テキストフィールドの上限」にあります。

レスポンス結果

通常は 2 曲を含む配列を返します。非同期リクエストの初期状態は通常 pending なので、song_id を保存し、楽曲照会 API で最終状態と音声アドレスを取得してください。曲のフィールドはひらめきモード生成 API と同じです。

互換フィールド

推奨フィールド 互換フィールド
vocal_gender vocalGender
style_weight styleWeight
weirdness_constraint weirdnessConstraint

新規接続では snake_case に統一してください。同じリクエストで snake_case と camelCase を同時に渡した場合、snake_case の値が優先されます。

次のページスピーチ(Speech)生成 API

API キーの取得

登録後、コンソールで API キーを作成できます。1 回 0.6 元で 2 曲が生成され、ダウンロードは無制限、電話番号は不要です。

API キーを取得 概要に戻る