curl --request POST \
--url https://scribe-api.telepatia.ai/v1/appointments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"consultationInternalId": "CONSULT-12345",
"end": "2026-09-01T14:30:00.000Z",
"idCountry": "COLOMBIA",
"idType": "CC",
"idValue": "1024567890",
"medicalRecordConfigurationId": "mrc_a1b2c3d4e5f6g7h8",
"name": "John Doe",
"reason": "Follow-up",
"scribeSessionModality": "IN_PERSON",
"serviceType": "cardiology",
"start": "2026-09-01T14:00:00.000Z"
}
'import requests
url = "https://scribe-api.telepatia.ai/v1/appointments"
payload = {
"consultationInternalId": "CONSULT-12345",
"end": "2026-09-01T14:30:00.000Z",
"idCountry": "COLOMBIA",
"idType": "CC",
"idValue": "1024567890",
"medicalRecordConfigurationId": "mrc_a1b2c3d4e5f6g7h8",
"name": "John Doe",
"reason": "Follow-up",
"scribeSessionModality": "IN_PERSON",
"serviceType": "cardiology",
"start": "2026-09-01T14:00:00.000Z"
}
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({
consultationInternalId: 'CONSULT-12345',
end: '2026-09-01T14:30:00.000Z',
idCountry: 'COLOMBIA',
idType: 'CC',
idValue: '1024567890',
medicalRecordConfigurationId: 'mrc_a1b2c3d4e5f6g7h8',
name: 'John Doe',
reason: 'Follow-up',
scribeSessionModality: 'IN_PERSON',
serviceType: 'cardiology',
start: '2026-09-01T14:00:00.000Z'
})
};
fetch('https://scribe-api.telepatia.ai/v1/appointments', 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/appointments",
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([
'consultationInternalId' => 'CONSULT-12345',
'end' => '2026-09-01T14:30:00.000Z',
'idCountry' => 'COLOMBIA',
'idType' => 'CC',
'idValue' => '1024567890',
'medicalRecordConfigurationId' => 'mrc_a1b2c3d4e5f6g7h8',
'name' => 'John Doe',
'reason' => 'Follow-up',
'scribeSessionModality' => 'IN_PERSON',
'serviceType' => 'cardiology',
'start' => '2026-09-01T14:00:00.000Z'
]),
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/appointments"
payload := strings.NewReader("{\n \"consultationInternalId\": \"CONSULT-12345\",\n \"end\": \"2026-09-01T14:30:00.000Z\",\n \"idCountry\": \"COLOMBIA\",\n \"idType\": \"CC\",\n \"idValue\": \"1024567890\",\n \"medicalRecordConfigurationId\": \"mrc_a1b2c3d4e5f6g7h8\",\n \"name\": \"John Doe\",\n \"reason\": \"Follow-up\",\n \"scribeSessionModality\": \"IN_PERSON\",\n \"serviceType\": \"cardiology\",\n \"start\": \"2026-09-01T14:00:00.000Z\"\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/appointments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"consultationInternalId\": \"CONSULT-12345\",\n \"end\": \"2026-09-01T14:30:00.000Z\",\n \"idCountry\": \"COLOMBIA\",\n \"idType\": \"CC\",\n \"idValue\": \"1024567890\",\n \"medicalRecordConfigurationId\": \"mrc_a1b2c3d4e5f6g7h8\",\n \"name\": \"John Doe\",\n \"reason\": \"Follow-up\",\n \"scribeSessionModality\": \"IN_PERSON\",\n \"serviceType\": \"cardiology\",\n \"start\": \"2026-09-01T14:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scribe-api.telepatia.ai/v1/appointments")
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 \"consultationInternalId\": \"CONSULT-12345\",\n \"end\": \"2026-09-01T14:30:00.000Z\",\n \"idCountry\": \"COLOMBIA\",\n \"idType\": \"CC\",\n \"idValue\": \"1024567890\",\n \"medicalRecordConfigurationId\": \"mrc_a1b2c3d4e5f6g7h8\",\n \"name\": \"John Doe\",\n \"reason\": \"Follow-up\",\n \"scribeSessionModality\": \"IN_PERSON\",\n \"serviceType\": \"cardiology\",\n \"start\": \"2026-09-01T14:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"appointmentType": "follow-up",
"consultationInternalId": "CONSULT-12345",
"createdAt": "2026-08-28T12:00:00.000Z",
"end": "2026-09-01T14:30:00.000Z",
"id": "apt_a1b2c3d4e5f6g7h8",
"minutesDuration": 30,
"reason": "Follow-up",
"serviceType": "cardiology",
"start": "2026-09-01T14:00:00.000Z",
"status": "booked"
}Agendar una cita
Crea una consulta agendada (idempotente por consultationInternalId). Devuelve la cita con su id público estable (apt_).
curl --request POST \
--url https://scribe-api.telepatia.ai/v1/appointments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"consultationInternalId": "CONSULT-12345",
"end": "2026-09-01T14:30:00.000Z",
"idCountry": "COLOMBIA",
"idType": "CC",
"idValue": "1024567890",
"medicalRecordConfigurationId": "mrc_a1b2c3d4e5f6g7h8",
"name": "John Doe",
"reason": "Follow-up",
"scribeSessionModality": "IN_PERSON",
"serviceType": "cardiology",
"start": "2026-09-01T14:00:00.000Z"
}
'import requests
url = "https://scribe-api.telepatia.ai/v1/appointments"
payload = {
"consultationInternalId": "CONSULT-12345",
"end": "2026-09-01T14:30:00.000Z",
"idCountry": "COLOMBIA",
"idType": "CC",
"idValue": "1024567890",
"medicalRecordConfigurationId": "mrc_a1b2c3d4e5f6g7h8",
"name": "John Doe",
"reason": "Follow-up",
"scribeSessionModality": "IN_PERSON",
"serviceType": "cardiology",
"start": "2026-09-01T14:00:00.000Z"
}
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({
consultationInternalId: 'CONSULT-12345',
end: '2026-09-01T14:30:00.000Z',
idCountry: 'COLOMBIA',
idType: 'CC',
idValue: '1024567890',
medicalRecordConfigurationId: 'mrc_a1b2c3d4e5f6g7h8',
name: 'John Doe',
reason: 'Follow-up',
scribeSessionModality: 'IN_PERSON',
serviceType: 'cardiology',
start: '2026-09-01T14:00:00.000Z'
})
};
fetch('https://scribe-api.telepatia.ai/v1/appointments', 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/appointments",
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([
'consultationInternalId' => 'CONSULT-12345',
'end' => '2026-09-01T14:30:00.000Z',
'idCountry' => 'COLOMBIA',
'idType' => 'CC',
'idValue' => '1024567890',
'medicalRecordConfigurationId' => 'mrc_a1b2c3d4e5f6g7h8',
'name' => 'John Doe',
'reason' => 'Follow-up',
'scribeSessionModality' => 'IN_PERSON',
'serviceType' => 'cardiology',
'start' => '2026-09-01T14:00:00.000Z'
]),
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/appointments"
payload := strings.NewReader("{\n \"consultationInternalId\": \"CONSULT-12345\",\n \"end\": \"2026-09-01T14:30:00.000Z\",\n \"idCountry\": \"COLOMBIA\",\n \"idType\": \"CC\",\n \"idValue\": \"1024567890\",\n \"medicalRecordConfigurationId\": \"mrc_a1b2c3d4e5f6g7h8\",\n \"name\": \"John Doe\",\n \"reason\": \"Follow-up\",\n \"scribeSessionModality\": \"IN_PERSON\",\n \"serviceType\": \"cardiology\",\n \"start\": \"2026-09-01T14:00:00.000Z\"\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/appointments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"consultationInternalId\": \"CONSULT-12345\",\n \"end\": \"2026-09-01T14:30:00.000Z\",\n \"idCountry\": \"COLOMBIA\",\n \"idType\": \"CC\",\n \"idValue\": \"1024567890\",\n \"medicalRecordConfigurationId\": \"mrc_a1b2c3d4e5f6g7h8\",\n \"name\": \"John Doe\",\n \"reason\": \"Follow-up\",\n \"scribeSessionModality\": \"IN_PERSON\",\n \"serviceType\": \"cardiology\",\n \"start\": \"2026-09-01T14:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scribe-api.telepatia.ai/v1/appointments")
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 \"consultationInternalId\": \"CONSULT-12345\",\n \"end\": \"2026-09-01T14:30:00.000Z\",\n \"idCountry\": \"COLOMBIA\",\n \"idType\": \"CC\",\n \"idValue\": \"1024567890\",\n \"medicalRecordConfigurationId\": \"mrc_a1b2c3d4e5f6g7h8\",\n \"name\": \"John Doe\",\n \"reason\": \"Follow-up\",\n \"scribeSessionModality\": \"IN_PERSON\",\n \"serviceType\": \"cardiology\",\n \"start\": \"2026-09-01T14:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"appointmentType": "follow-up",
"consultationInternalId": "CONSULT-12345",
"createdAt": "2026-08-28T12:00:00.000Z",
"end": "2026-09-01T14:30:00.000Z",
"id": "apt_a1b2c3d4e5f6g7h8",
"minutesDuration": 30,
"reason": "Follow-up",
"serviceType": "cardiology",
"start": "2026-09-01T14:00:00.000Z",
"status": "booked"
}Autorizaciones
Clave API enviada como token Bearer
Cuerpo
Request body for creating (idempotent upsert) an appointment.
The patient identity mirrors set-consultation-context: reference an existing
patient by patientId (sp_) or internalCode, or send the inline identity
to create one. Send a template (medicalRecordConfigurationId) to also seed the
consultation context so it is ready before the visit.
Your own consultation id. The booking join key: the consultation that fulfils this appointment carries the same id.
128^[a-zA-Z0-9_-]{1,128}$"CONSULT-12345"
ISO-8601 start. Required.
64"2026-09-01T14:00:00.000Z"
ISO-8601 end. Required.
64"2026-09-01T14:30:00.000Z"
Patient full name. Part of the inline identity. Provide the full inline identity (name + idCountry + idType + idValue), or reference an existing patient with patientId or internalCode: exactly one of the three is required.
1 - 500"John Doe"
Patient document country. Part of the inline identity (see name).
AF, AX, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BQ, BA, BW, BV, BR, IO, BN, BG, BF, BI, KH, CM, CA, CV, KY, CF, TD, CL, CX, CC, CO, KM, CK, CR, CI, HR, CU, CW, CY, CZ, CD, DK, DJ, DM, DO, EC, EG, SV, GQ, ER, EE, SZ, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, VA, HN, HK, HU, IS, IN, ID, IQ, IE, IR, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, XK, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, KP, MP, NO, OM, PK, PW, PA, PG, PY, CN, PE, PH, PN, PL, PT, PR, QA, CG, GM, RE, RO, RU, RW, BL, SH, KN, LC, MF, PM, VC, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, KR, SS, ES, LK, PS, SD, SR, SJ, SE, CH, SY, TW, TJ, TH, MK, TL, TG, TK, TO, TT, TN, TR, TM, TC, TV, UG, UA, AE, GB, TZ, UM, US, UY, UZ, VU, VE, VN, VG, VI, WF, EH, YE, ZM, ZW "CO"
Patient document type. Part of the inline identity (see name).
CC, TI, CE, RC, PASSPORT, RG, CPF, OTHER_DOC "CC"
Patient document number. Part of the inline identity (see name).
1 - 50"1024567890"
Public id of an existing patient (sp_...). One of the three patient references (exactly one required): patientId, internalCode, or the inline identity.
^sp_[a-z0-9]{16}$"sp_a1b2c3d4e5f6g7h8"
Your own patient code, unique per institution. Looks up an existing patient; when none matches, the inline identity creates one. One of the three patient references (exactly one required).
1 - 128"MRN-000123"
The doctor whose agenda this booking joins: an account publicId (acc_...) or your own internalCode for that account. Omit it to book into the calling key's own agenda. Naming another account requires an institutional key; a doctor key always books for itself.
1 - 128"acc_a1b2c3d4e5f6g7h8"
Duration in minutes.
x >= 130
256"cardiology"
256"follow-up"
2000"Follow-up"
2000"Routine check"
Public id of a medical record configuration (mrc_...). When present, the consultation context is seeded.
128"mrc_a1b2c3d4e5f6g7h8"
Modalidades de sesión de scribe soportadas.
IN_PERSON, TELEMEDICINE, DICTATION "IN_PERSON"
10000"Patient reports headache"
10000"Hypertension"
Respuesta
Respuesta exitosa
A single appointment. id is the stable public id (apt_...).
Stable public identifier.
"apt_a1b2c3d4e5f6g7h8"
"booked"
ISO-8601 timestamp when the appointment was created.
"CONSULT-12345"
"2026-09-01T14:00:00.000Z"
"2026-09-01T14:30:00.000Z"
30
"cardiology"
"follow-up"
"Follow-up"
"Routine check"