音声クローンと指定音声での生成 API(非推奨)

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

⛔ 旧系統のため、新規接続には推奨しません。 本ページは初期の persona 系統(voice_task_id / generate-with-voice)を扱います。現在も利用できますが、対外的には推奨していません。左側のナビゲーションでも「非推奨」と表示しています。

新規接続には【推奨】音色クローン API をご利用ください。1 本のボーカルサンプルから音色を作成し(POST /api/music/voice-profile/create)、その音色で指定した楽曲をカバーしたり、新しい歌を歌わせたりできます。音色はファーストクラスのリソースで、一覧・取得・削除ができ、元の音声も永久に保持されます。

「音色を作成 → 長期的に再利用 → カバー」という一連の流れが必要な製品では、新しい系統を優先してください。

重要: クローンした音声は期限切れになることがあります。

音声クローンで生成される voice_id / voice_task_id は、永続的に使えるリソースではありません。有効期限、アカウントの状態、音声の状態の変化によって使えなくなることがあります。連携側は、初回のクローンに成功したあと、ローカルにキャッシュした音声 ID をそのまま永久に使い回してはいけません。

推奨する運用:

  • voice_task_id、voice_id、is_available、updated_at、直近の生成成功時刻を保存する。
  • クローン音声で生成する前に、毎回 GET /api/voice/clone/tasks/{voice_task_id} または POST /api/voice/clone/tasks/{voice_task_id}/check を呼び、is_available=true を確認する。
  • 音声が利用できない、タスクが存在しない、selected voice is not ready などのエラーが返ったら、ユーザーに再クローンまたは別の利用可能な音声の選択を促す。
  • クローン音声をエンドユーザーへ「永久資産」として約束しない。製品の画面で「音声は期限切れになることがあり、再検証または再クローンが必要です」と案内する。

インターフェースの説明

本グループのインターフェースは、再利用可能な音声を作成し、その音声で楽曲を生成するためのものです。呼び出し側はプラットフォームが発行する API Key を使うだけで、タスク投入・状態同期・課金・ダウンロードはサーバー側が一括して処理します。

認証方式: Authorization: Bearer YOUR_API_KEY

課金:

呼び出しフロー

  1. POST /api/voice/clone/validate を呼び、元音声をアップロードして voice_task_id を取得します。
  2. GET /api/voice/clone/tasks/{voice_task_id} を待つかポーリングし、validate_info を取得します。
  3. ユーザーが validate_info を読み上げて検証音声を録音します。
  4. POST /api/voice/clone/tasks/{voice_task_id}/generate を呼び、検証音声を提出します。
  5. POST /api/voice/clone/tasks/{voice_task_id}/check を呼ぶかタスクを照会し続けて、is_available=true になるまで待ちます。
  6. POST /api/music/generate-with-voice を呼び、その音声で楽曲を生成します。
  7. 生成インターフェースはまずプレースホルダータスクを返します。楽曲の生成が完了して実際の song_id を取得したら、ダウンロードインターフェースで単体ファイルまたは一括ファイルを取得できます。
  8. (任意)この音声が不要になったら DELETE /api/voice/clone/voices/{voice_task_id} で削除します。意味は第 6 節をご覧ください。

ほかにワンステップ・クローンもあります。ワークスペースの初回録音/元音声アップロード画面で一括完了を選ぶと、検証と音色作成を一度に終わらせ、2 本目の検証音声を録音する必要がありません。1 回 5 元で、失敗時は返金されます。

音声タスクのフィールド

フィールド 型 説明
voice_task_id number プラットフォーム内の音声タスク ID。以降のインターフェースはすべてこの ID を使います
voice_id string 楽曲生成に使える音声 ID。タスクが利用可能になると返ります
voice_name string 音声の名前
description string 音声の説明
style string 音声のスタイル
singer_skill_level string 歌唱レベル。よく使う値は beginner、intermediate、professional
language string 元音声の言語。例: zh、en
validate_info string 読み上げる必要がある検証テキスト
validate_status string 検証タスクの状態
voice_status string 音声生成の状態
is_available boolean すでに楽曲生成に使えるかどうか
status string プラットフォームのタスク状態
stage string 現在の段階
error_code string 失敗時のエラーコード
error_message string 失敗の原因
source_duration_seconds number 元音声の長さ(秒)
created_at number 作成タイムスタンプ
updated_at number 更新タイムスタンプ
completed_at number 完了タイムスタンプ

