Suno APIキー作成と401エラー解決
Suno APIキーをコンソールで作成し、Authorization: Bearer ... で送信して最初の
リクエストをテストします。401・403・429と安全な保管方法も説明します。
30 秒で始める: コンソールのトークン画面 でキーを作成し、認証付きのクエリを 1 回実行してください。
401の場合は、キーの 欠落、Bearerの後ろの空白、コピー時の改行、削除済みキーを確認します。
API キーとは
API キーはアカウントに紐づくベアラートークンです。残高そのものを使えるため、キーを 持つ人は誰でも残高を消費できます。キーは発行時に一度だけ表示されるので、すぐにコピー して安全な場所に保管してください。
キーの発行
- https://www.suno-api.io にアクセスします。メールアドレスだけで登録でき、電話番号は 不要です。
- コンソールのトークン管理を開きます。
- 新しいキーを作成してコピーします。
キーは sk-… の形式です。紛失したキーは復元できないため、新しく発行して古いキーを
削除してください。
キーの使い方
リクエストヘッダーの形式
すべてのリクエストで Authorization ヘッダーにキーを付けます。
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
例
curl -X POST https://www.suno-api.io/api/music/create \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description": "カフェに合う静かなピアノ曲"}'
認証エラー
401 Unauthorized
ヘッダーがない、形式が違う、またはキーが存在しない場合です。
{
"error": {
"message": "Invalid API key provided",
"type": "invalid_request_error",
"code": "invalid_api_key"
}
}
ヘッダーが正確に Bearer <キー> の形式か(Bearer の後に半角スペース)、キーの末尾に
改行が混ざっていないかを確認してください。
403 Forbidden
キーは存在しますが、このリクエストは許可されていません。多くはキーが無効化されたか、アカウントが停止されています。コンソールでアカウント状態を確認し、原因が分からない場合はサポートにお問い合わせください。
セキュリティの推奨事項
キーをクライアント側のコードに埋め込まない
Web ページ、モバイルアプリ、デスクトップアプリのバイナリにキーを入れないでください。 開発者ツールを開ける利用者なら誰でもキーを読み取り、残高を消費できます。自社サーバー から API を呼び出し、利用者には自社のエンドポイントを公開してください。
環境変数を使う
Linux / macOS
# ~/.bashrc または ~/.zshrc
export SUNO_API_KEY="sk-your-key-here"
# コード内
curl -H "Authorization: Bearer $SUNO_API_KEY" ...
# Python
import os
api_key = os.environ["SUNO_API_KEY"]
.env
# .env ファイル — 必ず .gitignore に追加してください
SUNO_API_KEY=sk-your-key-here
Windows
setx SUNO_API_KEY "sk-your-key-here"
Node.js
require('dotenv').config();
const apiKey = process.env.SUNO_API_KEY;
必要に応じてキーを交換する
キーは 3〜6 か月ごとに、漏えいが疑われる場合はすぐに交換してください。使わなくなったキーは削除します。使っていないキーは、使っていないリスクでしかありません。
レート制限
リクエストはキーごとに制限されています:
| 制限 | 値 | 説明 |
|---|---|---|
| 1 秒あたりのリクエスト数 | 10 | API キーごと |
| 1 分あたりのリクエスト数 | 100 | API キーごと |
| 同時実行の生成タスク | 5 | 同時に走らせられる生成は最大 5 件 |
429 Too Many Requests
制限を超えると API は 429 を返し、応答に retry_after(秒)が含まれることがあります。その時間だけ待ってから再試行してください。リクエスト頻度を下げる、キューに入れる、指数バックオフで再試行する、のいずれかで負荷を平準化してください。
{
"error": {
"message": "Rate limit exceeded, please retry later",
"type": "rate_limit_error",
"code": "rate_limit_exceeded"
}
}
再試行の方針
再試行は明確な失敗に限ります。読み取りタイムアウトや接続タイムアウトの後は再試行しないでください: 生成系エンドポイントは同期方式なので、タイムアウトしていても注文が受理され生成中かもしれません。再試行すると注文が重複し二重課金になります。クライアントのタイムアウトは 300 秒以上にし、接続が切れた場合は GET /api/music/songs で受理済みかどうかを確認してから再送してください。詳しくは新版 API 概要の「待ち時間とタイムアウト設定」をご覧ください。
短い間隔で繰り返さず、指数バックオフで再試行してください。
import time
delay = 1.0
for attempt in range(5):
response = call_api()
if response.status_code != 429:
break
time.sleep(delay)
delay *= 2
よくある質問
API キーの形式は?
sk- で始まり、その後に英数字が続きます。全体で約 50〜60 文字です。
ブラウザから直接呼び出せますか?
技術的には可能ですが、本番では推奨しません。キーがすべての訪問者に見えてしまいます。 自社のバックエンド経由でプロキシしてください。
キーが有効かどうか確認するには?
認証が必要な任意のリクエストを送ってください。200 なら有効、401 なら無効か削除済み
です。
キーを紛失しました。
キーは復元できません。コンソールで新しく発行し、古い項目を削除してください。
1 つのアカウントでキーはいくつ作れますか?
上限はありません。アプリや環境ごとにキーを分けると個別に失効でき、使わなくなったものは削除してください。
キーに有効期限はありますか?
削除するかアカウントを閉じるまで有効です。定期的な交換を推奨します。
利用状況はどう確認しますか?
コンソールにサインインすると、キーごとの利用状況(リクエスト数、消費額、最近のタスク)を確認できます。