client.projects.syncLyrics(...) to re-run sync on any project with updated lyrics, a different model, or a new language.
client.projects.syncLyrics(projectId, body, options?)
Start a new lyrics sync operation.
Lyrics source
Pass alyricsSource object in the request body:
- transcribe
- align
Let the model transcribe lyrics from the audio.
Sync models
Alignment models (use withalign when you have accurate lyrics):
audioshake-alignmentmusicai-alignmentmusicai-alignment-subwordwav2vec2
transcribe):
audioshake-transcriptionelevenlabs-transcriptionmusicai-transcriptionwhisper
End-to-end example
What’s next
- Stems — re-run stem separation before re-syncing
- Tasks — operation handles and abort patterns
- Choose a lyrics sync model — pick the right model
Discover supported models
client.capabilities.get() returns configured model support and authenticated account eligibility. Each model describes its operation, inputAudio, supported workflows, language policy, required features, and suppliedTextHandling. Availability is not a provider uptime guarantee.
Transcription accepts optional lyrics as reference text. The capability response distinguishes provider keyterms from correction after transcription. Reference text does not guarantee identical output. For exact supplied text, choose an eligible alignment model.
Edit existing timings
Useclient.projects.alignments.list(projectId) and .get(projectId, alignmentId) to read typed timing resources. .update(projectId, alignmentId, body) replaces timings without a synchronization job or processing credit hold.
The update body requires the complete alignment and expectedRevision. Add select: true and expectedSelectionRevision to select the saved alignment atomically. .select(projectId, alignmentId, { expectedRevision, expectedSelectionRevision }) selects existing timings. Both revisions protect against concurrent edits. A stale revision returns HTTP 409.
Keep item IDs, text, indexes, singers, and translations when editing. Times are absolute seconds. Every end must be greater than its start. Invalid, negative, or out-of-duration timings are rejected. Legitimate overlapping and duet timings are supported.
See Automate lyric videos for a complete timing edit and conflict handling.