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"
}Criar uma Smart Template
Registra uma Smart Template (configuração de prontuário médico). Idempotente por hash de conteúdo: configurações idênticas para a mesma conta retornam o id existente com 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"
}Autorizações
Chave de API enviada como token Bearer
Corpo
Corpo da requisição para registrar uma configuração de prontuário médico — um mapa de chave de seção para definição de seção.
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"
Resposta
Resposta bem-sucedida
Corpo da resposta ao registrar uma configuração de prontuário médico.
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