The Batch API is served from
https://api.batch.slng.ai, not https://api.slng.ai, and uses the same bearer API key.- An SLNG API key
- Audio in a supported format:
wav,mp3,flac,aac,ogg,m4a,mp4,amr,mpeg
Placeholders
The snippets below use these placeholders. Replace them before running the code.| Placeholder | Replace with |
|---|---|
$API_KEY | An SLNG API key from app.slng.ai/api-keys. Set with export API_KEY=… |
myjob123 / job8f3a... | The job_id returned by POST /v1/batch/jobs (auto-generated if omitted) |
<presigned_url> | The presigned upload URL returned by the mode: "presign" flow |
audio.wav / s3_key | Your local file path / the S3 key the gateway returned at presign time |
Input Methods
Method 1: File Upload
Upload the audio file directly usingmultipart/form-data.
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.| Field | Type | Required | Description |
|---|---|---|---|
input_url | string | yes | HTTPS URL of the audio file |
transcription_config | object | yes | Transcription settings |
job_id | string | no | Alphanumeric job ID (auto-generated if omitted) |
model_code | string | no | Model to use (default: slng/speechmatics/batch:15.0.0) |
metadata | object | no | Arbitrary key-value metadata |
Method 3: Presigned Upload
Use this method for large files or when you need upload progress tracking. Three steps: request a presigned URL, upload the file directly to S3, then create the job referencing the upload.Request a presigned S3 upload URL
job_id, the validated transcription_config (and any other config you sent, echoed back), the future S3 locations, and an upload object with the presigned PUT URL plus the headers your upload must send:transcription_config (and any echoed tracking / output_config) verbatim into step 3.Upload the file to the presigned URL
Send the bytes with the exact headers from
upload.headers (typically Content-Type: application/octet-stream):Job Lifecycle
After submission, a job moves through these statuses:QUEUED → IN_PROGRESS → DECODING → POST_PROCESSING → DONE / FAILED
A successfully deleted job moves to DELETED (terminal).
Poll GET /v1/batch/jobs/{jobId} until the status reaches DONE or FAILED. The response includes the full job record (config, timestamps, error_message on failures); see the API reference for the schema.
DONE, retrieve the transcript:
format field: json, txt, or srt. Signed URLs expire after roughly one hour.
To list jobs instead of polling a single one, use GET /v1/batch/jobs. It supports pagination (page, page_size) plus filtering by status, model_code, and submission date range, and sorting by submitted_at, status, or model_code. See the API reference for the full parameter list.
Transcription Config
| Field | Type | Default | Description |
|---|---|---|---|
language | string | en | Language code for the audio |
operating_point | string | standard | Accuracy level: standard or enhanced |
diarization | string | none | Speaker separation: none, speaker, or channel |
domain | string | — | Domain-specific language model |
output_locale | string | — | Locale for formatting (dates, numbers) |
enable_entities | boolean | — | Detect and format entities (dates, times, addresses) |
additional_vocab | array | — | Custom words to improve recognition |
Limits
| Limit | Value |
|---|---|
| Max file size | 1 GB |
| Presigned upload URL expiry | 30 minutes |
| Supported audio formats | wav, mp3, flac, aac, ogg, m4a, mp4, amr, mpeg |
| URL input scheme | HTTPS 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