1. 元音声の検証を提出する

エンドポイント: POST /api/voice/clone/validate

Body パラメータ

パラメータ名 型 必須 既定値 説明
voice_url string いいえ - 元音声の音声 URL。file_base64 と二択
file_base64 string いいえ - Base64 音声。voice_url と二択
file_name string いいえ - ファイル名。file_base64 を使う場合は指定を推奨
voice_name string いいえ 自動生成 音声の名前
description string いいえ - 音声の説明
style string いいえ - 音声のスタイル
singer_skill_level string いいえ beginner 歌唱レベル
language string いいえ zh 元音声の言語
vocal_start_s number はい - 有効なボーカルの開始秒
vocal_end_s number はい - 有効なボーカルの終了秒
source_duration_seconds number いいえ - 元音声の総尺(秒)

vocal_end_s - vocal_start_s は最短のボーカル区間の要件を満たす必要があります。明瞭で、目立つ伴奏やノイズのないボーカル録音をアップロードしてください。

リクエスト例

curl -X POST https://www.suno-api.io/api/voice/clone/validate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "voice_url": "https://example.com/source-voice.wav",
    "voice_name": "私の中国語女性ボイス",
    "description": "澄んで自然な中国語の女性ボイス",
    "style": "Mandopop",
    "singer_skill_level": "intermediate",
    "language": "zh",
    "vocal_start_s": 1.2,
    "vocal_end_s": 18.5,
    "source_duration_seconds": 20
  }'

レスポンス例

{
  "success": true,
  "message": "",
  "data": {
    "voice": {
      "voice_task_id": 123,
      "voice_name": "私の中国語女性ボイス",
      "language": "zh",
      "validate_status": "submitted",
      "is_available": false,
      "status": "validate_submitted",
      "stage": "validate_submitted",
      "created_at": 1780480000,
      "updated_at": 1780480000
    }
  }
}

2. 音声タスクを照会する

エンドポイント: GET /api/voice/clone/tasks/{voice_task_id}

リクエスト例

curl https://www.suno-api.io/api/voice/clone/tasks/123 \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンス例

{
  "success": true,
  "message": "",
  "data": {
    "voice": {
      "voice_task_id": 123,
      "voice_name": "私の中国語女性ボイス",
      "validate_info": "ここで返る検証テキストを読み上げてください",
      "validate_status": "success",
      "is_available": false,
      "status": "validate_ready",
      "stage": "validate_callback"
    }
  }
}

3. 検証テキストを再生成する

エンドポイント: POST /api/voice/clone/tasks/{voice_task_id}/regenerate

検証テキストが読み上げに適さない場合や、検証をやり直したい場合に呼び出します。

curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/regenerate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

4. 検証音声を提出して音声を作成する

エンドポイント: POST /api/voice/clone/tasks/{voice_task_id}/generate

Body パラメータ

パラメータ名 型 必須 既定値 説明
verify_url string いいえ - 検証テキストを読み上げた音声の URL。file_base64 と二択
file_base64 string いいえ - Base64 の検証音声。verify_url と二択
file_name string いいえ - ファイル名。file_base64 を使う場合は指定を推奨
voice_name string いいえ タスクの名前 音声の名前
description string いいえ タスクの説明 音声の説明
style string いいえ タスクのスタイル 音声のスタイル
singer_skill_level string いいえ タスクの設定 歌唱レベル

リクエスト例

curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "verify_url": "https://example.com/verify-voice.wav",
    "voice_name": "私の中国語女性ボイス"
  }'

5. 音声が利用可能か確認する

エンドポイント: POST /api/voice/clone/tasks/{voice_task_id}/check

curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/check \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

タスクが利用可能になると、レスポンスの is_available が true になり、voice_id が返ります。

6. 音声を削除する

エンドポイント: DELETE /api/voice/clone/voices/{voice_task_id}

