タイムライン歌詞 API

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

インターフェースの説明

タイムライン歌詞は、楽曲の単語レベルのタイムスタンプを取得するもので、歌詞の同期表示に使えます。

エンドポイント: POST /api/lyrics/timeline

課金: 無料(読み取り専用の照会で、課金も生成タスクも発生しません)。

返却形式: タイムライン配列をそのまま返します。data / success の外側ラッパーはありません。パースするとそのまま配列です。

リクエストパラメータ

Headers

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

ボディパラメータ

パラメータ名 型 必須 既定値 説明
model string いいえ suno-v6 対客モデル名: suno-v6、suno-v6-wild、suno-v6-mini
song_id string はい - 楽曲 ID

リクエスト例

curl -X POST https://www.suno-api.io/api/lyrics/timeline \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v6",
    "song_id": "clip_id"
  }'

レスポンス結果

以下は本番環境の 189.6 秒・suno-v6 の楽曲の実際の返却です(その回は全 69 段、ここでは先頭と末尾の数段のみ掲載):

[
  {
    "word": "[Intro]\n\n\n[",
    "start_s": 15,
    "end_s": 15.04277,
    "success": true,
    "p_align": 0.99
  },
  {
    "word": "Instrumental: ",
    "start_s": 15.04704,
    "end_s": 15.10264,
    "success": true,
    "p_align": 0.99
  },
  {
    "word": "End]\n\n\n",
    "start_s": 189.16974,
    "end_s": 189.654,
    "success": true,
    "p_align": 0.99
  }
]

フィールド説明

フィールド 型 説明
word string そのセグメントに対応するテキスト。改行を含みます: 歌詞 1 行が 1 段で、段末に \n、段落の間は \n\n になるため、空白だけの内容も現れます
start_s number セグメント開始時刻(秒、小数あり)
end_s number セグメント終了時刻(秒)。最後の段の end_s はほぼ楽曲の長さに等しくなります
success boolean そのセグメントの整列が成功したかどうか
p_align number 整列の信頼度。実測では安定して 0.99

使用上の注意

  1. 外側のラッパーを探さないでください。返却は配列そのもので、{"data": ...} ではなく、success フィールドもありません。
  2. 冒頭にセグメントがないことがあります。前奏だけの楽曲では、実測で 15 秒目から最初のセグメントが現れ、start_s が 0 から始まる保証はありません。カラオケ用途では冒頭の空きをご自身で処理してください。
  3. 器楽・構造マーカーも返ります。[Intro]、[Verse 1]、Instrumental: soft arpeggiating piano, …、[End] のような形で、同じく逐語で時間が付きます。歌詞字幕を作る前に、[ で始まるものや Instrumental を除外することをおすすめします。そうしないと編曲の説明を歌詞として表示してしまいます。
  4. 逐語であって逐行ではありません。同じ 1 行の歌詞が複数のセグメントに分かれることが多く、\n で行にまとめる必要があります。行の時間はその行の最初のセグメントの start_s です。
  5. 段数は楽曲によって異なります。固定段数を前提にしないでください(実測では 189.6 秒の楽曲が 69 段、レスポンスは約 6.5 KB)。

.lrc ファイルの生成

このエンドポイントはタイムラインのデータのみを返し、ファイルは直接返しません。.lrc が必要な場合は、返却された start_s を使って [mm:ss.cc] 形式で行を組み立ててください(word フィールドは改行を含むので行ごとに分割し、空行は飛ばします)。例は楽曲メディアのダウンロードと試聴 APIの「タイムライン歌詞(.lrc)の取得方法」をご覧ください。

以下は器楽・構造マーカーのフィルタ付きの完全な書き方です(1 段 1 行、まずデータ形態を確認するのに向いています):

import re

SKIP = re.compile(r"^\[.*\]$|^Instrumental:")

def to_lrc(segments):
    lines = []
    for seg in segments:
        if not seg.get("success", True):
            continue
        text = (seg.get("word") or "").strip()
        if not text or SKIP.match(text):
            continue
        cs = int(max(0.0, float(seg["start_s"])) * 100 + 0.5)
        lines.append(f"[{cs // 6000:02d}:{(cs % 6000) // 100:02d}.{cs % 100:02d}]{text}")
    return "\n".join(lines)

互換性の説明

旧版ドキュメントでは { success, song_id, lyrics: [...] } のラッパーオブジェクト例が使われていました。現行の新版ドキュメントは、タイムライン配列をそのまま返す形を正とします。

次のページ楽曲商用利用許諾書 API

API キーの取得

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

API キーを取得 概要に戻る