curl --request POST \
--url https://scribe-api.telepatia.ai/v1/medical-record-configurations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"configuration": {
"chiefComplaint": {
"instructionSet": {
"telepatiaPromptId": "CHIEF_COMPLAINT"
},
"schema": {
"instructions": "Patient's chief complaint.",
"type": "string"
}
},
"vitals": {
"instructionSet": {
"telepatiaPromptId": "VITAL_SIGNS"
},
"schema": {
"instructions": "Vital signs.",
"properties": {
"heartRate": {
"instructions": "Heart rate in bpm.",
"type": "integer"
}
},
"type": "object"
}
}
},
"name": "Cardiology intake"
}
EOFimport requests
url = "https://scribe-api.telepatia.ai/v1/medical-record-configurations"
payload = {
"configuration": {
"chiefComplaint": {
"instructionSet": { "telepatiaPromptId": "CHIEF_COMPLAINT" },
"schema": {
"instructions": "Patient's chief complaint.",
"type": "string"
}
},
"vitals": {
"instructionSet": { "telepatiaPromptId": "VITAL_SIGNS" },
"schema": {
"instructions": "Vital signs.",
"properties": { "heartRate": {
"instructions": "Heart rate in bpm.",
"type": "integer"
} },
"type": "object"
}
}
},
"name": "Cardiology intake"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
configuration: {
chiefComplaint: {
instructionSet: {telepatiaPromptId: 'CHIEF_COMPLAINT'},
schema: {instructions: 'Patient\'s chief complaint.', type: 'string'}
},
vitals: {
instructionSet: {telepatiaPromptId: 'VITAL_SIGNS'},
schema: {
instructions: 'Vital signs.',
properties: {heartRate: {instructions: 'Heart rate in bpm.', type: 'integer'}},
type: 'object'
}
}
},
name: 'Cardiology intake'
})
};
fetch('https://scribe-api.telepatia.ai/v1/medical-record-configurations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scribe-api.telepatia.ai/v1/medical-record-configurations",
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([
'configuration' => [
'chiefComplaint' => [
'instructionSet' => [
'telepatiaPromptId' => 'CHIEF_COMPLAINT'
],
'schema' => [
'instructions' => 'Patient\'s chief complaint.',
'type' => 'string'
]
],
'vitals' => [
'instructionSet' => [
'telepatiaPromptId' => 'VITAL_SIGNS'
],
'schema' => [
'instructions' => 'Vital signs.',
'properties' => [
'heartRate' => [
'instructions' => 'Heart rate in bpm.',
'type' => 'integer'
]
],
'type' => 'object'
]
]
],
'name' => 'Cardiology intake'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://scribe-api.telepatia.ai/v1/medical-record-configurations"
payload := strings.NewReader("{\n \"configuration\": {\n \"chiefComplaint\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"CHIEF_COMPLAINT\"\n },\n \"schema\": {\n \"instructions\": \"Patient's chief complaint.\",\n \"type\": \"string\"\n }\n },\n \"vitals\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"VITAL_SIGNS\"\n },\n \"schema\": {\n \"instructions\": \"Vital signs.\",\n \"properties\": {\n \"heartRate\": {\n \"instructions\": \"Heart rate in bpm.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"name\": \"Cardiology intake\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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(string(body))
}HttpResponse<String> response = Unirest.post("https://scribe-api.telepatia.ai/v1/medical-record-configurations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"configuration\": {\n \"chiefComplaint\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"CHIEF_COMPLAINT\"\n },\n \"schema\": {\n \"instructions\": \"Patient's chief complaint.\",\n \"type\": \"string\"\n }\n },\n \"vitals\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"VITAL_SIGNS\"\n },\n \"schema\": {\n \"instructions\": \"Vital signs.\",\n \"properties\": {\n \"heartRate\": {\n \"instructions\": \"Heart rate in bpm.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"name\": \"Cardiology intake\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scribe-api.telepatia.ai/v1/medical-record-configurations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"configuration\": {\n \"chiefComplaint\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"CHIEF_COMPLAINT\"\n },\n \"schema\": {\n \"instructions\": \"Patient's chief complaint.\",\n \"type\": \"string\"\n }\n },\n \"vitals\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"VITAL_SIGNS\"\n },\n \"schema\": {\n \"instructions\": \"Vital signs.\",\n \"properties\": {\n \"heartRate\": {\n \"instructions\": \"Heart rate in bpm.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"name\": \"Cardiology intake\"\n}"
response = http.request(request)
puts response.read_body{
"created": true,
"createdAt": "2026-04-20T14:30:00Z",
"hash": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"id": "mrc_a1b2c3d4e5f6g7h8",
"name": "Cardiology intake"
}Crear una Smart Template
Registra una Smart Template (configuración de historia clínica). Idempotente por hash de contenido: configuraciones idénticas para la misma cuenta devuelven el id existente con created: false.
curl --request POST \
--url https://scribe-api.telepatia.ai/v1/medical-record-configurations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"configuration": {
"chiefComplaint": {
"instructionSet": {
"telepatiaPromptId": "CHIEF_COMPLAINT"
},
"schema": {
"instructions": "Patient's chief complaint.",
"type": "string"
}
},
"vitals": {
"instructionSet": {
"telepatiaPromptId": "VITAL_SIGNS"
},
"schema": {
"instructions": "Vital signs.",
"properties": {
"heartRate": {
"instructions": "Heart rate in bpm.",
"type": "integer"
}
},
"type": "object"
}
}
},
"name": "Cardiology intake"
}
EOFimport requests
url = "https://scribe-api.telepatia.ai/v1/medical-record-configurations"
payload = {
"configuration": {
"chiefComplaint": {
"instructionSet": { "telepatiaPromptId": "CHIEF_COMPLAINT" },
"schema": {
"instructions": "Patient's chief complaint.",
"type": "string"
}
},
"vitals": {
"instructionSet": { "telepatiaPromptId": "VITAL_SIGNS" },
"schema": {
"instructions": "Vital signs.",
"properties": { "heartRate": {
"instructions": "Heart rate in bpm.",
"type": "integer"
} },
"type": "object"
}
}
},
"name": "Cardiology intake"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
configuration: {
chiefComplaint: {
instructionSet: {telepatiaPromptId: 'CHIEF_COMPLAINT'},
schema: {instructions: 'Patient\'s chief complaint.', type: 'string'}
},
vitals: {
instructionSet: {telepatiaPromptId: 'VITAL_SIGNS'},
schema: {
instructions: 'Vital signs.',
properties: {heartRate: {instructions: 'Heart rate in bpm.', type: 'integer'}},
type: 'object'
}
}
},
name: 'Cardiology intake'
})
};
fetch('https://scribe-api.telepatia.ai/v1/medical-record-configurations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scribe-api.telepatia.ai/v1/medical-record-configurations",
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([
'configuration' => [
'chiefComplaint' => [
'instructionSet' => [
'telepatiaPromptId' => 'CHIEF_COMPLAINT'
],
'schema' => [
'instructions' => 'Patient\'s chief complaint.',
'type' => 'string'
]
],
'vitals' => [
'instructionSet' => [
'telepatiaPromptId' => 'VITAL_SIGNS'
],
'schema' => [
'instructions' => 'Vital signs.',
'properties' => [
'heartRate' => [
'instructions' => 'Heart rate in bpm.',
'type' => 'integer'
]
],
'type' => 'object'
]
]
],
'name' => 'Cardiology intake'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://scribe-api.telepatia.ai/v1/medical-record-configurations"
payload := strings.NewReader("{\n \"configuration\": {\n \"chiefComplaint\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"CHIEF_COMPLAINT\"\n },\n \"schema\": {\n \"instructions\": \"Patient's chief complaint.\",\n \"type\": \"string\"\n }\n },\n \"vitals\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"VITAL_SIGNS\"\n },\n \"schema\": {\n \"instructions\": \"Vital signs.\",\n \"properties\": {\n \"heartRate\": {\n \"instructions\": \"Heart rate in bpm.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"name\": \"Cardiology intake\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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(string(body))
}HttpResponse<String> response = Unirest.post("https://scribe-api.telepatia.ai/v1/medical-record-configurations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"configuration\": {\n \"chiefComplaint\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"CHIEF_COMPLAINT\"\n },\n \"schema\": {\n \"instructions\": \"Patient's chief complaint.\",\n \"type\": \"string\"\n }\n },\n \"vitals\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"VITAL_SIGNS\"\n },\n \"schema\": {\n \"instructions\": \"Vital signs.\",\n \"properties\": {\n \"heartRate\": {\n \"instructions\": \"Heart rate in bpm.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"name\": \"Cardiology intake\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scribe-api.telepatia.ai/v1/medical-record-configurations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"configuration\": {\n \"chiefComplaint\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"CHIEF_COMPLAINT\"\n },\n \"schema\": {\n \"instructions\": \"Patient's chief complaint.\",\n \"type\": \"string\"\n }\n },\n \"vitals\": {\n \"instructionSet\": {\n \"telepatiaPromptId\": \"VITAL_SIGNS\"\n },\n \"schema\": {\n \"instructions\": \"Vital signs.\",\n \"properties\": {\n \"heartRate\": {\n \"instructions\": \"Heart rate in bpm.\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"name\": \"Cardiology intake\"\n}"
response = http.request(request)
puts response.read_body{
"created": true,
"createdAt": "2026-04-20T14:30:00Z",
"hash": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"id": "mrc_a1b2c3d4e5f6g7h8",
"name": "Cardiology intake"
}Autorizaciones
Clave API enviada como token Bearer
Cuerpo
Cuerpo de solicitud para registrar una configuración de historia clínica — un mapa de clave de sección a definición de sección.
Section map keyed by node name (schema + optional prompt strategy).
Show child attributes
Show child attributes
Human-readable display name. Defaults to the public id when omitted.
200"Cardiology intake"
Optional human-readable description of the template.
500"Intake template for the cardiology outpatient clinic."
Medical specialty this template targets, given as the enum key (such as GENERAL_MEDICINE) or its camelCase value (such as generalMedicine). When set by an institutional API key, the template is distributed as a child copy to every enabled account in the institution that already carries this specialty. Accounts without this specialty are not targets, and a doctor API key never distributes. Optional; omitting it skips distribution.
acupuncture, alternativeMedicine, ayurvedicMedicine, chiropractic, herbalMedicine, homeopathy, naturopathy, traditionalChineseMedicine, cosmeticDentistry, dentistry, developmentalBehavioralPediatrics, endodontics, forensicDentistry, maxillofacialProsthodontics, oralMaxillofacialSurgery, oralMedicine, oralPathology, oralSurgery, orthodontics, pediatricDentistry, periodontics, prosthodontics, addictionPsychiatry, adolescentMedicine, aerospaceMedicine, allergyImmunology, andrology, anesthesiology, anesthesiologyCriticalCare, bariatricSurgery, breastRadiology, breastSurgery, cardiacSurgery, cardiovascularSurgery, cardiology, cardiovascularDisease, cardiovascularRiskProgram, childAbusePediatrics, childAdolescentPsychiatry, childNeurology, childWelfareSocialWork, clinicalNeurophysiology, clinicalSocialWork, colorectalSurgery, communityMedicine, communitySocialWork, consultationLiaisonPsychiatry, cosmeticDermatology, craniofacialTrauma, dermatology, dermoscopy, diabetes, diagnosticRadiology, electrophysiology, emergencyCriticalCare, emergencyMedicine, emergencyPsychiatry, endocrineSurgery, endocrinology, epilepsy, facialPlasticSurgery, familyMedicine, familySocialWork, footAnkleSurgery, forensicPsychiatry, forensicSocialWork, gastroenterology, generalMedicine, generalMedicinePsychiatry, generalSurgery, geriatricMedicine, geriatricPsychiatry, geriatricSocialWork, ginecology, gynecologicOncology, gynecologicSurgery, gynecology, handSurgery, headNeckSurgery, headacheMedicine, heartFailureTransplantCardiology, hematology, hepatobiliarySurgery, hipKneeSurgery, hospitalist, infectiousDisease, internalCriticalCare, internalMedicine, interventionalCardiology, interventionalRadiology, maternalFetalMedicine, medicalSocialWork, militarySocialWork, minimallyInvasiveGynecologicSurgery, mohsSurgery, musculoskeletalRadiology, neonatology, nephrology, neurocriticalCare, neuroimmunology, neurology, neuromuscularMedicine, neuroradiology, neurorehabilitation, neurosurgery, neurotology, nuclearMedicine, obstetrics, obstetricsGynecology, occupationalMedicine, occupationalSocialWork, oculoplasticSurgery, oncology, oncologySocialWork, ophthalmology, orthopedicHandSurgery, orthopedicSportsMedicine, orthopedicTrauma, orthopedics, otolaryngology, painMedicine, palliativeMedicine, palliativeSocialWork, pediatricAllergyImmunology, pediatricAnesthesiology, pediatricCardiology, pediatricCriticalCare, pediatricDermatology, pediatricEmergencyMedicine, pediatricEndocrinology, pediatricENT, pediatricGastroenterology, pediatricHematologyOncology, pediatricInfectiousDisease, pediatricNephrology, pediatricNeurology, pediatricCardiacSurgery, pediatricOncology, pediatricOphthalmology, pediatricOrthopedics, pediatricPalliativeCare, pediatricPulmonology, pediatricRadiology, pediatricRheumatology, pediatricSocialWork, pediatricSurgery, pediatricTrauma, pediatricUrology, pediatrics, perinatalPsychiatry, physicalMedicineRehab, plasticSurgery, prenatalCareProgram, preventiveMedicine, psychiatricSocialWork, psychiatry, psychosomaticMedicine, publicHealth, pulmonaryDisease, pulmonology, radiationOncologist, radiationOncology, reproductiveEndocrinology, retinaSurgery, rheumatology, riasProgram, manager, schoolSocialWork, shoulderElbowSurgery, sleepMedicine, socialWork, spinalCordInjury, spinalTrauma, spineSurgery, sportsMedicine, substanceAbuseSocialWork, surgicalOncology, telemedicine, thoracicSurgery, transplantHepatology, transplantSurgery, traumaSurgery, traumatology, triage, unknown, urgentCare, urologicOncology, urology, vascularSurgery, nursing, clinicalNutrition, eatingDisorderNutrition, gastroenterologicNutrition, geriatricNutrition, nutrition, oncologyNutrition, pediatricNutrition, renalNutrition, sportsNutrition, clinicalPsychology, counselingPsychology, developmentalPsychology, forensicPsychology, geropsychology, healthPsychology, industrialOrganizationalPsychology, militaryPsychology, neuropsychology, positivePsychology, psychology, rehabilitationPsychology, schoolPsychology, sportsPsychology, occupationalTherapy, physicalTherapy, respiratoryTherapy, speechTherapy, therapy, other "GENERAL_MEDICINE"
Product discriminator for this template. Omit for an ordinary Scribe template with no declared care setting; readers treat the omitted value as defaultOutpatient. defaultOutpatient, inpatient, and emergencyRoom also denote a Scribe template, and each names the clinical care setting. reportDictation is a dictation report template; historySummary is a patient-history summarizer. Set at creation and never changed; it is part of the deduplication identity, so the same configuration may exist once per value.
defaultOutpatient, inpatient, emergencyRoom, reportDictation, historySummary "reportDictation"
Respuesta
Respuesta exitosa
Cuerpo de respuesta al registrar una configuración de historia clínica.
Public ID of the medical record configuration.
"mrc_a1b2c3d4e5f6g7h8"
Resolved display name (defaults to the public id when none was provided).
"Cardiology intake"
SHA-256 hash of the canonical configuration JSON.
"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
"2026-04-20T14:30:00Z"
True if a new configuration was created; False if a matching one already existed.
true