楽曲照会と履歴 API

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

本ページは無料の照会エンドポイントを 3 つ扱います:

機能 メソッド エンドポイント
指定した楽曲の生成状態と結果を照会 POST /api/music/query
現在のアカウントが生成した楽曲を照会 GET /api/music/songs
指定した楽曲の生成時に保存されたパラメータを照会 GET /api/music/songs/:song_id

生成エンドポイントの受理レシートモード(accept_mode=async)を使った場合、手元にあるのは歌曲 ID ではなく 受理番号です。進捗は GET /api/music/requests/{request_id} で照会し、実際の song_id を取得してから 本ページのエンドポイントに戻ってください。詳しくはひらめきモード生成 API の 「受理レシートモード」をご覧ください。

認証とデータ範囲

3 つのエンドポイントはいずれも同じ API Key で認証します:

Authorization: Bearer YOUR_API_KEY

楽曲履歴は API Key が属する user_id ごとに分離されます。同じメインアカウントで作成した複数の API Key はそのメインアカウントの楽曲履歴を照会できますが、他のユーザーやサブサイトアカウントの楽曲は照会できません。

履歴系エンドポイントは実際に生成された楽曲だけを返します。次は含まれません:


1. 生成状態の照会

1 つまたは複数の楽曲 ID から、現在の生成状態と最終結果を照会します。

エンドポイント:POST /api/music/query

課金:無料。

Headers

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

Body パラメータ

パラメータ名 型 必須 既定値 説明
model string いいえ suno-v6 モデルバージョン
song_ids string はい - 楽曲 ID。複数はカンマで区切ります

リクエスト例

curl -X POST https://www.suno-api.io/api/music/query \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v6",
    "song_ids": "clip_id_1,clip_id_2"
  }'

レスポンス例

[
  {
    "song_id": "clip_id_1",
    "song_title": "曲のタイトル",
    "status": "completed",
    "audio_url": "https://example.com/audio.mp3",
    "video_url": "https://example.com/video.mp4",
    "cover_url": "https://example.com/cover.jpg",
    "lyrics": "歌詞の本文",
    "style_tags": "Mandopop, acoustic",
    "duration": 180.5,
    "model_version": "suno-v6",
    "created_at": "2026-05-21T10:00:00Z"
  }
]

互換性の注意

旧版のドキュメントでは song_ids を配列としている場合があります。現在はカンマ区切りの文字列を推奨しており、実際の呼び出し方法と一致します。

song_ids は実在する楽曲 ID である必要があります。pending: で始まるプレースホルダー ID は最終的な song_id ではなく、本エンドポイントには使えません。プレースホルダー ID だけを照会すると空配列 [] が返ることがあります。

レスポンスの model、model_version、プラットフォームの model_name は過去の値が残ることがあります。新しいタスクには suno-v6、suno-v6-wild、suno-v6-mini を使ってください。suno-v2 〜 suno-v5-5 は提供終了しており、履歴にこれらの名前が現れても、そのモデルを引き続き投入できることを意味しません。

生成タスクが pending、submitted、processing の間は、audio_url、video_url、cover_url が空になることがあり、これはタスク未完了の正常な状態です。アドレスが空ということだけで失敗と判断せず、status とあわせて判断し、状態が完了してから再度照会してください。状態が完了しているのにアドレスが空のままの場合に限り、song_id を添えてテクニカルサポートにご連絡ください。

⚠️ 音声アドレスの有効期間は 7 日です。早めに転送してください

本エンドポイントが返す audio_url、video_url(および WAV などの他のメディアアドレス)はプラットフォームのオブジェクトストレージから提供され、既定で 7 日後に失効します。期限を過ぎるとファイルは回収され、古いアドレスにアクセスすると 404 が返ります。

  • 7 日以内にご自身のストレージへファイルを転送してください。長期利用できるリンクとは考えないでください。
  • アドレスの失効は楽曲の再生成を必要とせず、再度課金もされません。本エンドポイント(POST /api/music/query)をもう一度呼び出せば、その楽曲の新しい有効なアドレスが取得できます。