課金: 無料。

curl -X DELETE https://www.suno-api.io/api/voice/clone/voices/123 \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンス例

{
  "success": true,
  "message": "",
  "data": {
    "voice_task_id": 123,
    "deleted": true
  }
}
フィールド 型 説明
voice_task_id number 削除された音声タスク ID
deleted boolean 常に true。削除要求が受理されたことを表します

削除するとどうなるか

7. クローン音声で楽曲を生成する

エンドポイント: POST /api/music/generate-with-voice

課金: 1 回 1.2 元。

Body パラメータ

パラメータ名 型 必須 既定値 説明
voice_task_id number はい - 利用可能になった音声タスク ID
voice_id string いいえ - 任意の検証用フィールド。渡す場合はタスクの voice_id と一致している必要があります
customMode boolean いいえ false false は簡易モード、true は詳細モード
prompt string はい - 簡易モードでは楽曲の説明、詳細モードでは歌詞。どちらのモードでも空にはできません
style string 詳細モードでは必須 - スタイルタグ。customMode=true のときは空にできません
title string 詳細モードでは必須 - 楽曲のタイトル。customMode=true のときは空にできません
negativeTags string いいえ - 除外したいスタイル
instrumental boolean いいえ false 互換フィールド。クローン音声の生成は常にボーカル曲として扱われます
waitAudio boolean いいえ false 互換フィールド。本インターフェースは常に非同期でプレースホルダータスクを返し、音声の完成を待ちません
model string いいえ suno-v6 通常の楽曲生成モデル。suno-v6、suno-v6-wild、suno-v6-mini が使えます
vocalGender string いいえ - ボーカルの性別の希望
lyricsMode string いいえ - 互換フィールド。現在のクローン音声の投入経路は歌詞モードを単独では変更しません
weirdnessConstraint number いいえ - 創造性の強さ
styleWeight number いいえ - スタイルの重み
audioWeight number いいえ プラットフォームの既定 Audio Influence(音声の参照度)。範囲は 0.0〜1.0。渡さない場合はプラットフォームの既定(公式画面の 25% 相当)で処理されます。0 は有効な値で、参照元へまったく寄せないことを意味します。これは下の sourceClipId と強く関係します。参照元を渡すと参照音声を指し、渡さないとクローン音色を指します。プラットフォームには両方を兼ねるこの 1 本のスライダーしかないため、用途別に 2 つのパラメータへ分けないでください
sourceClipId string いいえ - 参照元楽曲の実際のワークスペース clip ID。渡すとクローン音声でのカバーになり、渡さないと通常のクローン音声生成になります
sourceAudioUrl string いいえ - 参照元の表示用フィールド。所有権やアカウントの判定には関与せず、サーバーはデータベースの記録を基準にします
sourceTitle string いいえ - 参照元の表示用フィールド。所有権やアカウントの判定には関与しません
clientSubmissionId string いいえ - Create UI の互換フィールド。お客様 API で確実に重複排除するには Idempotency-Key ヘッダーを使ってください

suno-v6、suno-v6-wild、suno-v6-mini に対応しています。モデルが空の場合は suno-v6 として処理されます。旧 V5/V5.5 モデルは終了しましたが、過去のタスクには古いモデル名が残っていることがあります。

共有のリクエスト構造は task、soundType、soundLoop、soundBpm、soundKey、voiceTaskId、voiceId などの Create UI 互換フィールドも解釈しますが、これらは本インターフェースの有効なお客様パラメータではありません。音声タスクは必ず voice_task_id で渡し、任意の音声検証は voice_id で渡す必要があり、音声での楽曲生成が sound 系フィールドを読むことはありません。

生成パラメータの記入方法

Header パラメータ

Header 必須 説明
Authorization: Bearer ... はい お客様 API トークン
Content-Type: application/json はい JSON リクエストボディ
Idempotency-Key いいえ(強く推奨) 最長 128 文字。同じユーザー、Token、エンドポイント、Key、リクエストボディでは、課金とタスク作成は 1 回だけ行われます

Idempotency-Key の挙動:

sourceClipId でのカバー条件

