Speech to Text (STT) Transcription
Upload pre-recorded audio files for accurate text transcription with timestamps asynchronously.
Because large audio files can take several minutes to process, this API uses a robust Submit & Poll architecture. You first submit the file to receive a job_id, and then poll the status endpoint until the transcription completes.
1. Submit Audio Job
POST
/api/v1/stt/submit/
| Parameter | Required | Type | Description |
|---|---|---|---|
| audio | required | file | The audio file to transcribe. Supports mp3, wav, m4a, etc. Max 50MB. |
| language | optional | string | Default is ar-JO. |
| output_format | optional | string | Accepts json or srt. Default is json. |
2. Check Job Status
GET
/api/v1/stt/status/{job_id}/
Example Production Integration (Python)
import requests
import time
API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# 1. Submit the audio file
submit_url = "https://moknah.io/api/v1/stt/submit/"
files = {"audio": ("audio.mp3", open("long_audio.mp3", "rb"), "audio/mpeg")}
data = {"language": "ar-JO", "output_format": "json"}
print("Submitting audio...")
response = requests.post(submit_url, headers=HEADERS, files=files, data=data)
job_id = response.json().get("job_id")
print(f"Job queued! ID: {job_id}")
# 2. Poll for the result
status_url = f"https://moknah.io/api/v1/stt/status/{job_id}/"
while True:
res = requests.get(status_url, headers=HEADERS)
result = res.json()
if result.get("status") in ["queued", "processing"]:
print("Processing... checking again in 5 seconds.")
time.sleep(5)
elif result.get("status") == "completed":
print("\nTranscription Finished!")
print(result["result"]["subtitles"])
break
else:
print("\nJob Failed:", result)
break
API Support
For API-related questions or issues, contact us at api@moknah.io.