curl --request POST \
--url https://scribe-api.telepatia.ai/v1/institutional/accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"apiKeyConfig": {
"validForDays": 365
},
"country": "CO",
"doctorSpecialties": [
"cardiology"
],
"email": "dr.juan@clinica.com",
"institutionalBranchName": "Sede Norte",
"internalCode": "DOC-001",
"language": "es",
"nameFull": "Dr. Juan Pérez",
"timeZone": "America/Bogota"
}
'import requests
url = "https://scribe-api.telepatia.ai/v1/institutional/accounts"
payload = {
"apiKeyConfig": { "validForDays": 365 },
"country": "CO",
"doctorSpecialties": ["cardiology"],
"email": "dr.juan@clinica.com",
"institutionalBranchName": "Sede Norte",
"internalCode": "DOC-001",
"language": "es",
"nameFull": "Dr. Juan Pérez",
"timeZone": "America/Bogota"
}
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({
apiKeyConfig: {validForDays: 365},
country: 'CO',
doctorSpecialties: ['cardiology'],
email: 'dr.juan@clinica.com',
institutionalBranchName: 'Sede Norte',
internalCode: 'DOC-001',
language: 'es',
nameFull: 'Dr. Juan Pérez',
timeZone: 'America/Bogota'
})
};
fetch('https://scribe-api.telepatia.ai/v1/institutional/accounts', 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/institutional/accounts",
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([
'apiKeyConfig' => [
'validForDays' => 365
],
'country' => 'CO',
'doctorSpecialties' => [
'cardiology'
],
'email' => 'dr.juan@clinica.com',
'institutionalBranchName' => 'Sede Norte',
'internalCode' => 'DOC-001',
'language' => 'es',
'nameFull' => 'Dr. Juan Pérez',
'timeZone' => 'America/Bogota'
]),
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/institutional/accounts"
payload := strings.NewReader("{\n \"apiKeyConfig\": {\n \"validForDays\": 365\n },\n \"country\": \"CO\",\n \"doctorSpecialties\": [\n \"cardiology\"\n ],\n \"email\": \"dr.juan@clinica.com\",\n \"institutionalBranchName\": \"Sede Norte\",\n \"internalCode\": \"DOC-001\",\n \"language\": \"es\",\n \"nameFull\": \"Dr. Juan Pérez\",\n \"timeZone\": \"America/Bogota\"\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/institutional/accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"apiKeyConfig\": {\n \"validForDays\": 365\n },\n \"country\": \"CO\",\n \"doctorSpecialties\": [\n \"cardiology\"\n ],\n \"email\": \"dr.juan@clinica.com\",\n \"institutionalBranchName\": \"Sede Norte\",\n \"internalCode\": \"DOC-001\",\n \"language\": \"es\",\n \"nameFull\": \"Dr. Juan Pérez\",\n \"timeZone\": \"America/Bogota\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scribe-api.telepatia.ai/v1/institutional/accounts")
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 \"apiKeyConfig\": {\n \"validForDays\": 365\n },\n \"country\": \"CO\",\n \"doctorSpecialties\": [\n \"cardiology\"\n ],\n \"email\": \"dr.juan@clinica.com\",\n \"institutionalBranchName\": \"Sede Norte\",\n \"internalCode\": \"DOC-001\",\n \"language\": \"es\",\n \"nameFull\": \"Dr. Juan Pérez\",\n \"timeZone\": \"America/Bogota\"\n}"
response = http.request(request)
puts response.read_body{
"apiKey": "<shown-once-store-securely>",
"apiKeyExpiresInDays": 365,
"email": "dr.juan@clinica.com",
"expiresAt": "2027-06-17T00:00:00Z",
"id": "acc_a1b2c3d4e5f6g7h8",
"internalCode": "DOC-001",
"publishableApiKey": "<shown-once-store-securely>"
}Create a doctor account
Create a new doctor account for the authenticated institution. If internalCode is provided it acts as an idempotency key — submitting the same value twice returns 409.
curl --request POST \
--url https://scribe-api.telepatia.ai/v1/institutional/accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"apiKeyConfig": {
"validForDays": 365
},
"country": "CO",
"doctorSpecialties": [
"cardiology"
],
"email": "dr.juan@clinica.com",
"institutionalBranchName": "Sede Norte",
"internalCode": "DOC-001",
"language": "es",
"nameFull": "Dr. Juan Pérez",
"timeZone": "America/Bogota"
}
'import requests
url = "https://scribe-api.telepatia.ai/v1/institutional/accounts"
payload = {
"apiKeyConfig": { "validForDays": 365 },
"country": "CO",
"doctorSpecialties": ["cardiology"],
"email": "dr.juan@clinica.com",
"institutionalBranchName": "Sede Norte",
"internalCode": "DOC-001",
"language": "es",
"nameFull": "Dr. Juan Pérez",
"timeZone": "America/Bogota"
}
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({
apiKeyConfig: {validForDays: 365},
country: 'CO',
doctorSpecialties: ['cardiology'],
email: 'dr.juan@clinica.com',
institutionalBranchName: 'Sede Norte',
internalCode: 'DOC-001',
language: 'es',
nameFull: 'Dr. Juan Pérez',
timeZone: 'America/Bogota'
})
};
fetch('https://scribe-api.telepatia.ai/v1/institutional/accounts', 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/institutional/accounts",
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([
'apiKeyConfig' => [
'validForDays' => 365
],
'country' => 'CO',
'doctorSpecialties' => [
'cardiology'
],
'email' => 'dr.juan@clinica.com',
'institutionalBranchName' => 'Sede Norte',
'internalCode' => 'DOC-001',
'language' => 'es',
'nameFull' => 'Dr. Juan Pérez',
'timeZone' => 'America/Bogota'
]),
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/institutional/accounts"
payload := strings.NewReader("{\n \"apiKeyConfig\": {\n \"validForDays\": 365\n },\n \"country\": \"CO\",\n \"doctorSpecialties\": [\n \"cardiology\"\n ],\n \"email\": \"dr.juan@clinica.com\",\n \"institutionalBranchName\": \"Sede Norte\",\n \"internalCode\": \"DOC-001\",\n \"language\": \"es\",\n \"nameFull\": \"Dr. Juan Pérez\",\n \"timeZone\": \"America/Bogota\"\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/institutional/accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"apiKeyConfig\": {\n \"validForDays\": 365\n },\n \"country\": \"CO\",\n \"doctorSpecialties\": [\n \"cardiology\"\n ],\n \"email\": \"dr.juan@clinica.com\",\n \"institutionalBranchName\": \"Sede Norte\",\n \"internalCode\": \"DOC-001\",\n \"language\": \"es\",\n \"nameFull\": \"Dr. Juan Pérez\",\n \"timeZone\": \"America/Bogota\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scribe-api.telepatia.ai/v1/institutional/accounts")
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 \"apiKeyConfig\": {\n \"validForDays\": 365\n },\n \"country\": \"CO\",\n \"doctorSpecialties\": [\n \"cardiology\"\n ],\n \"email\": \"dr.juan@clinica.com\",\n \"institutionalBranchName\": \"Sede Norte\",\n \"internalCode\": \"DOC-001\",\n \"language\": \"es\",\n \"nameFull\": \"Dr. Juan Pérez\",\n \"timeZone\": \"America/Bogota\"\n}"
response = http.request(request)
puts response.read_body{
"apiKey": "<shown-once-store-securely>",
"apiKeyExpiresInDays": 365,
"email": "dr.juan@clinica.com",
"expiresAt": "2027-06-17T00:00:00Z",
"id": "acc_a1b2c3d4e5f6g7h8",
"internalCode": "DOC-001",
"publishableApiKey": "<shown-once-store-securely>"
}Authorizations
API key passed as a Bearer token
Body
Request body for creating an institutional doctor account.
254"dr.juan@clinica.com"
Accepts either the specialty key ('CARDIOLOGY') or value ('cardiology'); always persisted as the value.
1acupuncture, 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 ["cardiology"]
Country as ISO 3166-1 alpha-2 (e.g. 'CO', 'BR'). Also accepts alpha-3 ('COL') or the English country name ('COLOMBIA'); all are normalized to the alpha-2 code Telepatia stores. Omit to inherit the institution's country.
"CO"
Account UI/content language as ISO 639-1 (e.g. 'es', 'pt', 'en'). Omit to inherit the institution's language.
"es"
IANA time zone (e.g. 'America/Bogota', 'America/Sao_Paulo'). Omit to inherit the institution's time zone.
"America/Bogota"
500"Dr. Juan Pérez"
255"Sede Norte"
Idempotency key scoped to the institution. Re-submitting the same value returns 409 if the account already exists. Omit to have the server generate a UUID v7 (no idempotency when generated); the value is returned in the response.
128"DOC-001"
Optional API key settings. Omit to mint a key valid for 365 days (1 year).
Show child attributes
Show child attributes
Response
Successful Response
Response body after creating an institutional doctor account.
Account publicId (acc_*). Use this as the identifier in subsequent API calls.
"acc_a1b2c3d4e5f6g7h8"
"dr.juan@clinica.com"
Raw secret API key for this account. Shown only once — store it securely.
"<shown-once-store-securely>"
Institution-scoped code for this account. Echoes the request value when supplied; otherwise a server-generated UUID v7. Always present — store it to fetch the account later via GET /accounts/{internalCode}.
"DOC-001"
UTC timestamp when this API key expires. Always present for institutional keys.
"2027-06-17T00:00:00Z"
API key lifetime in days that was applied (the validForDays used, default 365).
365
Raw publishable (pk_) key for the browser/embed exchange flow. Exchange-only (cannot call the API directly) and shown only once — minted alongside the secret key.
"<shown-once-store-securely>"