Speech to text and transcription API

Transcription and AI analysis — in one API request

One POST with the file — the response brings speaker-labelled text and an AI report from your template.

POST /transcriptions?reports=summary
curl -X POST "https://app.specala.ai/api/v1/developer/transcriptions?reports=summary" \-H "Authorization: Bearer sk_live_…" \-H 'Content-Disposition: attachment; filename="call-48213.mp3"' \-H "X-External-Id: deal-48213" \--data-binary @call-48213.mp3
Responsecompleted1 min 34 s
{"status": "completed","language": "en","duration_seconds": 1384.2,"segments": [{ "start": 0.0, "speaker_name": "Speaker 1","text": "Hi Jennifer, this is Marcus from Crumbwell." },{ "start": 6.9, "speaker_name": "Speaker 2","text": "Hello. We need a trial delivery for our coffee shop." },{ "start": 13.1, "speaker_name": "Speaker 1","text": "We'll send samples on Thursday and the price sheet today." }],"prompt_results": [{ "slug": "summary", "status": "completed","text": "Coffee shop, trial delivery: samples Thursday, price sheet today." }]}

Call report

Summary

  • The client is a coffee shop that needs a trial delivery.
  • Agreed: samples on Thursday, price sheet today.

Tasks

  • Send two boxes of samples
  • Send the price sheet
  • Call on Monday
2 GB
file in a single request
10 h
per recording
99
languages, auto-detected
~4 min
per hour of audio
73
audio and video formats

CRM and telephony

Call transcription API: from the PBX to the deal card

Send the deal number, your own fields and the rep's ID from your CRM or PBX along with the recording — the analysis comes back tied to them.

  1. 01 | Your PBX or CRM

    The call is over, the recording is ready

    call-48213.mp323:04 | 21.4 MB
  2. 02 | Request

    The file travels with the deal number and the rep

    POST /transcriptions?reports=call-checklistX-External-Id: deal-48213X-Author: external:hubspot:1729
  3. 03 | Response

    Speaker-labelled text

    "status": "completed","external_id": "deal-48213","segments": [ … ]
  4. 04 | Response

    A report built from your checklist

    "slug": "call-checklist","text": "Identified the need: yes\nStated the price: no"
  5. 05 | Your code

    The analysis lands in the deal card

    GET /transcriptions?external_id=deal-48213# every call of the deal in one request

Fits into the CRM and phone system you already have

  • HubSpot
  • Salesforce
  • Pipedrive
  • Twilio
  • Aircall
  • RingCentral
  • Any system with an API

CRM binding

Every call knows its deal and its rep

Three headers in the same request, and the recording is tied to your CRM from the first second: you find it by deal number, filter it by your own fields, and it lands with the right rep.

Request
curl -X POST "https://app.specala.ai/api/v1/developer/transcriptions?reports=call-checklist" \-H "Authorization: Bearer sk_live_…" \-H 'Content-Disposition: attachment; filename="call-48213.mp3"' \-H "X-External-Id: deal-48213" \-H 'X-Metadata: {"pipeline":"b2b","source":"aircall"}' \-H "X-Author: external:hubspot:1729" \--data-binary @call-48213.mp3
Response
{"status": "completed","external_id": "deal-48213","metadata": { "pipeline": "b2b", "source": "aircall" },"author": { "id": "9c2d4e6f-…", "name": "Marcus" }}

The app

No admin panel to build

Everything uploaded through the API shows up in Specala AI: a manager reads the analyses, searches across calls and asks the AI assistant — in the browser and in the desktop app.

Your own AI reports

Your prompt, your report on every conversation

Write a prompt in the app and the report gets an identifier. Pass it in the reports parameter, and a report built by your rules comes back with the transcript: a call checklist, an objection breakdown, a card for your CRM.

Settings → AI reports

