Skip to main content
When a job is submitted with review=true, lyrcs.ai holds the results until an artist or rights holder approves them. After alignment completes, a job.awaiting_review webhook fires with a review_url that the distributor sends to the artist.

Flow overview

1

Submit with review=true

Distributor calls POST /transcribe with review: true and a webhook_url.
2

Transcription and alignment run

lyrcs.ai transcribes and time-aligns the audio. This takes ~90 seconds.
3

job.awaiting_review fires

A job.awaiting_review webhook delivers a review_url and expires_at timestamp to the distributor’s webhook endpoint.
4

Distributor routes review_url to artist

The distributor sends the URL to the artist by email or their own platform.
5

Artist approves

The artist visits the review URL, checks the lyrics in the lyrcs.ai Studio, and clicks Approve.
6

job.complete fires

After approval, a job.complete webhook delivers the full results including transcript, transliteration, translation, and download URLs.

Review URL

The review_url has the form:
It is included in:
  • The job.awaiting_review webhook payload
  • GET /api/v1/jobs/{id} response (under review_url) once alignment is complete
review_url is null until alignment completes and the token is generated. Do not cache or forward a null value — poll GET /jobs/{id} until review_url is non-null if needed.
The token is single-use and has an expiry. Once expired, the artist cannot approve. Contact support@lyrcs.ai if a token expires before approval.

Webhook payloads

job.awaiting_review — fires after alignment:
job.complete — fires after artist approves:

review_required on job response

When a job was submitted with review=true, these fields appear on GET /api/v1/jobs/{id}:
review_approved_at is set to an ISO timestamp once the artist approves.

Known limitations

  • The job.complete webhook fired after artist approval uses single-attempt delivery — it does not retry on failure, unlike the standard auto-align webhook flow which retries at +1 min, +5 min, +30 min.
  • review_url is null until alignment completes (typically ~90s after submission).
See the Review Flow guide for a full end-to-end walkthrough.