Call Recording
Start with an audio or video file that already exists.
Use the call transcription API to turn existing phone and contact-center recordings into structured text with optional speaker separation, timestamps, and asynchronous delivery. Speech is Cheap does not join or record live calls.
support-call.wav · completed
Agent · Speaker A
00:01.240 → 00:04.880Thanks for calling. How can I help today?
Customer · Speaker B
00:05.160 → 00:08.720I need help updating my delivery address.
Submit recordings after the call has been captured, then receive structured output for your own support, sales, search, or QA systems.
Submit a publicly accessible recording URL or upload a local audio or video file under 2 GiB.
Create a job, retain its ID, then receive completion through polling, a webhook, or chronological SSE output.
Receive chronological JSON segments with start, end, confidence, language, text, and optional speaker or word data.
Process prerecorded calls and call archives from six seconds to 24 hours without splitting them into smaller files.
Call Processing Workflow
Speech is Cheap returns transcription data. Your application decides how to store, search, display, or analyze it.
Start with an audio or video file that already exists.
Provide a public URL or upload the recording directly.
Receive chronological segments and optional speaker labels.
Send the result to your CRM, QA, archive, or search pipeline.
Mixed- and Split-Channel Calls
The two modes solve different input layouts. Neither mode verifies participant identity or automatically knows who is the agent.
One Mixed Track
Use can_parse_speakers when all participants are mixed into the same recording. The API groups speech by voice and returns anonymous speaker labels on transcript segments.
Separate Channels
Use is_split_channel when each participant is isolated on a dedicated channel. Your application may map a known channel to Agent or Customer when call metadata establishes that assignment.
For implementation details, overlapping speech behavior, and speaker-label boundaries, see the speaker diarization API.
Request and Response
This mixed-channel example requests anonymous speaker labels, word timestamps, and webhook delivery for an existing call recording.
cURL Request
Mixed-channel call recording
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/support-call.wav",
"can_parse_speakers": true,
"can_parse_words": true,
"webhook_url": "https://your-domain.com/transcription-webhook"
}'Completed JSON
Representative structured output
{
"id": "00000000-1111-7222-b333-444444444444-sic",
"status": "COMPLETED",
"output": {
"segments": [
{
"id": 1,
"start": 1.24,
"end": 4.88,
"speaker_id": "A",
"language": "en (99.91%)",
"confidence": 0.984,
"text": "Thanks for calling. How can I help today?",
"words": [
{ "start": 1.24, "end": 1.62, "text": "Thanks" },
{ "start": 1.66, "end": 1.88, "text": "for" },
{ "start": 1.92, "end": 2.34, "text": "calling." }
]
},
{
"id": 2,
"start": 5.16,
"end": 8.72,
"speaker_id": "B",
"language": "en (99.87%)",
"confidence": 0.978,
"text": "I need help updating my delivery address.",
"words": [
{ "start": 5.16, "end": 5.28, "text": "I" },
{ "start": 5.32, "end": 5.58, "text": "need" },
{ "start": 5.62, "end": 5.94, "text": "help" }
]
}
]
}
}URL submissions return an asynchronous job ID. Set webhook_url to receive the result when processing finishes, or poll the job endpoint from your application.
Use structured transcripts as input for systems you operate. Speech is Cheap does not perform the downstream analysis itself.
Turn prerecorded customer-support calls into chronological records that your team can retain and retrieve.
Convert recorded sales conversations into structured text for application-side CRM workflows and review queues.
Provide speaker-labeled transcripts to quality-assurance tools that your organization configures and operates.
Index transcript text and timestamps in your own search system so authorized users can locate relevant calls.
Pass transcript data into your own analytics pipeline without implying built-in scoring, sentiment, or summarization.
Use the long-form transcription API for recordings from six seconds to 24 hours.
Transparent Pricing
Core transcription and optional speaker parsing are billed separately, so calls without speaker separation do not incur the add-on charge.
Pay as You Go
Core prerecorded transcription with no upfront cost.
Subscriber
Includes 21,600 core transcription minutes.
Charges apply only to successfully completed transcriptions.
Compare API PlansClear Product Boundaries
Keep telephony, identity, compliance, and conversation-intelligence responsibilities in the systems that provide them.
The API does not dial, join, monitor, or record calls. Submit an audio or video file only after your authorized recording workflow has created it.
A speaker_id distinguishes voices or channels. It does not prove a person's name, role, account, or identity.
The documented transcription output does not claim sentiment analysis, call scoring, summarization, PII redaction, or automatic agent/customer role recognition.
Your organization remains responsible for obtaining recordings lawfully and controlling how submitted media and returned transcripts are stored, accessed, and used.
Implementation details for prerecorded support, sales, and contact-center recordings.
No. This call transcription API processes prerecorded audio or video that your application submits after the recording exists. It does not provide SIP, dial-in bots, call recording, WebSocket ingestion, or real-time telephony streaming.
Set can_parse_speakers to true. Voice-based diarization assigns anonymous speaker_id labels to transcript segments. See the speaker diarization API for deeper technical details.
Set is_split_channel to true when each participant is isolated on a separate audio channel. The API assigns one speaker per available channel. Your application may map a known channel to a role such as Agent or Customer when reliable call metadata provides that relationship.
No. Returned labels such as A and B are anonymous and do not verify identity or role. Your application can label a participant as Agent or Customer only when it has separate, reliable information, such as a known split-channel assignment.
Yes. Submit a publicly accessible input_url, or send multipart/form-data to the upload endpoint. Recordings must be between six seconds and 24 hours long, and direct uploads must be under 2 GiB. See the supported file types.
Yes. Set can_parse_words to true with your speaker option. The completed JSON can include segment-level speaker labels and per-word timing. See the word-level timestamps API for output examples and pricing.
Core transcription costs $0.002 per audio minute for pay-as-you-go customers. Subscribers receive 21,600 core transcription minutes for $20 per month. Optional speaker parsing costs an additional $0.002 per minute for pay-as-you-go customers or $0.001 per minute for subscribers.
Choose a plan, get your API key, and submit an existing call recording.