2. アカウントの楽曲履歴を照会

現在の API Key が属するメインアカウントが生成した楽曲を照会します。独自の楽曲一覧、セレクタ、履歴ページの構築に向いています。

エンドポイント:GET /api/music/songs

課金:無料。

Query パラメータ

パラメータ名 型 必須 既定値 説明
p integer いいえ 1 ページ番号。1 から始まります
page_size integer いいえ 20 1 ページの件数。最大 100
q string いいえ - タイトルの部分一致検索、または完全な楽曲 ID による完全一致検索
status string いいえ - 状態による完全一致フィルタ。例:completed、playable

結果は created_at と内部レコード ID の降順で並び、ページ送りの順序が安定します。

投稿がタイムアウトしたときの見つけ方:生成系エンドポイントは受理前に中間レスポンスを返しません。投稿時にクライアントがタイムアウトした、あるいは接続が切れた場合、その注文はすでに受理され生成されている可能性があります。本エンドポイントを新しい順に一度確認してください。受理済みの楽曲は通常どおり一覧に現れます。本当に無いことを確認してから再投稿し、二重課金を避けてください。詳しくは新版 API 概要の「待ち時間とタイムアウト設定」をご覧ください。

リクエスト例

curl "https://www.suno-api.io/api/music/songs?p=1&page_size=20&status=completed" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンス例

{
  "success": true,
  "message": "",
  "data": {
    "page": 1,
    "page_size": 20,
    "total": 42,
    "items": [
      {
        "song_id": "8e31b3c0-example-song-id",
        "title": "夜の街",
        "status": "completed",
        "generation_type": "custom_generate",
        "model": "suno-v6",
        "duration": 187.42,
        "audio_url": "https://example.com/audio.mp3",
        "image_url": "https://example.com/cover.jpg",
        "created_at": 1784000000,
        "completed_at": 1784000120
      }
    ]
  }
}

返却フィールド

フィールド 型 説明
song_id string 詳細照会に使える実在の楽曲 ID
title string 現在の楽曲タイトル。ユーザーが変更している場合があります
status string 現在の状態
generation_type string 生成タイプ
model string 生成モデル
duration number 音声の長さ(秒)
audio_url string 音声アドレス。未完了時は空のことがあります
image_url string カバーアドレス。空のことがあります
created_at integer 作成時刻。Unix 秒単位のタイムスタンプ
completed_at integer 完了時刻。Unix 秒単位のタイムスタンプ。未完了時は返らないことがあります

一覧エンドポイントはプロンプト、課金フィールド、アカウント情報、生のレスポンスを返しません。プロンプトや生成パラメータが必要な場合は楽曲詳細エンドポイントを呼び出してください。


3. 生成パラメータの照会

楽曲 ID から、生成時にプラットフォームが保存したプロンプト、スタイル、モデル、ソース楽曲などのパラメータを照会します。

エンドポイント:GET /api/music/songs/:song_id

課金:無料。

現在の API Key が属するメインアカウントの楽曲のみ照会できます。他のユーザーやサブサイトアカウントの楽曲は一律で「楽曲が存在しません」として扱われます。

パスパラメータ

パラメータ名 型 必須 説明
song_id string はい 実在の楽曲 ID

リクエスト例

curl "https://www.suno-api.io/api/music/songs/8e31b3c0-example-song-id" \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンス例

