Text Generation API

Generate structured, accurate clinical notes in seconds

Turn transcripts, facts, or structured data into any type of medical documentation. Tailored to your format, specialty, and language.

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

Generate structured clinical documents with a few lines of code

curl --request POST \
  --url https://api.{environment}.corti.app/v2/interactions/{id}/documents/ \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Tenant-Name: <tenant-name>' \
  --data '{
  "context": [
    {
      "type": "facts",
      "data": [
        {
          "text": "<string>",
          "group": "Others",
          "source": "core"
        }
      ]
    }
  ],
  "templateKey": "<string>",
  "name": "<string>",
  "modelName": "\"model_name (Latest)\" | \"model_name_version\"",
  "outputLanguage": "<string>"
}'
Copy
import { CortiEnvironment, CortiClient } from "@corti/sdk";

const client = new CortiClient({
    environment: CortiEnvironment.Eu,
    auth: {
        clientId: "YOUR_CLIENT_ID",
        clientSecret: "YOUR_CLIENT_SECRET"
    },
    tenantName: "YOUR_TENANT_NAME"
});
await client.documents.create("f47ac10b-58cc-4372-a567-0e02b2c3d479", {
    context: [{
            type: "facts",
            data: [{
                    text: "text",
                    source: "core"
                }]
        }],
    templateKey: "templateKey",
    outputLanguage: "outputLanguage"
});
Copy
import requests

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

payload = {
    "context": [
        {
            "type": "facts",
            "data": [
                {
                    "text": "<string>",
                    "group": "Others",
                    "source": "core"
                }
            ]
        }
    ],
    "templateKey": "<string>",
    "name": "<string>",
    "modelName": "\"model_name (Latest)\" | \"model_name_version\"",
    "outputLanguage": "<string>"
}
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}/documents/",
  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([
    'context' => [
        [
                'type' => 'facts',
                'data' => [
                                [
                                                                'text' => '<string>',
                                                                'group' => 'Others',
                                                                'source' => 'core'
                                ]
                ]
        ]
    ],
    'templateKey' => '<string>',
    'name' => '<string>',
    'modelName' => '"model_name (Latest)" | "model_name_version"',
    'outputLanguage' => '<string>'
  ]),
  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}/documents/"

	payload := strings.NewReader("{\n  \"context\": [\n    {\n      \"type\": \"facts\",\n      \"data\": [\n        {\n          \"text\": \"<string>\",\n          \"group\": \"Others\",\n          \"source\": \"core\"\n        }\n      ]\n    }\n  ],\n  \"templateKey\": \"<string>\",\n  \"name\": \"<string>\",\n  \"modelName\": \"\\\"model_name (Latest)\\\" | \\\"model_name_version\\\"\",\n  \"outputLanguage\": \"<string>\"\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}/documents/")
  .header("Tenant-Name", "<tenant-name>")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"context\": [\n    {\n      \"type\": \"facts\",\n      \"data\": [\n        {\n          \"text\": \"<string>\",\n          \"group\": \"Others\",\n          \"source\": \"core\"\n        }\n      ]\n    }\n  ],\n  \"templateKey\": \"<string>\",\n  \"name\": \"<string>\",\n  \"modelName\": \"\\\"model_name (Latest)\\\" | \\\"model_name_version\\\"\",\n  \"outputLanguage\": \"<string>\"\n}")
  .asString();
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

Text generation capabilities

Insert Top Right Streamline Icon: https://streamlinehq.com

Templated-documents

Create clinical notes from transcripts or facts using ready-made templates.

Read more in docs →
Recording Tape Bubble Circle Streamline Icon: https://streamlinehq.com

FactsR™

Keeping records precise, relevant, and tightly aligned facts from clinical conversations.

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

Async generation

Create documents after an interaction by posting transcripts to the API.

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

Standard templates

Start fast with templates like SOAP, H&P, and Patient Summary, available in multiple languages and kept up to date.

Read more in docs →
File Add Alternate Streamline Icon: https://streamlinehq.com

Custom templates

Define your own templates, sections and styles to fit any specialty and workflow.

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

One-to-many generation

Produce several note types from the same encounter, such as SOAP and patient summary.

Read more in docs →

Generate clinical documentation tailored to every workflow

Generate accurate clinical notes

Turn transcripts, structured data, or past records into polished documentation automatically. Corti creates SOAP notes, discharge summaries, and follow-up letters in seconds, cutting manual work while ensuring accuracy, consistency, and compliance.

Interface transforming raw text into structured clinical notes to generate accurate medical documentation.
Real-time, ready-to-sign drafts

Generate full drafts seconds after the encounter ends. Clinicians simply review, edit, and sign, reducing hours of admin to minutes without disrupting workflow or accuracy.

Interface converting a transcript into a SOAP note that is ready to sign in real time.
Flexible, custom templates

Select from our library of clinical templates or define your own with custom sections, terminology, and style. We provide modular and flexible infrastructure, enabling documentation tailored to your users' specialties and standards.

Interface showing clinical templates including Brief Clinical Note, Outpatient Visit Note, SOAP Note, Nursing Note, H&P, Patient Summary, and Emergency Response.
Multiple outputs from one encounter

Produce different documents from the same interaction: a clinician note for the EHR, a patient summary, and a billing-ready report - all from the same source.

Interface generating multiple outputs from one transcript, including a clinical note, patient summary, and billing report.
Multilingual documentation at scale

Generate medical documentation in English, Danish, Spanish, German, French, Swedish, and more. Corti is the trusted foundation for teams building clinician and patient-facing applications with precise multilingual documentation needs.

Interface generating SOAP notes side by side in English and Spanish to support multilingual medical documentation.
“By combining Dedalus’ workflow expertise with Corti’s real-time reasoning engine, we’re delivering exactly what clinicians have been asking for — smarter tools that save time and improve care.”
Jan Rusch
Director Integrated Technologies, Dedalus

Now see what you can power

Patient summaries


Generate patient-facing handouts in plain language, directly from the same interaction used to create the clinical note.

Patient summaries


Clinical notes

Turn conversations into structured SOAP notes, discharge summaries, H&Ps, or ER reports with clean formatting and no manual typing.

Clinical notes

Referral letters

Use specialty-specific templates to auto-generate referral notes, follow-ups, or nursing documentation in your format.

Referral letters

Multi-language output


Generate both a professional note and a patient summary - each in a different language from a single transcript or fact.

Multi-language output


Patient summaries


Generate patient-facing handouts in plain language, directly from the same interaction used to create the clinical note.

Patient summaries


Clinical notes

Turn conversations into structured SOAP notes, discharge summaries, H&Ps, or ER reports with clean formatting and no manual typing.

Clinical notes

Referral letters

Use specialty-specific templates to auto-generate referral notes, follow-ups, or nursing documentation in your format.

Referral letters

Multi-language output


Generate both a professional note and a patient summary - each in a different language from a single transcript or fact.

Multi-language output

Text Generation API

Built for healthcare. Trusted by developers.

🔥 Claim your $50 of free credits