curl --request GET \
--url https://mcp.arlohealth.ai/api/health-records \
--header 'Authorization: Bearer <token>'import requests
url = "https://mcp.arlohealth.ai/api/health-records"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://mcp.arlohealth.ai/api/health-records', 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://mcp.arlohealth.ai/api/health-records",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://mcp.arlohealth.ai/api/health-records"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://mcp.arlohealth.ai/api/health-records")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://mcp.arlohealth.ai/api/health-records")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"section": "<string>",
"connected": true,
"message": "<string>",
"howToConnect": "<string>",
"connection": {
"payer": "<string>",
"importedAt": "<string>",
"lastSyncedAt": "<string>",
"syncStatus": "<string>",
"syncInProgress": true,
"syncNote": "<string>"
},
"demographics": {},
"recordCounts": {},
"note": "<string>",
"sections": {}
}{
"error": "<string>",
"reason": "<string>",
"code": "<string>"
}{
"error": "<string>",
"needsAuth": true
}Get Health Records
Read-only view over the patient’s insurance and health records,
sourced from their insurer via Flexpa. Call with no section first:
summary returns the connection status, the coverage header,
demographics, and a record COUNT per category. Then pass a section
to drill in. Rows are newest-first and capped at 100 per view; when a
view is truncated, re-call with the same section and
offset: nextOffset.
When no insurance is connected the response carries
connected: false; offer the user POST /api/health-records/link.
Records are optional: care works without them, so never block a
consultation on connecting.
curl --request GET \
--url https://mcp.arlohealth.ai/api/health-records \
--header 'Authorization: Bearer <token>'import requests
url = "https://mcp.arlohealth.ai/api/health-records"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://mcp.arlohealth.ai/api/health-records', 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://mcp.arlohealth.ai/api/health-records",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://mcp.arlohealth.ai/api/health-records"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://mcp.arlohealth.ai/api/health-records")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://mcp.arlohealth.ai/api/health-records")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"section": "<string>",
"connected": true,
"message": "<string>",
"howToConnect": "<string>",
"connection": {
"payer": "<string>",
"importedAt": "<string>",
"lastSyncedAt": "<string>",
"syncStatus": "<string>",
"syncInProgress": true,
"syncNote": "<string>"
},
"demographics": {},
"recordCounts": {},
"note": "<string>",
"sections": {}
}{
"error": "<string>",
"reason": "<string>",
"code": "<string>"
}{
"error": "<string>",
"needsAuth": true
}Authorizations
OAuth 2.1 with PKCE
Query Parameters
Which slice to return. summary is the cheap overview with counts; everything returns all sections at once (large).
summary, coverage, conditions, medications, allergies, immunizations, labs, vitals, visits, claims, everything Row offset for paging a truncated view (ignored for summary)
x >= 0Response
The requested section
Shape varies by section. Besides the named fields, each section contributes view blocks keyed by view name (coverage, coverage_class, problems, medication_request, allergies, immunizations, encounters, claims_header, ...), all with the capped-view shape { count, truncated?, showing?, nextOffset?, rows[] }, rows newest-first, count = the true total even when rows were capped.
Only present (false) when no insurance is connected; offer POST /api/health-records/link.
Insurance connection and sync state
Show child attributes
Show child attributes
Patient demographics row (summary, coverage, everything)
summary only, record count per category
everything only, every category block keyed by section name
Was this page helpful?