POST/api/v1/transcribe

Transcribes audio to a subtitle file, or force-aligns provided lyrics to it. If lyrics is provided, uses forced alignment; otherwise runs automatic speech-to-text. Requires an API key — create one from your dashboard.

Request

Content-Type: application/json · Authorization: Bearer <api-key>

FieldTypeDescription
fileUrlstringrequiredPublicly accessible URL of the audio or video file to process, or a YouTube video URL (e.g. https://youtube.com/watch?v=...).
lyricsstringoptionalPlain-text lyrics to align with the audio. When provided, uses forced alignment instead of auto STT. Line breaks signal new subtitle lines.
isWordLevelbooleanoptionalEmbed per-word timestamps in the output (karaoke-style). Defaults to false.
smartSectionsbooleanoptionalAutomatically detect and add section labels like [Verse 1], [Chorus] in the output. Defaults to true.
formatstringoptionalOutput format — lrc, webvtt, srt, ass, ttml, txt. Defaults to lrc. Use txt for plain text with no timestamps.

Force-align lyrics → LRC

curl -X POST https://quicklrc.com/api/v1/transcribe \
  -H "Authorization: Bearer qlrc_..." \
  -H "Content-Type: application/json" \
  -d '{
    "fileUrl": "https://example.com/song.mp3",
    "lyrics": "Hello world\nThis is line two"
  }'

Auto-transcribe → LRC with word timestamps + smart sections

curl -X POST https://quicklrc.com/api/v1/transcribe \
  -H "Authorization: Bearer qlrc_..." \
  -H "Content-Type: application/json" \
  -d '{
    "fileUrl": "https://example.com/song.mp3",
    "isWordLevel": true,
    "smartSections": true
  }'

Auto-transcribe → SRT

curl -X POST https://quicklrc.com/api/v1/transcribe \
  -H "Authorization: Bearer qlrc_..." \
  -H "Content-Type: application/json" \
  -d '{ "fileUrl": "https://example.com/podcast.mp3", "format": "srt" }'

Response

200Success — subtitle file content as plain text
FormatContent-Type
lrctext/plain; charset=utf-8
webvtttext/vtt; charset=utf-8
srttext/plain; charset=utf-8
asstext/plain; charset=utf-8
ttmlapplication/ttml+xml; charset=utf-8
txttext/plain; charset=utf-8

Errors

All error responses return application/json with an error string field.

StatusConditionBody
401Missing or invalid API key{ "error": "Authentication required" }
400Missing fileUrl, duration, or invalid format{ "error": "..." }
402File duration exceeds remaining credits{ "error": "...", "usage": { usedMinutes, limitMinutes, remainingMinutes, mediaDurationMinutes } }
403Usage limit exceeded{ "error": "Usage limit exceeded", "usage": { ... } }
500Processing error — you are not charged{ "error": "..." }

Credits

API calls share the same credit pool as web app usage. Cost is calculated by rounding the file duration up to the nearest minute (e.g. 61 s = 2 min). You will not be charged for failed requests.

TierMonthly limitReset
free5 minEvery 30 days
subscribedBased on your planBilling cycle start date

Test