REST API

Add lyrics to anything. One endpoint.

Transcribe, transliterate, translate and align 48+ languages in a single async call. Per-minute pricing, no minimums. Single jobs, batch up to 20, or alignment-only if you already have the transcript.

POST/v1/transcribe
curl https://api.lyrcs.ai/v1/transcribe \
  -H "Authorization: Bearer $KEY" \
  -F "file=@track.mp3" \
  -F "language=Punjabi" \
  -F "word_align=true" \
  -F "webhook_url=https://your-app.com/hook"

→ 202 { job_id: "job_9f2a…", status: "queued" }
file upload or URLword-level timestampsasync + webhook48+ languages
§ I · Integration

Three calls. Done.

i

POST a job

Send your audio file or URL, language code, and output preferences. The API returns a job ID immediately — processing happens asynchronously.

ii

Poll or receive a webhook

Pass a webhook_url at creation time and we'll POST the result when the job completes. Or poll GET /v1/jobs/{id} — jobs finish in under a minute for most songs.

iii

Download the outputs

Download URLs are included in the completed job response. LRC, SRT, word-level JSON — both original script and transliterated — ready to ingest.

GET/v1/jobs/{id}
// status: "processing" | "complete" | "failed"
{
  "status": "complete",
  "transcript": "ਹਵਾ ਚੱਲੀ ਸ਼ਾਮ ਢਲੀ…",
  "download_urls": {
    "lrc_original": "https://…/download/lrc/original",
    "words_original": "https://…/download/words/original"
  }
}
§ II · Endpoints

Four endpoints cover every workflow.

POST/v1/transcribe

Transcribe, transliterate, translate and align audio. Accepts a file upload (multipart) or an HTTPS audio URL.

languagereq
ISO language name, e.g. Punjabi, Hindi, Tamil
file
Audio file (multipart). Required if audio_url is absent.
audio_url
HTTPS URL to an audio file. Required if file is absent.
align
Default true. Set false for transcript-only jobs.
word_align
Default true. Word-level timestamps in addition to line-level.
review
Default false. Pauses pipeline until a human approves the transcript.
webhook_url
HTTPS URL to notify when the job completes.
POST/v1/align

Alignment-only endpoint. Use when you already have the transcript and want timestamps without re-running transcription.

audio_urlreq
HTTPS URL to the audio file.
languagereq
Language name matching the supplied lyrics.
lyricsreq
Original-script lyrics, one line per element.
lyrics_transliterated
Transliterated lyrics. Timestamps will be applied by position if supplied.
webhook_url
HTTPS URL to notify on completion.
POST/v1/batch

Submit up to 20 jobs in a single call. Each job follows the same schema as /v1/transcribe.

jobsreq
Array of job objects (max 20). Each has audio_url, language, and optional align/word_align/review.
webhook_url
Batch-level webhook — fires once when all jobs complete.
GET/v1/jobs/{id}

Poll a job for status and results. Returns download URLs for all output formats once the job is complete.

No body parameters. Cross-org enumeration is blocked; 404 for jobs not owned by your org.
§ III · Outputs

Every format, both scripts.

LRCline-level

Standard .lrc format with per-line timestamps. Delivered for both original script and transliteration.

/v1/jobs/{id}/download/lrc/{type}
SRTsubtitle

.srt subtitle format. Drop into video editing software or a player that supports SRT.

/v1/jobs/{id}/download/srt/{type}
Word JSONword-level

Array of { word, timestamp } objects with millisecond precision. Powers karaoke and word-by-word highlighting.

/v1/jobs/{id}/download/words/{type}
Cultural notesin response body

Idioms, cultural references, and context notes generated during transcription. Returned in the job response, not a separate download.

LRC, SRT and word JSON are each delivered in two variants: original script (e.g. Gurmukhi, Devanagari) and transliterated. The {type} path segment is original or transliterated.

§ IV · Advanced

Human review gate. Batch. Webhooks.

Human review gate

Pass "review": true to pause the pipeline before alignment. The completed transcription response includes a review_url — a shareable link where a human can approve or edit the transcript before alignment proceeds.

Useful for supervised workflows, editorial teams, or high-value tracks.

Webhooks

Pass webhook_url at job creation and we'll POST the completed job payload to your endpoint instead of making you poll. The webhook body is identical to the GET /v1/jobs/{id} response.

Use POST /v1/webhook-test to send a sample payload to your endpoint.

Batch jobs

Submit up to 20 jobs in a single call via POST /v1/batch. Rate limits are checked against the full batch size before any jobs are created. A single batch-level webhook fires when all jobs complete. Poll GET /v1/batch/{id} for per-job status.

Rate limits: 10 / minute · 100 / hour · 1,000 / day.

Ready to integrate?

Full reference docs, code samples, and language coverage at docs.lyrcs.ai. Request API access below.