{
  "success": true,
  "message": "",
  "data": {
    "song_id": "8e31b3c0-example-song-id",
    "title": "夜の街",
    "status": "completed",
    "generation_type": "custom_generate",
    "model": "suno-v6",
    "duration": 187.42,
    "audio_url": "https://example.com/audio.mp3",
    "image_url": "https://example.com/cover.jpg",
    "video_url": "",
    "wav_url": "",
    "created_at": 1784000000,
    "completed_at": 1784000120,
    "client_request_id": "example-request-id",
    "client_request_index": 0,
    "parameters": {
      "prompt": "雨上がりの街角、再会についての歌詞",
      "style_tags": "Mandopop, acoustic, warm vocal",
      "title": "夜の街",
      "model": "suno-v6",
      "generation_type": "custom_generate",
      "source_song_id": "",
      "source_audio_url": "",
      "custom_mode": null,
      "instrumental": null,
      "negative_tags": null,
      "vocal_gender": null,
      "lyrics_mode": null,
      "wait_audio": null,
      "style_weight": null,
      "weirdness_constraint": null
    },
    "parameter_retention": {
      "core_parameters_available": true,
      "extended_parameters_available": false,
      "sources": [
        "suno_tasks"
      ],
      "unavailable_fields": [
        "custom_mode",
        "instrumental",
        "negative_tags",
        "vocal_gender",
        "lyrics_mode",
        "wait_audio",
        "style_weight",
        "weirdness_constraint"
      ]
    }
  }
}

parameters フィールド

フィールド 型 説明
prompt string 生成プロンプトまたは歌詞
style_tags string スタイルタグ
title string 保存された生成タイトル。通常の履歴タスクでは現在のタイトルしか残らないことがあります
model string 生成モデル
generation_type string 生成タイプ
source_song_id string カバー、延長などのタスクのソース楽曲 ID
source_audio_url string ソース音声アドレス
custom_mode boolean/null カスタムモードかどうか。保存されていない場合は null
instrumental boolean/null 純音楽かどうか。既存の履歴データでは通常、独立して保存されていません
negative_tags string/null 除外スタイル
vocal_gender string/null ボーカルの性別設定
lyrics_mode string/null 歌詞モード。既存の履歴データでは通常保存されていません
wait_audio boolean/null 完全な音声を待ったかどうか。既存の履歴データでは通常保存されていません
style_weight number/null スタイルの重み
weirdness_constraint number/null 創造性/意外性のパラメータ

prompt_view フィールド(プロンプト表示用、2026-09-28 追加)

prompt_view は「プロンプト表示」専用の正規化構造です。生成タイプごとに固定の区画へデータを整理するため、 クライアント側でどのフィールドを表示すべきか判断する必要がなくなります。純粋な追加フィールドであり、従来の フィールド(parameters、parameter_retention)の名前と意味は変わらず、新しいフィールドを解析しない クライアントはまったく影響を受けません。

