Skip to main content
Every transcription job runs in one of four modes, selected by combining the align, review and review_stage parameters. The mode determines what output is produced, how long it takes, and when results are delivered.

Mode comparison


Mode 1 — Transcript only

Set align=false to skip time-alignment entirely. lyrcs.ai transcribes the audio and returns the lyrics as structured text. No LRC or SRT files are generated.
Output fields:
  • results.transcript — lyrics in the original script
  • results.transliteration — phonetic romanisation
  • results.translation — English translation
  • results.cultural_notes — contextual notes (may be null)
What’s missing: results.downloads is not present. No LRC or SRT files. Use cases:
  • Delivering lyric metadata to streaming stores (Spotify, Apple Music, Amazon)
  • Generating liner notes for releases
  • Populating sync licensing databases with searchable lyrics
  • Any workflow where timing is not needed

Mode 2 — Full pipeline

The default. Transcription runs first, then alignment maps each lyric line to a timestamp in the audio.
Output fields:
  • Everything from Mode 1, plus:
  • results.downloads.lrc_original — time-synced LRC in original script
  • results.downloads.lrc_transliterated — time-synced LRC in romanised form
  • results.downloads.srt_original — SRT in original script
  • results.downloads.srt_transliterated — SRT in romanised form
  • results.downloads.words_original — per-word timestamps in original script (JSON)
  • results.downloads.words_transliterated — per-word timestamps in romanised form (JSON)
Word-level JSON is included by default with all aligned jobs (word_align=true). Set word_align=false to skip it and receive only LRC and SRT. Use cases:
  • Karaoke and sing-along applications
  • Lyric display synced to audio playback on streaming platforms
  • Subtitle tracks for music videos
  • Live lyric scrolling on DSPs

Mode 3 — Review after alignment

The default review order. Alignment completes first, then a job.awaiting_review event fires with a review_url. job.complete follows once the reviewer approves. The reviewer sees finished, time-synced lines, which makes this the right choice for QC on timing. Its limit is that corrections arrive after the timings exist: changing a word does not re-time the line it sits on.
Delivery sequence:
  1. Transcription + alignment completes (~90s)
  2. job.awaiting_review fires → contains review_url
  3. Distributor forwards review_url to artist
  4. Artist approves in lyrcs.ai Studio
  5. job.complete fires → full results + downloads
Use cases:
  • Artist approval required before public lyric delivery
  • Quality control for high-profile releases
  • Markets where lyrics are legally sensitive and must be approved by rights holders

Mode 4 — Review before alignment

Set review_stage: "transcript" alongside review: true. The job stops as soon as the lyrics exist, before any timing work. The reviewer sees untimed words; alignment then runs on the text they approved.
Delivery sequence:
  1. Transcription completes (~60s)
  2. job.awaiting_review fires with review_stage: "transcript"
  3. The reviewer corrects and approves
  4. Alignment runs on the approved text (~30s)
  5. job.complete fires
Use cases:
  • Distributor workflows where the artist confirms wording before anything is timed
  • Any catalogue where corrections must reach the aligner rather than sit beside it

Mode 5 — Review inside your own product

The same held job as Mode 3 or 4, reached through a different door. Instead of forwarding a review_url, you read the lyrics from GET /jobs/{id} and approve with POST /jobs/{id}/approve using your API key — the artist never leaves your app and never sees a lyrcs.ai link.
review_delivery is optional and defaults to "both", which keeps the link working as well. "api" mints no review link at all, so approval can only come from your own system. Delivery sequence:
  1. Transcription completes (~60s)
  2. The job reports stage: "awaiting_review", and GET /jobs/{id} carries a review block with the lyrics as an array of lines
  3. Your UI shows them; the artist corrects and accepts
  4. Your server calls POST /jobs/{id}/approve
  5. Alignment runs on the approved text (~30s), then job.complete fires
This is not a different pipeline. Steps 4 and 5 are identical to Mode 4, and nothing downstream can tell which door was used — so supporting both costs one door’s worth of work. Full detail in Running Review In Your Own Product. Use cases:
  • Distributors whose artists are already signed in to their own platform
  • Anyone whose compliance requires approvals to originate from their own system

Decision guide

A webhook_url is convenient but not required for review. The review_url is also returned by GET /jobs/{id} and GET /jobs, and review_approved_at tells you when approval happened — so a polling consumer can run either review mode without receiving webhooks at all.