curl --request POST \
--url https://scribe-api.telepatia.ai/v1/scribe-sessions/live \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"consultation": {
"id": "CONSULT-12345",
"modality": "IN_PERSON"
},
"template": {
"id": "mrc_a1b2c3d4e5f6g7h8"
},
"patient": {
"id": "sp_a1b2c3d4e5f6g7h8"
},
"context": {
"notes": "Patient reports headache since Monday.",
"pastMedicalHistory": "Hypertension diagnosed 2020."
}
}
'import requests
url = "https://scribe-api.telepatia.ai/v1/scribe-sessions/live"
payload = {
"consultation": {
"id": "CONSULT-12345",
"modality": "IN_PERSON"
},
"template": { "id": "mrc_a1b2c3d4e5f6g7h8" },
"patient": { "id": "sp_a1b2c3d4e5f6g7h8" },
"context": {
"notes": "Patient reports headache since Monday.",
"pastMedicalHistory": "Hypertension diagnosed 2020."
}
}
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({
consultation: {id: 'CONSULT-12345', modality: 'IN_PERSON'},
template: {id: 'mrc_a1b2c3d4e5f6g7h8'},
patient: {id: 'sp_a1b2c3d4e5f6g7h8'},
context: {
notes: 'Patient reports headache since Monday.',
pastMedicalHistory: 'Hypertension diagnosed 2020.'
}
})
};
fetch('https://scribe-api.telepatia.ai/v1/scribe-sessions/live', 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/scribe-sessions/live",
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([
'consultation' => [
'id' => 'CONSULT-12345',
'modality' => 'IN_PERSON'
],
'template' => [
'id' => 'mrc_a1b2c3d4e5f6g7h8'
],
'patient' => [
'id' => 'sp_a1b2c3d4e5f6g7h8'
],
'context' => [
'notes' => 'Patient reports headache since Monday.',
'pastMedicalHistory' => 'Hypertension diagnosed 2020.'
]
]),
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/scribe-sessions/live"
payload := strings.NewReader("{\n \"consultation\": {\n \"id\": \"CONSULT-12345\",\n \"modality\": \"IN_PERSON\"\n },\n \"template\": {\n \"id\": \"mrc_a1b2c3d4e5f6g7h8\"\n },\n \"patient\": {\n \"id\": \"sp_a1b2c3d4e5f6g7h8\"\n },\n \"context\": {\n \"notes\": \"Patient reports headache since Monday.\",\n \"pastMedicalHistory\": \"Hypertension diagnosed 2020.\"\n }\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/scribe-sessions/live")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"consultation\": {\n \"id\": \"CONSULT-12345\",\n \"modality\": \"IN_PERSON\"\n },\n \"template\": {\n \"id\": \"mrc_a1b2c3d4e5f6g7h8\"\n },\n \"patient\": {\n \"id\": \"sp_a1b2c3d4e5f6g7h8\"\n },\n \"context\": {\n \"notes\": \"Patient reports headache since Monday.\",\n \"pastMedicalHistory\": \"Hypertension diagnosed 2020.\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scribe-api.telepatia.ai/v1/scribe-sessions/live")
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 \"consultation\": {\n \"id\": \"CONSULT-12345\",\n \"modality\": \"IN_PERSON\"\n },\n \"template\": {\n \"id\": \"mrc_a1b2c3d4e5f6g7h8\"\n },\n \"patient\": {\n \"id\": \"sp_a1b2c3d4e5f6g7h8\"\n },\n \"context\": {\n \"notes\": \"Patient reports headache since Monday.\",\n \"pastMedicalHistory\": \"Hypertension diagnosed 2020.\"\n }\n}"
response = http.request(request)
puts response.read_body{
"consultation": {
"id": "CONSULT-12345"
},
"live": {
"expiresAt": "2026-08-12T14:00:00+00:00",
"url": "wss://example.telepatia.ai/v1/ws/audio/abc?token=..."
},
"status": "created"
}Start a live consultation audio session
Create a consultation and receive a WebSocket URL to stream the audio to. Body is application/json with the same metadata as the batch endpoint (consultation, template, patient, context); the audio block is not accepted. Stream to live.url as described on that field, then finish through the webhook + document GET contract shared with the batch endpoint. Retrying with the same consultation id while recording returns the same session with a fresh URL; finished consultations return 409.
curl --request POST \
--url https://scribe-api.telepatia.ai/v1/scribe-sessions/live \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"consultation": {
"id": "CONSULT-12345",
"modality": "IN_PERSON"
},
"template": {
"id": "mrc_a1b2c3d4e5f6g7h8"
},
"patient": {
"id": "sp_a1b2c3d4e5f6g7h8"
},
"context": {
"notes": "Patient reports headache since Monday.",
"pastMedicalHistory": "Hypertension diagnosed 2020."
}
}
'import requests
url = "https://scribe-api.telepatia.ai/v1/scribe-sessions/live"
payload = {
"consultation": {
"id": "CONSULT-12345",
"modality": "IN_PERSON"
},
"template": { "id": "mrc_a1b2c3d4e5f6g7h8" },
"patient": { "id": "sp_a1b2c3d4e5f6g7h8" },
"context": {
"notes": "Patient reports headache since Monday.",
"pastMedicalHistory": "Hypertension diagnosed 2020."
}
}
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({
consultation: {id: 'CONSULT-12345', modality: 'IN_PERSON'},
template: {id: 'mrc_a1b2c3d4e5f6g7h8'},
patient: {id: 'sp_a1b2c3d4e5f6g7h8'},
context: {
notes: 'Patient reports headache since Monday.',
pastMedicalHistory: 'Hypertension diagnosed 2020.'
}
})
};
fetch('https://scribe-api.telepatia.ai/v1/scribe-sessions/live', 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/scribe-sessions/live",
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([
'consultation' => [
'id' => 'CONSULT-12345',
'modality' => 'IN_PERSON'
],
'template' => [
'id' => 'mrc_a1b2c3d4e5f6g7h8'
],
'patient' => [
'id' => 'sp_a1b2c3d4e5f6g7h8'
],
'context' => [
'notes' => 'Patient reports headache since Monday.',
'pastMedicalHistory' => 'Hypertension diagnosed 2020.'
]
]),
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/scribe-sessions/live"
payload := strings.NewReader("{\n \"consultation\": {\n \"id\": \"CONSULT-12345\",\n \"modality\": \"IN_PERSON\"\n },\n \"template\": {\n \"id\": \"mrc_a1b2c3d4e5f6g7h8\"\n },\n \"patient\": {\n \"id\": \"sp_a1b2c3d4e5f6g7h8\"\n },\n \"context\": {\n \"notes\": \"Patient reports headache since Monday.\",\n \"pastMedicalHistory\": \"Hypertension diagnosed 2020.\"\n }\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/scribe-sessions/live")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"consultation\": {\n \"id\": \"CONSULT-12345\",\n \"modality\": \"IN_PERSON\"\n },\n \"template\": {\n \"id\": \"mrc_a1b2c3d4e5f6g7h8\"\n },\n \"patient\": {\n \"id\": \"sp_a1b2c3d4e5f6g7h8\"\n },\n \"context\": {\n \"notes\": \"Patient reports headache since Monday.\",\n \"pastMedicalHistory\": \"Hypertension diagnosed 2020.\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scribe-api.telepatia.ai/v1/scribe-sessions/live")
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 \"consultation\": {\n \"id\": \"CONSULT-12345\",\n \"modality\": \"IN_PERSON\"\n },\n \"template\": {\n \"id\": \"mrc_a1b2c3d4e5f6g7h8\"\n },\n \"patient\": {\n \"id\": \"sp_a1b2c3d4e5f6g7h8\"\n },\n \"context\": {\n \"notes\": \"Patient reports headache since Monday.\",\n \"pastMedicalHistory\": \"Hypertension diagnosed 2020.\"\n }\n}"
response = http.request(request)
puts response.read_body{
"consultation": {
"id": "CONSULT-12345"
},
"live": {
"expiresAt": "2026-08-12T14:00:00+00:00",
"url": "wss://example.telepatia.ai/v1/ws/audio/abc?token=..."
},
"status": "created"
}Autorizaciones
Clave API enviada como token Bearer
Cuerpo
The consultation metadata: the multipart metadata part, or the JSON body.
The caller's consultation reference.
Show child attributes
Show child attributes
Template selection: an existing public id xor an inline structured template.
Show child attributes
Show child attributes
An existing patient by public id xor the inline identity.
Show child attributes
Show child attributes
Free-text context that feeds record generation.
Show child attributes
Show child attributes
Respuesta
Successful Response
201 response: the batch envelope plus the streaming URL.
Echo of the caller's consultation reference.
Show child attributes
Show child attributes
Where and until when the caller can stream the consultation audio.
Show child attributes
Show child attributes
Always created on success. Stream the audio to live.url; completion then follows the batch contract described on status above.
"created"