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.
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{"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.
01 | Your PBX or CRM
The call is over, the recording is ready
call-48213.mp323:04 | 21.4 MB02 | Request
The file travels with the deal number and the rep
POST /transcriptions?reports=call-checklistX-External-Id: deal-48213X-Author: external:hubspot:172903 | Response
Speaker-labelled text
"status": "completed","external_id": "deal-48213","segments": [ … ]04 | Response
A report built from your checklist
"slug": "call-checklist","text": "Identified the need: yes\nStated the price: no"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.
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{"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.
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{"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.
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{"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." }]}Search and export
Find any conversation with one request
Filter recordings by deal number, your own fields, date and status — no database or indexes of your own. Need an archive? Pull up to 100 transcripts as a single ZIP.
curl "https://app.specala.ai/api/v1/developer/transcriptions" \-H "Authorization: Bearer sk_live_…"{"items": [{ "title": "Trial delivery","external_id": "deal-48213", "metadata": { "manager": "marcus" },"created_at": "2026-09-18T10:12:00Z" },{ "title": "Follow-up call","external_id": "deal-48213", "metadata": { "manager": "marcus" },"created_at": "2026-09-11T10:12:00Z" },{ "title": "Contract renewal","external_id": "deal-47990", "metadata": { "manager": "anna" },"created_at": "2026-09-17T10:12:00Z" },{ "title": "Bean & Leaf coffee shop","external_id": "deal-48102", "metadata": { "manager": "marcus" },"created_at": "2026-09-16T10:12:00Z" },{ "title": "New client","external_id": "deal-48240", "metadata": { "manager": "anna" },"created_at": "2026-09-10T10:12:00Z" }]}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
claude mcp add --transport http specala-ai https://mcp.specala.ai/mcpOpenAPI 3.1for client generators and agents
curl https://specala.ai/openapi.jsonDocs as a single filefeed it to a model in one go
curl https://specala.ai/docs/llms-full.txtHow it differs from the Whisper API
Compared against the public documentation — including the row where we are not better.
| Criterion | Specala AI | Whisper API (OpenAI) |
|---|---|---|
| What comes back | speaker-labelled text and an AI report | text |
| AI report in the same request | yes, including your own template | no, a separate model call |
| File size | up to 2 GB and 10 hours | up to 25 MB |
| Speakers | separated by default | a separate model |
| Languages | 99, auto-detected | dozens |
| How you learn it is ready | poll the status | the answer comes back at once, no queue |
| An interface for the team | yes: recordings appear in the app | no |
Details about the Whisper API are taken from OpenAI's public documentation as of September 2026.
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
Create a key
In the app: Settings → API & MCP. The key is shown once.
AuthorizationAuthorization: Bearer sk_live_…Send a file
One POST with the file as the request body. You get the recording ID back.
curlcurl -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.mp3Fetch the result
Poll the status every 5–10 seconds until it becomes completed.
status.shcurl "https://app.specala.ai/api/v1/developer/transcriptions/$UUID" \-H "Authorization: Bearer sk_live_…"
Questions and answers
What can the Specala AI speech recognition API do?
How much does it cost, and is there free access?
How fast is a recording processed?
Which formats and what file size?
Which formats can I export a transcript in?
Will it work for calls from a CRM or a phone system?
How do I automate call transcription?
How is it different from Google Cloud Speech-to-Text or Amazon Transcribe?
How is it different from the Whisper API?
Is there an SDK?
Where is the data stored and how do I delete it?
How do I connect the MCP server?
Send your first recording today
A key takes a minute to create in the app settings.