Call Transcription API for Prerecorded Conversations

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

A

Agent · Speaker A

00:01.240 → 00:04.880

Thanks for calling. How can I help today?

B

Customer · Speaker B

00:05.160 → 00:08.720

I need help updating my delivery address.

Application-side mapping: The API returns anonymous Speaker A/B labels. Agent/Customer roles require separate call metadata, such as a known channel assignment.

A Call Recording Transcription API for Existing Media

Submit recordings after the call has been captured, then receive structured output for your own support, sales, search, or QA systems.

URLs and Direct Uploads

Submit a publicly accessible recording URL or upload a local audio or video file under 2 GiB.

Asynchronous Processing

Create a job, retain its ID, then receive completion through polling, a webhook, or chronological SSE output.

Structured Call Transcripts

Receive chronological JSON segments with start, end, confidence, language, text, and optional speaker or word data.

Recordings up to 24 Hours

Process prerecorded calls and call archives from six seconds to 24 hours without splitting them into smaller files.

Call Processing Workflow

From Call Recording to Your Application

Speech is Cheap returns transcription data. Your application decides how to store, search, display, or analyze it.

01

Call Recording

Start with an audio or video file that already exists.

02

Submit

Provide a public URL or upload the recording directly.

03

Transcript

Receive chronological segments and optional speaker labels.

04

Your Systems

Send the result to your CRM, QA, archive, or search pipeline.

Mixed- and Split-Channel Calls

Choose the Speaker Mode That Matches the Recording

The two modes solve different input layouts. Neither mode verifies participant identity or automatically knows who is the agent.

One Mixed Track

Voice-Based Diarization

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.

"can_parse_speakers" : true

Separate Channels

Split-Channel Parsing

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.

"is_split_channel" : true

For implementation details, overlapping speech behavior, and speaker-label boundaries, see the speaker diarization API.

Request and Response

Create a Call Transcription Job

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.

Read the Jobs v2 Request Docs

Call Transcription Workflows Your Application Can Build

Use structured transcripts as input for systems you operate. Speech is Cheap does not perform the downstream analysis itself.

Support-Call Archives

Turn prerecorded customer-support calls into chronological records that your team can retain and retrieve.

Sales-Call Processing

Convert recorded sales conversations into structured text for application-side CRM workflows and review queues.

QA Pipelines

Provide speaker-labeled transcripts to quality-assurance tools that your organization configures and operates.

Searchable Call Records

Index transcript text and timestamps in your own search system so authorized users can locate relevant calls.

Customer-Side Analytics

Pass transcript data into your own analytics pipeline without implying built-in scoring, sentiment, or summarization.

Long Call Recordings

Use the long-form transcription API for recordings from six seconds to 24 hours.

Transparent Pricing

Pay for the Call Transcription Features You Use

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

$0.002 per audio minute

Core prerecorded transcription with no upfront cost.

  • Core transcription: $0.002 per minute
  • Speaker parsing: an additional $0.002 per minute
  • Word timestamps: an additional $0.001 per minute
Best for Volume

Subscriber

$20 per month

Includes 21,600 core transcription minutes.

  • Core overage: $0.000926 per minute
  • Speaker parsing: an additional $0.001 per minute
  • Word timestamps: an additional $0.0005 per minute

Charges apply only to successfully completed transcriptions.

Compare API Plans

Clear Product Boundaries

Build Around What the API Actually Returns

Keep telephony, identity, compliance, and conversation-intelligence responsibilities in the systems that provide them.

Prerecorded Media Only

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.

Labels Are Not Verified Identities

A speaker_id distinguishes voices or channels. It does not prove a person's name, role, account, or identity.

No Built-In Conversation Intelligence

The documented transcription output does not claim sentiment analysis, call scoring, summarization, PII redaction, or automatic agent/customer role recognition.

Your Recording and Access Rules Apply

Your organization remains responsible for obtaining recordings lawfully and controlling how submitted media and returned transcripts are stored, accessed, and used.

Call Transcription API Questions

Implementation details for prerecorded support, sales, and contact-center recordings.

Does the API Join or Record Live Phone Calls?

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.

How Do I Separate Speakers in a Mixed Call Recording?

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.

When Should I Use Split-Channel Parsing?

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.

Does the API Know Which Speaker Is the Agent?

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.

Can I Submit a Call Recording by URL or Direct Upload?

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.

Can I Add Word-Level Timestamps?

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.

How Much Does Call Transcription Cost?

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.

Transcribe Your Next Prerecorded Call

Choose a plan, get your API key, and submit an existing call recording.