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.
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"
}'
await client.transcripts.create("f47ac10b-58cc-4372-a567-0e02b2c3d479", {
recordingId: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
primaryLanguage: "en",
modelName: "base"
});
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())
<?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;
}
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))
}
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();
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();
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
Punctuation
Improve readability with automatic punctuation added consistently across the transcript.
Voice commands
Allow users to speak or type short, predefined commands instead of navigating menus or typing manually.
Preview results
Show interim transcripts in real time to validate accuracy early and keep users confident while dictating.
Languages
Capture reliable transcripts across languages your patients and clinicians prefer to speak.
Diarization
Separate speakers automatically, making each voice clear and easy to identify in transcripts.
Multi-channel
Capture audio from each channel independently to produce cleaner and more accurate transcripts.
Formatting (beta)
Standardize spoken dates, times, and numbers into precise, structured medical notation.
Vocabulary (beta)
Expand medical term recognition to improve accuracy for specialized domains further.
Power any voice-based healthcare workflow
With support for real-time audio stream or asynchronous file processing, Corti speech recognition has the flexibility to support any documentation workflow.

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.

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.

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?


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.
Ambient documentation
Transcribe patient conversations live with speaker attribution and fact extraction, so you can generate clean clinical notes.
Post-call transcription
Convert recorded consultations, tele-health sessions, or contact center calls into accurate transcripts with a single API.
Speech-enable any workflow
Command-and-control any application or power smart tools like symptom checkers, digital intake forms, or clinical assistants.