お客様 API の参照元カバーは、参照元楽曲へのアクセスをサーバー側が一括して処理するため、お客様がアカウント情報を渡す必要はありません。利用可否は実際のレスポンスで判断してください。

参照元は現在の API ユーザーに属し、完了済みで pending: ではないワークスペースの楽曲で、利用可能な音声を持つ必要があります。通常生成、通常アップロードの参照元、強化アップロードの最終楽曲に対応します。強化アップロードの中間レコードは課金前に拒否されます。サーバーはお客様が提出した参照元楽曲 ID のみを受け付け、アカウント ID は受け付けません。参照元が利用できない、または未完了の場合は課金前にエラーを返します。

リクエスト例

curl -X POST https://www.suno-api.io/api/music/generate-with-voice \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "voice_task_id": 123,
    "customMode": true,
    "prompt": "夏の夜の海辺を歌った中国語ポップスを書いてください",
    "style": "Mandopop, warm piano, emotional",
    "title": "夏の夜の潮風",
    "negativeTags": "noise, low quality",
    "instrumental": false,
    "model": "suno-v6"
  }'

レスポンス例

{
  "success": true,
  "message": "",
  "data": {
    "client_request_id": "cu_1780480000_abcd1234",
    "items": [
      {
        "placeholder_id": "pending:cu_1780480000_abcd1234:0",
        "client_request_id": "cu_1780480000_abcd1234",
        "client_request_index": 0,
        "status": "submitted",
        "type": "voice_generate",
        "title": "夏の夜の潮風",
        "prompt": "夏の夜の海辺を歌った中国語ポップスを書いてください"
      },
      {
        "placeholder_id": "pending:cu_1780480000_abcd1234:1",
        "client_request_id": "cu_1780480000_abcd1234",
        "client_request_index": 1,
        "status": "submitted",
        "type": "voice_generate",
        "title": "夏の夜の潮風",
        "prompt": "夏の夜の海辺を歌った中国語ポップスを書いてください"
      }
    ],
    "pre_consumed_quota": 600000,
    "billing_source": "wallet"
  }
}

プレースホルダータスクと最終的な song_id について

generate-with-voice は非同期の生成インターフェースです。成功レスポンスは生成タスクを受け付けたことだけを意味し、楽曲の生成が完了したことを意味しません。

レスポンスの主なフィールドの意味:

フィールド 説明
client_request_id 今回の生成リクエストの追跡 ID。1 回のリクエストで通常 2 曲が生成され、両方の結果が同じ client_request_id を使います。
items[].placeholder_id プラットフォーム側のプレースホルダー ID。通常は pending:{client_request_id}:{index} の形式です。最終的な楽曲 ID ではありません。
items[].client_request_index 同じリクエスト内の結果番号。通常は 0 と 1 です。
items[].status 提出直後の初期状態。例: submitted。その後の成功・失敗は最終的なタスク記録に従います。

注意: pending: で始まる placeholder_id は、最終的な song_id として使えず、/api/music/query やダウンロードインターフェースにも直接渡せません。pending:* だけで /api/music/query を呼ぶと空配列 [] が返ることがありますが、これは実際の楽曲がまだ完成していないか、プレースホルダータスクが最終的な楽曲 ID に置き換わっていないためです。

誤った例:

{
  "song_ids": "pending:cu_1780480000_abcd1234:0"
}

正しい流れ:

  1. POST /api/music/generate-with-voice を呼び、音声での楽曲生成タスクを提出します。
  2. レスポンスの client_request_id、items[].placeholder_id、items[].client_request_index を保存します。
  3. GET /api/music/generate-with-voice/results?client_request_id=cu_xxx をポーリングします。
  4. 返ってくる items[].song_id に値が入り、pending: で始まらなくなったら、/api/music/query、/api/music/download-file、/api/music/download-all を呼びます。

現在のバージョンでは公開の照会インターフェースが追加されています:

GET /api/music/generate-with-voice/results?client_request_id=cu_xxx

現在のユーザーに属する同じ client_request_id のタスク結果を返すため、お客様自身で最終的な song_id を照会できます。返るリストでは:

