Speech Recognition API

Speech recognition for the complexity of healthcare

Fast, accurate, and ready to handle clinical conversations. Power any voice-based healthcare workflow with the most accurate medical ASR accessible via API.

Powered by frontier research. Designed for developers. Trusted by clinicians.

Voice infrastructure for healthcare developers

curl --request POST \
  --url https://api.{environment}.corti.app/v2/interactions/{id}/transcripts/ \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Tenant-Name: <tenant-name>' \
  --data '{
  "recordingId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "primaryLanguage": "en",
  "isDictation": true,
  "isMultichannel": true,
  "diarize": true,
  "participants": [
    {
      "channel": 123,
      "role": "doctor"
    }
  ],
  "modelName": "base"
}'
Copy
await client.transcripts.create("f47ac10b-58cc-4372-a567-0e02b2c3d479", {
    recordingId: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    primaryLanguage: "en",
    modelName: "base"
});
Copy
import requests

url = "https://api.{environment}.corti.app/v2/interactions/{id}/transcripts/"

payload = {
    "recordingId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "primaryLanguage": "en",
    "isDictation": True,
    "isMultichannel": True,
    "diarize": True,
    "participants": [
        {
            "channel": 123,
            "role": "doctor"
        }
    ],
    "modelName": "base"
}
headers = {
    "Tenant-Name": "<tenant-name>",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
Copy
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.{environment}.corti.app/v2/interactions/{id}/transcripts/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'recordingId' => 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
    'primaryLanguage' => 'en',
    'isDictation' => null,
    'isMultichannel' => null,
    'diarize' => null,
    'participants' => [
        [
                'channel' => 123,
                'role' => 'doctor'
        ]
    ],
    'modelName' => 'base'
  ]),
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>",
    "Content-Type: application/json",
    "Tenant-Name: <tenant-name>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
Copy
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.{environment}.corti.app/v2/interactions/{id}/transcripts/"

	payload := strings.NewReader("{\n  \"recordingId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n  \"primaryLanguage\": \"en\",\n  \"isDictation\": true,\n  \"isMultichannel\": true,\n  \"diarize\": true,\n  \"participants\": [\n    {\n      \"channel\": 123,\n      \"role\": \"doctor\"\n    }\n  ],\n  \"modelName\": \"base\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Tenant-Name", "<tenant-name>")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
Copy
HttpResponse<String> response = Unirest.post("https://api.{environment}.corti.app/v2/interactions/{id}/transcripts/")
  .header("Tenant-Name", "<tenant-name>")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"recordingId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n  \"primaryLanguage\": \"en\",\n  \"isDictation\": true,\n  \"isMultichannel\": true,\n  \"diarize\": true,\n  \"participants\": [\n    {\n      \"channel\": 123,\n      \"role\": \"doctor\"\n    }\n  ],\n  \"modelName\": \"base\"\n}")
  .asString();
Copy
import { CortiClient, CortiEnvironment } from "@corti/sdk";

const cortiClient = new CortiClient({
    tenantName: "YOUR_TENANT_NAME",
    environment: CortiEnvironment.BetaEu,
    auth: {
        accessToken: "YOUR_ACCESS_TOKEN"
    },
});

const transcribeSocket = await cortiClient.transcribe.connect();
Copy
HIPAA (Health Insurance Portability and Accountability Act) CompliantGDPR (General Data Protection Regulation) CompliantISO/IEC 27001 Information Security CertifiedSOC 2 Type II CompliantNHS DTAC (Digital Technology Assessment Criteria) CompliantNHS DCB0129 Clinical Risk Management ComplianceEU-U.S. Data Privacy Framework (formerly Privacy Shield)U.S. FedRAMP AuthorizedNIS2 Directive ComplianceBSI C5 (Cloud Computing Compliance Criteria Catalog) CertifiedCyber Essentials CertifiedISAE 3000 Assurance Report Certified

Unmatched medical domain accuracy

Our speech recognition models are validated on one of the industry’s largest medical lexicons, covering over 150,000 terms. From drug names to anatomical terminology and specialty-specific language, Corti is optimized for precise recognition in real-world clinical settings.

By focusing exclusively on healthcare, our models achieve higher medical term recall and accuracy than general-purpose systems, ensuring that every diagnosis, treatment, and detail is captured reliably, whether in general practice or highly specialized care.