Name
Call checklist
Identifier
call-checklist
Prompt
You are a head of sales. Check the call against the checklist: did the rep introduce themselves, identify the need, state the price and agree on a next step? Answer yes or no for each point and give a quote.
Request
curl -X POST "https://app.specala.ai/api/v1/developer/transcriptions?reports=call-checklist" \-H "Authorization: Bearer sk_live_…" \-H 'Content-Disposition: attachment; filename="call-48213.mp3"' \--data-binary @call-48213.mp3
Response201 Createdqueuedprocessingcompleted
{"status": "completed","prompt_results": [{ "slug": "call-checklist", "name": "Call checklist","text": "Introduced themselves: yes, “This is Marcus from Crumbwell”\nIdentified the need: yes, “We need a trial delivery”\nStated the price: no\nNext step: yes, “Let's talk on Monday”" }]}

AI reports

AI analysis is a request parameter

Add ?reports= and the transcript comes back with a summary and tasks — no separate call to a language model.

Request
curl -X POST "https://app.specala.ai/api/v1/developer/transcriptions?reports=summary" \-H "Authorization: Bearer sk_live_…" \-H 'Content-Disposition: attachment; filename="call-48213.mp3"' \--data-binary @call-48213.mp3
Response
{"status": "completed","prompt_results": [{ "slug": "summary", "name": "Summary","text": "The client is a coffee shop that needs a trial delivery. Samples on Thursday, price sheet today." }]}
Security

Your clients' recordings stay under your control

  • Keys are read-only by default

    Upload, delete and report permissions are granted when the key is created and never change afterwards.

  • Transcripts are encrypted

    A separate encryption key for every workspace.

  • The source recording is not kept

    The file is deleted during processing — only the text remains.

  • Deletion leaves no trace

    One request erases the transcript and the reports from our servers, for every member.

AI agents

Your agent will hook it up by itself

An OpenAPI spec, the documentation as a single file for a model, and an MCP server: Claude Code, Cursor and ChatGPT work with your recordings directly.

MCP serverClaude Code, Cursor, ChatGPT

terminal
claude mcp add --transport http specala-ai https://mcp.specala.ai/mcp

OpenAPI 3.1for client generators and agents

terminal
curl https://specala.ai/openapi.json

Docs as a single filefeed it to a model in one go

terminal
curl https://specala.ai/docs/llms-full.txt

How it differs from the Whisper API

Compared against the public documentation — including the row where we are not better.

CriterionSpecala AIWhisper API (OpenAI)
What comes backspeaker-labelled text and an AI reporttext
AI report in the same requestyes, including your own templateno, a separate model call
File sizeup to 2 GB and 10 hoursup to 25 MB
Speakersseparated by defaulta separate model
Languages99, auto-detecteddozens
How you learn it is readypoll the statusthe answer comes back at once, no queue
An interface for the teamyes: recordings appear in the appno

Details about the Whisper API are taken from OpenAI's public documentation as of September 2026.

Pricing

Priced per minute of audio with speakers and AI analysis

  • Plan minutes

    The API spends the same minutes as the app — speaker separation included.

  • Pro and Expert plans

    API access comes with both plans.

  • Pay by card

    Monthly or yearly billing.

Your first transcript — in five minutes

  1. Create a key

    In the app: Settings → API & MCP. The key is shown once.

    Authorization
    Authorization: Bearer sk_live_…
  2. Send a file

    One POST with the file as the request body. You get the recording ID back.

    curl
    curl -X POST "https://app.specala.ai/api/v1/developer/transcriptions" \-H "Authorization: Bearer sk_live_…" \-H 'Content-Disposition: attachment; filename="call-48213.mp3"' \--data-binary @call-48213.mp3
  3. Fetch the result

    Poll the status every 5–10 seconds until it becomes completed.

    status.sh
    curl "https://app.specala.ai/api/v1/developer/transcriptions/$UUID" \-H "Authorization: Bearer sk_live_…"
FAQ

Questions and answers

