Vai al contenuto
Riferimento API
Riferimento API

Suno Testi con timestamp

Return a track's lyrics aligned to timestamps.

01

Panoramica

Usa l'endpoint timestamped lyrics e leggi il risultato dalla stessa risposta.

Avvio rapido

  1. Crea una Chiave API e impostala come RUNAPI_API_KEY.
  2. Invia una richiesta POST il cui corpo corrisponde allo schema della richiesta.
  3. Leggi il risultato dal corpo della risposta positiva.

Endpoint

POST /api/v1/timestamped_lyrics
URL di base
https://runapi.ai
Versione API
v1
Autenticazione
Authorization: Bearer YOUR_API_TOKEN
02

Modelli supportati

Apri la pagina di un modello per i prezzi correnti, i limiti di frequenza e i dettagli sull'uso commerciale.

03

Schema della richiesta

Corpo JSON

Invia solo i campi dichiarati per questo endpoint.

Corpo della richiesta2 campi
source_audio_idstring
Obbligatorio

ID audio all'interno del Task sorgente, oppure un ID risorsa audio RunAPI restituito da una richiesta precedente.

source_task_idstring
Opzionale

ID Task RunAPI che ha prodotto l'audio. Richiesto quando il solo ID audio non identifica la sorgente.

04

Risposta di successo

HTTP 200

POST /api/v1/timestamped_lyrics

Schema della risposta
JSON
{
  "properties": {
    "aligned_words": {
      "items": {
        "properties": {
          "end_time": {
            "type": "number"
          },
          "palign": {
            "type": "number"
          },
          "start_time": {
            "type": "number"
          },
          "success": {
            "type": "boolean"
          },
          "word": {
            "type": "string"
          }
        },
        "required": [
          "word",
          "success",
          "start_time",
          "end_time",
          "palign"
        ],
        "type": "object",
        "unevaluatedProperties": false
      },
      "type": "array"
    },
    "billing": {
      "properties": {
        "refund": {
          "oneOf": [
            {
              "properties": {
                "refunded_at": {
                  "type": "string"
                }
              },
              "required": [
                "refunded_at"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "reservation": {
          "oneOf": [
            {
              "properties": {
                "amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "amount_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "settlement": {
          "oneOf": [
            {
              "properties": {
                "amount_micro_cents": {
                  "type": "integer"
                },
                "charged_amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "charged_amount_cents",
                "amount_micro_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        }
      },
      "required": [
        "reservation",
        "settlement",
        "refund"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "hoot_cer": {
      "type": "number"
    },
    "is_streamed": {
      "type": "boolean"
    },
    "waveform_data": {
      "items": {
        "type": "number"
      },
      "type": "array"
    }
  },
  "required": [
    "aligned_words",
    "waveform_data",
    "hoot_cer",
    "is_streamed",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Esempio di risposta

JSON
{
  "aligned_words": [
    {
      "end_time": 0.6,
      "palign": 0.98,
      "start_time": 0.0,
      "success": true,
      "word": "Welcome"
    }
  ],
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "hoot_cer": 0.03,
  "is_streamed": false,
  "waveform_data": [
    0.1,
    0.4,
    0.2
  ]
}
05

Errori

HTTP 401

POST /api/v1/timestamped_lyrics

Schema della risposta
JSON
{
  "properties": {
    "error": {
      "description": "Messaggio di errore leggibile.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Esempio di risposta

JSON
{
  "error": "Authentication required"
}
06

Errori

HTTP 400

POST /api/v1/timestamped_lyrics

Schema della risposta
JSON
{
  "oneOf": [
    {
      "properties": {
        "error": {
          "description": "Messaggio di errore leggibile.",
          "type": "string"
        }
      },
      "required": [
        "error"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    {
      "properties": {
        "error": {
          "description": "Riepilogo di convalida leggibile dall'utente.",
          "type": "string"
        },
        "errors": {
          "additionalProperties": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": "Messaggi di convalida con chiave per campo della richiesta pubblica, con un array di stringhe leggibili dall'utente per ogni campo.",
          "type": "object"
        }
      },
      "required": [
        "error",
        "errors"
      ],
      "type": "object",
      "unevaluatedProperties": false
    }
  ]
}

Esempio di risposta

JSON
{
  "error": "Validation failed",
  "errors": {
    "source_audio_id": [
      "is required"
    ]
  }
}
07

Errori

HTTP 402

POST /api/v1/timestamped_lyrics

Schema della risposta
JSON
{
  "properties": {
    "error": {
      "description": "Messaggio di errore leggibile.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Esempio di risposta

JSON
{
  "error": "Insufficient balance"
}
08

Errori

HTTP 429

POST /api/v1/timestamped_lyrics

Schema della risposta
JSON
{
  "properties": {
    "error": {
      "description": "Messaggio di errore leggibile.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Esempio di risposta

JSON
{
  "error": "API key credit limit exceeded"
}
09

Errori

HTTP 409

POST /api/v1/timestamped_lyrics

Schema della risposta
JSON
{
  "properties": {
    "error": {
      "description": "Messaggio di errore leggibile.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Esempio di risposta

JSON
{
  "error": "The request uses features that are not supported for the selected model"
}
10

Errori

HTTP 429

POST /api/v1/timestamped_lyrics

Schema della risposta
JSON
{
  "properties": {
    "error": {
      "description": "Messaggio di errore leggibile.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Esempio di risposta

JSON
{
  "error": "Rate limit reached. Please retry later."
}
11

Errori

HTTP 503

POST /api/v1/timestamped_lyrics

Schema della risposta
JSON
{
  "properties": {
    "error": {
      "description": "Messaggio di errore leggibile.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Esempio di risposta

JSON
{
  "error": "Service under maintenance, please try again later"
}
12

Errori

HTTP 504

POST /api/v1/timestamped_lyrics

Schema della risposta
JSON
{
  "properties": {
    "error": {
      "description": "Messaggio di errore leggibile.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Esempio di risposta

JSON
{
  "error": "The request timed out"
}
13

Esempi di Codice Generati

Usa cURL direttamente, oppure installa un SDK per il tuo linguaggio. Ogni esempio invia la richiesta validata mostrata in questo riferimento.

Installa

Shell
pip install runapi-suno
PYTHON
import os
from runapi.suno import SunoClient

client = SunoClient(api_key=os.environ["RUNAPI_API_KEY"])
result = client.timestamped_lyrics.run(
  source_audio_id="audio_reference",
  source_task_id="tsk_source_music"
)