Skip to main content
This guide covers the three ways to submit audio for batch transcription. For endpoint details and schemas, see the Batch API reference.
The Batch API is served from https://api.batch.slng.ai, not https://api.slng.ai like the rest of the SLNG API.
Prerequisites:
  • An SLNG API key
  • Audio in a supported format: wav, mp3, flac, aac, ogg, m4a, mp4, amr, mpeg

Input Methods

Method 1: File Upload

Upload the audio file directly using multipart/form-data.
curl -X POST https://api.batch.slng.ai/v1/batch/jobs \
  -H "Authorization: Bearer $API_KEY" \
  -F file=@audio.wav \
  -F transcription_config='{"language":"en"}'

Method 2: URL Input

Provide a publicly accessible HTTPS URL. The system downloads the file (max 1 GB). Supports presigned S3/GCS URLs for private files.
curl -X POST https://api.batch.slng.ai/v1/batch/jobs \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input_url": "https://example.com/audio.wav",
    "transcription_config": { "language": "en" }
  }'
FieldTypeRequiredDescription
input_urlstringyesHTTPS URL of the audio file
transcription_configobjectyesTranscription settings
job_idstringnoAlphanumeric job ID (auto-generated if omitted)
model_codestringnoModel to use (default: slng/speechmatics/batch:15.0.0)
metadataobjectnoArbitrary key-value metadata

Method 3: Presigned Upload

For large files or when you need upload progress tracking. This is a 3-step process. Step 1 — Request a presigned S3 upload URL:
curl -X POST https://api.batch.slng.ai/v1/batch/jobs \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "presign",
    "filename": "audio.wav",
    "transcription_config": { "language": "en" }
  }'
Response:
{
  "job_id": "job8f3a...",
  "upload": {
    "url": "https://s3.amazonaws.com/...",
    "s3_key": "inputs/job8f3a.../audio.wav",
    "expires_in": 1800
  }
}
Step 2 — Upload the file directly to the presigned URL:
curl -X PUT "<presigned_url>" --data-binary @audio.wav
Step 3 — Create the job:
curl -X POST https://api.batch.slng.ai/v1/batch/jobs \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "job_id": "job8f3a...",
    "s3_key": "inputs/job8f3a.../audio.wav",
    "transcription_config": { "language": "en" }
  }'

Job Lifecycle

After submission, a job moves through these statuses: QUEUEDIN_PROGRESSDECODINGDONE / FAILED Poll GET /v1/batch/jobs/{jobId} until the status reaches DONE or FAILED:
curl https://api.batch.slng.ai/v1/batch/jobs/myjob123 \
  -H "Authorization: Bearer $API_KEY"
Once DONE, retrieve the transcript:
curl https://api.batch.slng.ai/v1/batch/jobs/myjob123/files \
  -H "Authorization: Bearer $API_KEY"
This returns signed download URLs for both the input audio and output transcript files (JSON and SRT).

Transcription Config

FieldTypeDefaultDescription
languagestringenLanguage code for the audio
operating_pointstringstandardAccuracy level: standard or enhanced
diarizationstringnoneSpeaker separation: none, speaker, or channel
domainstringDomain-specific language model
output_localestringLocale for formatting (dates, numbers)
enable_entitiesbooleanDetect and format entities (dates, times, addresses)
additional_vocabarrayCustom words to improve recognition
Example with diarization and enhanced accuracy:
{
  "transcription_config": {
    "language": "en",
    "operating_point": "enhanced",
    "diarization": "speaker"
  }
}

Limits

LimitValue
Max file size1 GB
Presigned upload URL expiry30 minutes
Supported audio formatswav, mp3, flac, aac, ogg, m4a, mp4, amr, mpeg
URL input schemeHTTPS only

Next Steps

Batch API reference

Endpoint details, request schemas, and response formats

Getting started

Set up your API key and make your first request