クイックスタート
このガイドは、API キーの発行から最初の 1 曲の生成、進行状況の確認、音源のダウンロード までを 5 分程度で終えられるようにまとめたものです。掲載している例はそのまま実行できます。
現在の既定生成モデルは
suno-v6です。suno-v2からsuno-v5-5までの通常生成 モデルは終了しており、過去のタスクには残っていても新規リクエストには使えません。
ステップ 1:API キーを取得する
- https://www.suno-api.io を開きます。
- API キーを取得 をクリックして登録またはログインします。メールアドレスだけで 登録でき、電話番号は不要です。
- コンソールのトークン管理で新しいキーを作成します。
- キーは一度しか表示されないので、すぐにコピーしてください。最初の有料呼び出しの前に 交換コードで残高をチャージします。
ステップ 2:リクエストを設定する
すべての呼び出しで同じベース URL とヘッダーを使います。
POST https://www.suno-api.io
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
ステップ 3:最初のリクエストを送る
例 1 — 1 行の説明から生成する
曲の説明を書くと、歌詞・メロディ・編曲まで自動で作られます。
curl -X POST https://www.suno-api.io/api/music/create \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"description": "春の訪れを歌った軽快なフォーク",
"model": "suno-v6"
}'
レスポンス例:
[
{
"song_id": "abc123",
"status": "pending",
"song_title": "春の物語",
"description": "春の訪れを歌った軽快なフォーク",
"created_at": "2026-04-22T10:30:00Z"
},
{
"song_id": "def456",
"status": "pending",
"song_title": "春の足音",
"description": "春の訪れを歌った軽快なフォーク",
"created_at": "2026-04-22T10:30:00Z"
}
]
1 回の生成で 2 つの異なるテイクが返るので、良い方を選べます。料金は 1 回 0.6 元です。
例 2 — 生成の進行状況を確認する
返ってきた song_id を照会 API に渡します。
curl -X POST https://www.suno-api.io/api/music/query \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_ids": ["abc123", "def456"],
"model": "suno-v6"
}'
生成中のレスポンス:
[
{
"song_id": "abc123",
"status": "processing",
"song_title": "春の物語",
"progress": "60%"
}
]
完了時のレスポンス:
[
{
"song_id": "abc123",
"status": "completed",
"song_title": "春の物語",
"audio_url": "https://media.code-go.com/assets/abc123-mp3.mp3",
"video_url": "https://media.code-go.com/assets/abc123-mp4.mp4",
"cover_url": "https://media.code-go.com/assets/abc123-cover.jpg",
"duration": 168
}
]
status は pending、submitted、processing を経て completed になります。処理中は
アドレスが空のことがあるため、audio_url の有無ではなく status で判断してください。
ステップ 4:ファイルをダウンロードする
status が completed になったら audio_url をそのまま取得します。MP3 と WAV の
ダウンロードは無制限で、追加料金もありません。編集用に無劣化音源が必要な場合は WAV
API を使ってください。
⚠️ メディア URL は 7 日で失効します。
audio_url(および WAV などのリンク)は当社のオブジェクトストレージから配信されます。7 日以内にご自身のストレージへ保存してください。失効後は古い URL が 404 になりますが、歌曲照会 API を呼び直すと新しい有効な URL を取得できます(再生成は不要、追加課金もありません)。
よくある使い方
動画のBGM
{
"description": "製品紹介動画向けの落ち着いた lo-fi BGM、ボーカルなし、起伏は控えめ",
"instrumental": true,
"model": "suno-v6"
}
instrumental を true にすると、ボーカルなしのインストゥルメンタルのみを生成します。
歌詞とスタイルを指定する
{
"lyrics": "[Verse 1]\n街の灯りがゆっくり消えていく\n\n[Chorus]\n僕らは歩き続ける",
"style": "acoustic pop, 温かい女性ボーカル, 92 BPM",
"model": "suno-v6"
}
完了までポーリングする
import time
import requests
API_KEY = "sk-your-key-here"
BASE = "https://www.suno-api.io"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
created = requests.post(
f"{BASE}/api/music/create",
headers=HEADERS,
json={"description": "春の訪れを歌った軽快なフォーク", "model": "suno-v6"},
).json()
song_ids = [track["song_id"] for track in created]
for _ in range(60):
time.sleep(10)
tracks = requests.post(
f"{BASE}/api/music/query",
headers=HEADERS,
json={"song_ids": song_ids, "model": "suno-v6"},
).json()
if all(track.get("status") == "completed" for track in tracks):
for track in tracks:
print(track["song_title"], track["audio_url"])
break
エラー処理
主なステータスコード
| コード | 意味 | 対応 |
|---|---|---|
| 200 | 成功 | レスポンス本文を読みます |
| 400 | 不正なリクエスト(パラメータの欠落・形式エラー) | リファレンスと突き合わせます |
| 401 | API キーがない、または無効 | Authorization ヘッダーを確認します |
| 403 | 権限なし(多くは残高不足) | アカウントをチャージします |
| 429 | レート制限 | 指数バックオフで再試行します |
| 500 | サーバーエラー | 再試行し、続く場合は問い合わせます |
エラー応答の形式
{
"error": {
"message": "Invalid API key provided",
"type": "invalid_request_error",
"code": "invalid_api_key"
}
}
ベストプラクティス
- キーはサーバー側でのみ使ってください。ブラウザや配布するアプリに含めないでください。
- ポーリング間隔は 10〜15 秒が目安です。詰めすぎないでください。
song_idは保存してください。生成した音源を後から取得する唯一の識別子です。429と500は再試行し、400と401は原因を直してから送ってください。- 失敗した生成は自動で返金されるため、費用は発生しません。