保存しているのが client_request_id または pending:* のプレースホルダー ID だけの場合は、まずこの結果インターフェースを呼んでください。実際の song_id がまだ見つからない場合は、client_request_id を技術サポートへ送って調査を依頼してください。

音声での楽曲生成結果を照会する

エンドポイント: GET /api/music/generate-with-voice/results

課金: 無料。

Query パラメータ

パラメータ名 型 必須 説明
client_request_id string はい generate-with-voice が返したリクエスト追跡 ID

リクエスト例

curl -X GET "https://www.suno-api.io/api/music/generate-with-voice/results?client_request_id=cu_1780480000_abcd1234" \
  -H "Authorization: Bearer YOUR_API_KEY"

生成中のレスポンス例

{
  "success": true,
  "message": "",
  "data": {
    "client_request_id": "cu_1780480000_abcd1234",
    "status": "processing",
    "items": [
      {
        "song_id": "",
        "placeholder_id": "pending:cu_1780480000_abcd1234:0",
        "client_request_id": "cu_1780480000_abcd1234",
        "client_request_index": 0,
        "status": "processing",
        "type": "voice_generate",
        "title": "夏の夜の潮風"
      }
    ]
  }
}

生成完了のレスポンス例

{
  "success": true,
  "message": "",
  "data": {
    "client_request_id": "cu_1780480000_abcd1234",
    "status": "completed",
    "items": [
      {
        "song_id": "song_abc123",
        "client_request_id": "cu_1780480000_abcd1234",
        "client_request_index": 0,
        "status": "completed",
        "type": "voice_generate",
        "title": "夏の夜の潮風",
        "audio_url": "https://...",
        "image_url": "https://...",
        "duration": 180.5
      }
    ]
  }
}

最上位の status の意味

状態 説明
not_found 現在のユーザーでは、その client_request_id のタスク記録がまだ見つかりません
processing 少なくとも 1 つの結果が未完了です。ポーリングを続けてください
completed すべての結果が完了しました。song_id で照会またはダウンロードできます
partial 一部が完了し一部が失敗しました。完了した song_id から処理できます
failed すべての結果が失敗しました。items[].error_message を確認してください

8. 単体ファイルをダウンロードする

エンドポイント: POST /api/music/download-file

Body パラメータ

パラメータ名 型 必須 説明
song_id string はい 楽曲 ID
kind string はい ダウンロード種別: audio、cover、wav、video

リクエスト例

curl -X POST https://www.suno-api.io/api/music/download-file \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "song_id": "song_abc123",
    "kind": "audio"
  }' \
  --output song.mp3

レスポンスはファイルストリームです。Content-Type とファイル名はバックエンドが返す値に従います。

9. 楽曲リソースを一括ダウンロードする

エンドポイント: POST /api/music/download-all

Body パラメータ

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

リクエスト例

curl -X POST https://www.suno-api.io/api/music/download-all \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "song_id": "song_abc123"
  }' \
  --output song.zip

一括ファイルには通常、音声・カバー・metadata.json が含まれます。まだ生成されていない種類のリソースは圧縮ファイルに入りません。

よくあるエラー

message 説明
voice audio is required 元音声の提出時に voice_url も file_base64 も指定されていません
invalid voice task id パス内の音声タスク ID が無効です
voice validation is not ready 検証テキストがまだ取得できていないため、検証音声を提出できません
selected voice is not ready 選択した音声がまだ楽曲生成に使えません(未準備、削除済み、または現在のアカウントに属していません)
selected voice does not match voice task リクエストの voice_id がタスクと一致しません
voice task is required 音声での楽曲生成時に voice_task_id がありません
record not found タスク/楽曲が存在しない、現在の API Key のアカウントに属していない、またはすでに削除されています(音声を削除したあとにこのタスクを照会しても同じものが返ります)

本グループのエラーはすべて HTTP 200 で返ります。成否はレスポンスボディの success フィールドで判断してください(false が失敗で、理由は message)。HTTP ステータスコードだけで判断しないでください。 音声削除の完全な意味(削除後も使えるか、復元できるか)は第 6 節をご覧ください。

次のページ【推奨】音色クローン API

API キーの取得

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

API キーを取得 概要に戻る