Skip to main content

Upload Files - Batch API

Upload audio/video files for transcription.

Endpoint

POST /api/v3/stt

Request

Headers

HeaderValueRequired
AuthorizationBearer YOUR_API_KEYYes
Content-Typemultipart/form-dataYes

Form Data

FieldTypeRequiredDescription
audio_filefileYesAudio or video file
languagestringYesLanguage code (e.g., "en") or "auto"
diarizationbooleanNoEnable speaker detection (default: false)
timestampsstringNo"word" or "segment" (default: "segment")
modelstringNoCustom model key (e.g., "custom_model_123")
glossary_idintegerNoGlossary ID to apply
webhook_urlstringNoWebhook URL for completion notification

Response

Status: 201 Created

{
"id": "stt_abc123",
"status": "uploaded",
"language": "en",
"duration_seconds": 3600,
"created_at": "2025-01-17T10:00:00Z"
}

Examples

cURL

curl -X POST https://api.scriptix.io/api/v3/stt \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "language=en" \
-F "audio_file=@meeting.mp3"

Python

import requests

with open('meeting.mp3', 'rb') as f:
response = requests.post(
'https://api.scriptix.io/api/v3/stt',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
files={'audio_file': f},
data={'language': 'en', 'diarization': 'true'}
)

job = response.json()
print(f"Job ID: {job['id']}")

JavaScript

const FormData = require('form-data');
const fs = require('fs');

const form = new FormData();
form.append('audio_file', fs.createReadStream('meeting.mp3'));
form.append('language', 'en');
form.append('diarization', 'true');

const response = await axios.post(
'https://api.scriptix.io/api/v3/stt',
form,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
...form.getHeaders()
}
}
);

console.log('Job ID:', response.data.id);

Features

Speaker Diarization

-F "diarization=true"

Word-Level Timestamps

-F "timestamps=word"

Custom Model

-F "model=custom_model_123"

Glossary

-F "glossary_id=789"

Webhook

-F "webhook_url=https://yourapp.com/webhook"

Errors

400 Bad Request

{
"error": "Validation Error",
"message": "Invalid language code",
"error_code": "INVALID_LANGUAGE"
}

413 Payload Too Large

{
"error": "Payload Too Large",
"message": "File exceeds 500MB limit. Use TUS upload for larger files."
}

Solution: Use TUS Upload for files > 500MB.

Next Steps