We continuously improve our models to keep pace with how fast our customers ship products. By delivering quarterly releases for each of our 14+ language models, and by listening closely to developer feedback, we ensure our technology evolves as quickly as the people who rely on it.

Speech recognition capabilities

Notification Message Alert Streamline Icon: https://streamlinehq.com

Punctuation

Improve readability with automatic punctuation added consistently across the transcript.

Read more in docs →
Notification Application 2 Streamline Icon: https://streamlinehq.com

Voice commands

Allow users to speak or type short, predefined commands instead of navigating menus or typing manually.

Read more in docs →
Visible Streamline Icon: https://streamlinehq.com

Preview results

Show interim transcripts in real time to validate accuracy early and keep users confident while dictating.

Read more in docs →
Earth 1 Streamline Icon: https://streamlinehq.com

Languages

Capture reliable transcripts across languages your patients and clinicians prefer to speak.

Read more in docs →
Chat Two Bubbles Oval Streamline Icon: https://streamlinehq.com

Diarization

Separate speakers automatically, making each voice clear and easy to identify in transcripts.

Split Vertical Streamline Icon: https://streamlinehq.com

Multi-channel

Capture audio from each channel independently to produce cleaner and more accurate transcripts.

Align Left Streamline Icon: https://streamlinehq.com

Formatting (beta)

Standardize spoken dates, times, and numbers into precise, structured medical notation.

Read more in docs →
Dictionary Language Book Streamline Icon: https://streamlinehq.com

Vocabulary (beta)

Expand medical term recognition to improve accuracy for specialized domains further.

Power any voice-based healthcare workflow

Upload in a batch or stream live

With support for real-time audio stream or asynchronous file processing, Corti speech recognition has the flexibility to support any documentation workflow.

Transcript of a conversation being captured in real time, showing how speech recognition supports live documentation.
Capture medical language natively

Continuously trained on real-world clinical conversations, Corti’s models accurately handle medical terminology and abbreviations across languages and specialties. Accurate transcripts out of the box, without endless tuning or manual cleanup.

Dictation interface natively capturing medical language in real time, highlighting terms like hypertension while transcribing a clinical note.
Diarize any transcript

Separate transcripts by speaker, support single- or multi-channel audio, and ensure proper punctuation and formatting. Corti turns every word into meaningful notes for continuity of care, revenue cycle management, and other downstream applications.

Diarization interface separating a clinical transcript into distinct speaker segments.
You're in command-and-control

Define custom commands to trigger actions when recognized. Automate workflows, insert templates, streamline EHR navigation, and more. How creative can you be when it comes to speech-enabling your application? 

Command-and-control interface triggering actions from custom voice commands to streamline clinical workflows.
“By adding Corti’s API directly into our platform, we’re giving customers the latest capabilities without forcing them to learn new systems or abandon familiar workflows.”
Dr. Thomas Brauner
CEO, Speech Processing Solutions

Now see what you can build

Real-time dictation

Let physicians speak naturally while Corti transcribes notes and letters fluently in the language of healthcare.

Real-time dictation

Ambient documentation

Transcribe patient conversations live with speaker attribution and fact extraction, so you can generate clean clinical notes.

Ambient documentation

Post-call transcription

Convert recorded consultations, tele-health sessions, or contact center calls into accurate transcripts with a single API.

Post-call transcription

Speech-enable any workflow

Command-and-control any application or power smart tools like symptom checkers, digital intake forms, or clinical assistants.

Speech-enable any workflow

Real-time dictation

Let physicians speak naturally while Corti transcribes notes, referrals, and reports instantly — with voice commands.

Real-time dictation

Ambient documentation

Transcribe patient conversations live with speaker attribution and fact extraction, so you can generate clean clinical notes.

Ambient documentation

Post-call transcription

Convert recorded consultations, tele-health sessions, or contact center calls into accurate transcripts with a single API.

Post-call transcription

Voice-powered features

Drive smart tools like symptom checkers, digital intake forms, or clinical assistants — all with real-time speech input.

Voice-powered features
Speech Recognition API

Built for healthcare. Trusted by developers.

🔥 Claim your $50 of free credits