"prompt_view": {
  "type": "custom_generate",
  "type_label": "プロモード",
  "generation": {
    "model": "suno-v6", "max_mode": false, "duration": 182.4,
    "title": "午前四時#701f37", "title_base": "午前四時", "title_suffix": "701f37",
    "created_at": 1790421721
  },
  "inputs": {
    "user_text": "……", "user_text_kind": "lyrics",
    "user_style": "国潮エレクトロ, 重低音ベース, レトロシンセ",
    "style_tags": "国潮エレクトロ, 重低音ベース, レトロシンセ",
    "style_source": "user", "lyrics": "……",
    "negative_tags": "", "is_instrumental": false
  },
  "extended": {
    "vocal_gender": "m", "style_weight": 0.5, "audio_weight": 0.85,
    "weirdness_constraint": 0.5, "variety": 2, "lyrics_mode": "manual",
    "custom_mode": true
  },
  "reference": { "voice_name": "sv_40_34", "source_song_id": "", "source_title": "" },
  "retention": {
    "recorded_since": "2026-09-28", "missing_reason": "",
    "not_applicable_fields": ["audio_weight"]
  }
}
フィールド 型 説明
type / type_label string 生成タイプの原値 / 表示ラベル(簡易生成、プロモード、サウンドエフェクトモード、音色クローン生成…)
generation.model string 使用したモデル
generation.max_mode bool Max Mode が有効かどうか
generation.duration number 音声の長さ(秒)
generation.title string 保存そのままのタイトル(サフィックスを含むことがあります)
generation.title_base string 末尾の #xxxxxx サフィックスを除いた表示用タイトル
generation.title_suffix string サフィックス自体(# を含みません)。無い場合は空
inputs.user_text string ユーザー入力(タイプにより説明文または歌詞)
inputs.user_text_kind string lyrics / description / cover_requirements
inputs.user_style string ユーザーが自分で入力したスタイル(プロモード、音色、サウンドエフェクト)
inputs.style_tags string 最終的に適用されたスタイル
inputs.style_source string user = ユーザー入力;suno_derived = Suno が説明からまとめたもの
inputs.lyrics string 歌詞の本文。歌詞が無い場合は空、純音楽は [Instrumental]
inputs.negative_tags string 除外スタイル
inputs.is_instrumental bool 純音楽かどうか
extended.* — 拡張パラメータ(下記)。保存されていないフィールドは現れません
reference.voice_name string 音色名(音色系のみ。内部の persona id は返しません)
reference.source_song_id / source_title string カバー、延長などのタスクのソース楽曲
retention.recorded_since string 拡張パラメータの保存を開始した日付(2026-09-28)
retention.missing_reason string 拡張パラメータが無い理由。履歴データは not_recorded_before_20260928
retention.not_applicable_fields string[] その生成タイプに元々不要なパラメータ(「パラメータ欠落」として表示しないでください)

extended に現れうるフィールド:vocal_gender、style_weight、audio_weight、 weirdness_constraint、variety、lyrics_mode、custom_mode、およびサウンドエフェクト系の sound_type / sound_bpm / sound_key / sound_loop。空値は一律で返しません。

表示ルールは 3 つです(推測せず、このとおりに実装してください):

  1. スタイルの出所を区別する:style_source=suno_derived の場合は 「スタイル(Suno があなたの説明からまとめたもの)」と表示し、「あなたが入力したスタイル」と書かないでください;
  2. 内部プロンプトは現れない:音色カバー系はユーザーが入力した【スタイル要件】/【カバー要件】だけを返し、 モデル向けに組み立てる固定の構造部分はどのフィールドにも現れません(履歴データも同様にマスク済み);
  3. 保存されていないパラメータを推測しない:extended に無ければ当時記録されていないので、retention を使って理由を説明してください。

パラメータ保存の説明

parameter_retention は「明示的に空値を渡した」場合と「歴史的にそのフィールドを保存していない」場合を区別するためのものです:

通常の履歴楽曲はプロンプト、スタイル、現在のタイトル、モデル、生成タイプ、ソース楽曲を保存していますが、すべての高度なパラメータを個別には保存していません。プラットフォームは generation_type から欠損値を推測しません。

一部の拡張音楽タスクは元のプロンプト、スタイル、タイトル、モデルに加えて、custom_mode、negative_tags、vocal_gender、style_weight、weirdness_constraint も保存しています。拡張レコードが存在しても、instrumental、lyrics_mode、wait_audio は復元できないことがあります。

楽曲タイトルは後からユーザーが変更できます。通常の履歴タスクで元のタイトルを別途保存していない場合、parameters.title は現在のタイトルのことがあります。拡張タスク記録がある場合は、そこに保存された元の生成タイトルを優先して返します。

存在しない/権限が無い場合

業務エラーは共通のレスポンス封筒を使います。楽曲が存在しない、または現在のアカウントに属さない場合は次を返します:

{
  "success": false,
  "message": "song not found"
}

この業務エラーは現在 HTTP 200 で返されるため、結果は success フィールドで判断してください。API Key の欠落、無効、期限切れ、無効化の場合は HTTP 401 を返します。

セキュリティについて

楽曲履歴と詳細のエンドポイントは次を返しません:

次のページタイムライン歌詞 API

API キーの取得

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

API キーを取得 概要に戻る