What can the Specala AI speech recognition API do?
The speech recognition API (some teams call it a voice recognition API) accepts audio and video up to 2 GB and 10 hours in a single request and returns speaker-labelled text with timestamps. Under the hood it is automatic speech recognition for 99 languages, and the language is detected for you. On request it builds AI reports: a summary, tasks or a report from your team's template. The deal number and the rep travel with the recording: the API is built for CRM and telephony integrations. API reference
How much does it cost, and is there free access?
The API spends your plan minutes. API access comes with the Pro and Expert plans; the free plan does not include it, so this is not a free speech to text API. Specala AI pricing
How fast is a recording processed?
An hour of audio takes about 4 minutes: that is the median across 28 thousand recordings over two weeks, from the end of the upload to finished speaker-labelled text. Short recordings are ready in seconds. There is no guaranteed processing time.
Which formats and what file size?
73 audio and video extensions — mp3, wav, m4a, ogg, flac, mp4, mov, mkv, webm and more; audio is extracted from video automatically. A file up to 2 GB and 10 hours goes as the request body: this audio transcription API needs no multipart forms and no chunked upload.
Which formats can I export a transcript in?
Markdown, txt and JSON. Markdown comes with YAML front matter (title, date, language, speakers, topics) and the AI reports, so it drops straight into Obsidian or a knowledge base; txt is plain text; JSON keeps timestamps and speaker IDs. Up to 100 transcripts come as a single ZIP. SRT, DOCX and PDF are not available through the API — they are in the app. Export a transcript
Will it work for calls from a CRM or a phone system?
Yes — this is what the API is built for: automatic call transcription from your CRM or phone system is its main scenario. Along with the file you send the deal number (X-External-Id), your own fields such as pipeline, source or queue (X-Metadata) and the rep (X-Author): the recording lands in their list, and every call of a deal is later found in one request. The report built from your checklist comes in the same response — all that is left is to put it on the deal card. There is no ready-made connector: it is a call transcription API, and your developer connects it to the CRM or PBX.
How do I automate call transcription?
Three steps. Your CRM or PBX tells your handler that a call has ended; the handler sends the recording to the API with the deal number and the rep; once the status is completed, it fetches the text and the report and puts them on the deal card. Automatic transcription of meetings, interviews and voice notes works the same way. Without code you can build it in n8n or Make with HTTP request nodes — no separate app is needed. The result is AI call analysis against your checklist instead of listening to recordings by hand. Uploading a file and integration headers
How is it different from Google Cloud Speech-to-Text or Amazon Transcribe?
A Google speech to text API or the AWS Transcribe API returns recognised text, and the rest is on you: speakers, analysis, linking to the deal. This API is built for sales integrations: the same request brings speaker-labelled text and an AI report built from your checklist, and the recording is tied to the deal and the rep from your CRM right away. The key is created in a minute in the app settings, without a cloud console.
How is it different from the Whisper API?
The Whisper API from OpenAI takes files up to 25 MB and needs a separate model for speaker separation — whisper diarization is not part of the basic call. Here you get a 2 GB file limit, speakers by default, AI reports in the same request and recordings tied to the deal and the rep from your CRM. If you have been running Whisper in Python yourself (openai-whisper, faster-whisper), here you need no GPU and no job queue of your own. Whisper answers at once with no queue; here you poll the status.
Is there an SDK?
There is no separate SDK. There is an OpenAPI 3.1 spec for generating a client and ready examples in curl, Python and JavaScript on every reference page — the speech to text API is used through plain HTTP requests. Speech to text in Python is one httpx request, with no models of your own. Quickstart
Where is the data stored and how do I delete it?
Transcripts and reports are stored encrypted, with a separate key for every workspace. The source file is deleted during processing. One DELETE request erases a recording from our servers permanently, for every member.
How do I connect the MCP server?
With one command for Claude Code, or through the connector in Claude, ChatGPT and Cursor — OAuth sign-in, the same account. REST (the transcription API) stays for your code, MCP is for your assistant. Specala AI MCP server
API

Send your first recording today

A key takes a minute to create in the app settings.