Skip to main content

Endpoint

Accepts multipart/form-data (for file uploads) or application/json (for URL-based jobs). Returns 202 Accepted immediately — processing is asynchronous.

Parameters

language — required

The source language of the audio. Must be the exact full name as returned by GET /api/v1/languages. Values are case-sensitive.

file — required if audio_url absent

Audio file, submitted as multipart/form-data. Accepted formats: mp3, wav, flac, m4a, aac, ogg, webm.
The Vercel serverless body limit is ~4.5 MB. For larger files — most production audio — use audio_url instead.

audio_url — required if file absent

An HTTPS URL pointing to the audio file. Must use https:// — HTTP URLs are rejected.
  • No size limit
  • URL must be publicly accessible at processing time (typically within 30s of submission)
  • One-time-use presigned URLs are supported

align — optional, default true

Controls whether time-alignment runs after transcription. When false, the downloads object is omitted from the job response and webhook payload.

word_align — optional, default true

Controls whether word-level timestamps are generated in addition to line-level LRC/SRT. Only takes effect when align=true. When true, words_original and words_transliterated are added to results.downloads on completion. When false, those keys are absent.

review — optional, default false

When true, the job fires job.awaiting_review instead of job.complete after alignment. Results are held until an artist approves via the review URL. Requires webhook_url to be useful.

webhook_url — optional

An HTTPS URL where event payloads will be delivered. Supported in JSON body only — not in multipart/form-data. Webhook events: job.complete, job.awaiting_review, job.degraded, job.failed. See the Webhooks guide for payload shapes and retry behaviour.

external_id — optional

An arbitrary string (max 255 characters) that you can use to map the job back to a track in your own system. Supported in JSON body only — not in multipart/form-data. When provided, external_id is echoed back in:
  • The 202 submission response
  • GET /api/v1/jobs/{job_id}
  • The job.complete webhook payload
When omitted, the field is present but null in all responses.

Response — 202 Accepted

Use job_id to poll GET /api/v1/jobs/{job_id} for status and results.

Examples

Basic file upload

Transcript only — align=false

Use when you need metadata (lyrics text) but not time-synced files. Faster and sufficient for streaming store metadata delivery or liner notes.

With external_id for track mapping

With artist review gate — review=true

Use when results must be approved by the artist before delivery.