ソース音声アップロード API
インターフェースの説明
ソース音声アップロードは、ローカルまたはリモートの音声を、以降のカバー・延長・セクション置換・ステム分離などで使えるソース clip としてアップロードします。
エンドポイント: POST /api/music/upload-source
課金: 無料。本エンドポイントはソース音声をアップロードするだけで、生成タスクは開始しません。
推奨の使い方: これは「2 段階カバー」の 1 段目です。 まず本エンドポイントで音声をアップロードし(無料、失敗してもいつでも再試行できます)、返ってきた
clip_idを保存します。アップロードが成功したこと(statusが完了状態)を確認したうえで、 ソース clip からのカバー API を呼び出してカバーを開始してください。この段階のリクエストボディは数百バイトしかないため、 音声が大きすぎて転送中に切れることはありません。一括型のアップロード後カバー APIと比べて、 この分割方式は音声が大きい、ネットワークが不安定、同じ素材を何度も使い回す(延長 / 置換 / ステム分離)場合により安定します。
大きなファイルのアップロードのヒント
| 状況 | 推奨する方法 |
|---|---|
| 音声がすでに公開されている(https の直リンクがある) | file_url を使う: リクエストボディは数百バイトで最も安定 |
| ローカルファイル(Node / Python / デスクトップ) | multipart でアップロード(-F "file=@source.mp3")し、Content-Type を手動で設定しない |
| JSON + base64 しか使えない | Content-Length はバイト数(Buffer.byteLength)にすること。そうしないとリクエストボディが切れる可能性があります |
アップロード完了後は、必ずレスポンスの status が完了状態であることを確認し、clip_id を保存してから 2 段目に進んでください。
アップロードに失敗しても課金されず、生成タスクも作られません。そのまま再試行してください。
リクエストパラメータ
Headers
JSON リクエスト:
| パラメータ名 | 型 | 必須 | 説明 |
|---|---|---|---|
| Authorization | string | はい | Bearer YOUR_API_KEY |
| Content-Type | string | はい | application/json |
multipart リクエストでは Content-Type を手動で指定しないでください。クライアントが自動生成します。
ボディパラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
| model | string | いいえ | suno-v6 | 対客モデル名: suno-v6、suno-v6-wild、suno-v6-mini |
| file_url | string | いいえ | - | リモート音声 URL |
| file_base64 | string | いいえ | - | Base64 音声 |
| file_name | string | いいえ | - | ファイル名 |
| upload_type | string | いいえ | file_upload | アップロード種別 |
JSON リクエスト例
curl -X POST https://www.suno-api.io/api/music/upload-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"file_url": "https://example.com/source.mp3",
"file_name": "source.mp3",
"upload_type": "file_upload"
}'
multipart リクエスト例
curl -X POST https://www.suno-api.io/api/music/upload-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@source.mp3" \
-F "file_name=source.mp3" \
-F "upload_type=file_upload" \
-F "model=suno-v6"
レスポンス結果
{
"clip_id": "uploaded_clip_id",
"status": "complete",
"title": "source.mp3",
"image_url": "https://...",
"audio_url": "https://...",
"display_tags": "pop, vocal",
"inferred_description": "uploaded source audio",
"clip_metadata": {}
}