Submit
Send one public URL or direct file upload.
Submit recordings from six seconds to 24 hours, upload files under 2 GiB, and receive structured transcripts through polling, webhooks, or chronological streamed output.
1. Submit one recording
Public URL or direct upload under 2 GiB
2. Process asynchronously
status: PENDING → COMPLETED
3. Receive structured output
Poll the job, accept a webhook, or stream chronological segments with SSE.
Jobs v2 separates media ingestion from transcription processing so your application does not need to hold a request open for hours of source audio.
Submit prerecorded audio or video from six seconds to 24 hours long.
Send local media directly through the upload endpoint instead of publishing it at a URL first.
Point Jobs v2 at a publicly accessible media URL and let the service fetch the recording for you.
Receive a job ID immediately, then poll status, accept a webhook, or stream progress and segments.
Asynchronous Workflow
Long recordings do not need a long-lived synchronous HTTP request. Jobs v2 returns a job ID so your application can choose how it wants to observe completion.
Send one public URL or direct file upload.
A URL-based async request returns HTTP 202 with PENDING status.
Poll, wait for your webhook, or enable SSE progress events.
Consume chronological transcript segments, use the word-level timestamps API, or request SRT/VTT output.
API Example
The normal URL workflow responds with a job ID and PENDING status. Retrieve the completed result later, or provide a webhook URL for delivery.
curl --request POST \
--url https://api.speechischeap.com/v2/jobs/ \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"input_url": "https://example.com/three-hour-interview.mp3",
"webhook_url": "https://your-domain.com/transcription-webhook"
}'{
"id": "00000000-1111-7222-b333-444444444444-sic",
"output": {
"segments": [
{
"id": 1,
"start": 0.0,
"end": 24.12,
"language": "en (99.95%)",
"confidence": 0.987,
"processing_duration_in_s": 0.321,
"text": "Welcome to this long-form interview.",
"words": null
},
{
"id": 2,
"start": 24.12,
"end": 52.84,
"language": "en (99.93%)",
"confidence": 0.981,
"processing_duration_in_s": 0.298,
"text": "We will cover the complete story from beginning to end.",
"words": null
}
]
},
"status": "COMPLETED"
}Use the URL endpoint for publicly accessible media, or send a local file to the upload endpoint. Both workflows support the same transcription options.
See Jobs v2 ParametersChoose Your Delivery Pattern
Use the integration pattern that best fits your application instead of coupling long-form processing to one synchronous request.
Store the returned job ID and request its status/output when your application is ready.
Read the status endpoint docsSet webhook_url when creating the job and receive the completed transcript without repeatedly polling.
Set can_stream_output to receive SSE progress events and completed transcript segments in chronological order.
Process long recordings without redesigning your application around short synchronous speech-to-text requests.
Transcribe complete episodes and interviews, then add optional speaker diarization or word timestamps when needed.
Process prerecorded conversations asynchronously while your application remains free to handle other work.
Submit long audio/video assets from storage and turn them into structured, searchable transcript segments.
Queue independent recordings and consume completed transcripts in downstream indexing, analysis, or review systems.
Same Core Pricing
Core transcription uses the same per-minute pricing as shorter Jobs v2 recordings. Optional add-ons are billed separately.
Pay as You Go
1 hour: $0.12
8 hours: $0.96
24 hours: $2.88
Subscriber
Includes 21,600 core transcription minutes (15 days of audio).
Additional core transcription minutes are billed at $0.000926 each.
You are charged only for successfully completed transcriptions.
Compare API PlansClear Boundaries
Use Jobs v2 when the source media already exists and fits the documented file and duration limits.
Jobs v2 accepts source media between six seconds and 24 hours long.
The upload endpoint is intended for large local files, but it is not unlimited object storage.
SSE streams processing progress/output for a submitted recording; it is not a microphone, WebSocket, or telephony audio-ingestion API.
Implementation details for large files and long prerecorded media.
Jobs v2 accepts prerecorded audio or video between six seconds and 24 hours long. Direct file uploads must also be under 2 GiB.
Yes. Send the file to https://upload.speechischeap.com/v2/jobs/ as multipart/form-data. The upload endpoint accepts files under 2 GiB and reports upload progress before handing the media to the Jobs v2 transcription pipeline.
No. Jobs v2 is asynchronous. A normal request returns a job ID with PENDING status. Your application can poll the job endpoint, receive a webhook, or enable chronological Server-Sent Events output.
Yes. Set can_stream_output to true to receive progress events and chronological transcript segments over Server-Sent Events. Progress events are the reliable way to monitor the overall job.
Speech is Cheap supports common audio and video formats including MP3, M4A, Opus, FLAC, WAV, MP4, WebM, and Ogg. See the supported file types for tested codec/container combinations.
Choose a plan, get your API key, and submit prerecorded audio or video.