Appearance
Quick Start
Make your first API call in 30 seconds.
Base URL
https://fhir-api.luxera.io1. Search for endpoints
Find all FHIR endpoints for "Cleveland Clinic":
bash
curl "https://fhir-api.luxera.io/api/v1/endpoints?query=Cleveland+Clinic"python
import requests
response = requests.get("https://fhir-api.luxera.io/api/v1/endpoints", params={
"query": "Cleveland Clinic"
})
data = response.json()
for endpoint in data["data"]:
print(f"{endpoint['organizationName']} — {endpoint['url']}")typescript
const response = await fetch(
"https://fhir-api.luxera.io/api/v1/endpoints?query=Cleveland+Clinic"
);
const { data, meta } = await response.json();
for (const endpoint of data) {
console.log(`${endpoint.organizationName} — ${endpoint.url}`);
}csharp
using var client = new HttpClient();
var response = await client.GetAsync(
"https://fhir-api.luxera.io/api/v1/endpoints?query=Cleveland+Clinic"
);
var json = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<ApiResponse>(json);
foreach (var endpoint in result.Data)
{
Console.WriteLine($"{endpoint.OrganizationName} — {endpoint.Url}");
}Response:
json
{
"success": true,
"data": [
{
"id": "a1b2c3d4e5f6g7h8",
"url": "https://epicproxy.et0965.epichosted.com/FHIRProxy/api/FHIR/R4/",
"vendorName": "Epic Systems",
"vendorId": "epic",
"organizationName": "Cleveland Clinic",
"fhirVersion": "R4",
"access": [],
"status": "listed",
"lastUpdated": "2026-04-09T03:14:32.584Z"
}
],
"meta": { "total": 23, "page": 1, "limit": 25 }
}2. Filter by vendor
bash
curl "https://fhir-api.luxera.io/api/v1/endpoints?vendor=epic&limit=5"python
response = requests.get("https://fhir-api.luxera.io/api/v1/endpoints", params={
"vendor": "epic",
"limit": 5
})typescript
const response = await fetch(
"https://fhir-api.luxera.io/api/v1/endpoints?vendor=epic&limit=5"
);csharp
var response = await client.GetAsync(
"https://fhir-api.luxera.io/api/v1/endpoints?vendor=epic&limit=5"
);3. Filter by FHIR version
bash
curl "https://fhir-api.luxera.io/api/v1/endpoints?fhirVersion=R4&limit=5"python
response = requests.get("https://fhir-api.luxera.io/api/v1/endpoints", params={
"fhirVersion": "R4",
"limit": 5
})typescript
const response = await fetch(
"https://fhir-api.luxera.io/api/v1/endpoints?fhirVersion=R4&limit=5"
);csharp
var response = await client.GetAsync(
"https://fhir-api.luxera.io/api/v1/endpoints?fhirVersion=R4&limit=5"
);4. Combine filters
Epic endpoints in Wisconsin:
bash
curl "https://fhir-api.luxera.io/api/v1/endpoints?vendor=epic&state=WI&limit=5"python
response = requests.get("https://fhir-api.luxera.io/api/v1/endpoints", params={
"vendor": "epic",
"state": "WI",
"limit": 5
})typescript
const response = await fetch(
"https://fhir-api.luxera.io/api/v1/endpoints?vendor=epic&state=WI&limit=5"
);csharp
var response = await client.GetAsync(
"https://fhir-api.luxera.io/api/v1/endpoints?vendor=epic&state=WI&limit=5"
);5. Get dataset stats
bash
curl "https://fhir-api.luxera.io/api/v1/stats"python
response = requests.get("https://fhir-api.luxera.io/api/v1/stats")
stats = response.json()["data"]
print(f"Endpoints: {stats['totalEndpoints']:,}")
print(f"Vendors: {stats['vendorCount']}")typescript
const response = await fetch("https://fhir-api.luxera.io/api/v1/stats");
const { data: stats } = await response.json();
console.log(`Endpoints: ${stats.totalEndpoints.toLocaleString()}`);
console.log(`Vendors: ${stats.vendorCount}`);csharp
var response = await client.GetAsync(
"https://fhir-api.luxera.io/api/v1/stats"
);6. List all vendors
bash
curl "https://fhir-api.luxera.io/api/v1/vendors"python
response = requests.get("https://fhir-api.luxera.io/api/v1/vendors")
for vendor in response.json()["data"]:
print(f"{vendor['name']}: {vendor['endpointCount']} endpoints")typescript
const response = await fetch("https://fhir-api.luxera.io/api/v1/vendors");
const { data: vendors } = await response.json();
for (const vendor of vendors) {
console.log(`${vendor.name}: ${vendor.endpointCount} endpoints`);
}csharp
var response = await client.GetAsync(
"https://fhir-api.luxera.io/api/v1/vendors"
);7. Paginate through all results
bash
# Page through all Epic endpoints
for page in 1 2 3 4 5; do
curl "https://fhir-api.luxera.io/api/v1/endpoints?vendor=epic&limit=100&page=$page"
donepython
import requests
page = 1
all_endpoints = []
while True:
response = requests.get("https://fhir-api.luxera.io/api/v1/endpoints", params={
"vendor": "epic",
"limit": 100,
"page": page
})
result = response.json()
all_endpoints.extend(result["data"])
if page * 100 >= result["meta"]["total"]:
break
page += 1
print(f"Fetched {len(all_endpoints)} Epic endpoints")typescript
const allEndpoints = [];
let page = 1;
while (true) {
const response = await fetch(
`https://fhir-api.luxera.io/api/v1/endpoints?vendor=epic&limit=100&page=${page}`
);
const result = await response.json();
allEndpoints.push(...result.data);
if (page * 100 >= result.meta.total) break;
page++;
}
console.log(`Fetched ${allEndpoints.length} Epic endpoints`);csharp
var allEndpoints = new List<Endpoint>();
var page = 1;
while (true)
{
var response = await client.GetAsync(
$"https://fhir-api.luxera.io/api/v1/endpoints?vendor=epic&limit=100&page={page}"
);
var result = JsonSerializer.Deserialize<ApiResponse>(
await response.Content.ReadAsStringAsync()
);
allEndpoints.AddRange(result.Data);
if (page * 100 >= result.Meta.Total) break;
page++;
}
Console.WriteLine($"Fetched {allEndpoints.Count} Epic endpoints");Use cases
- Health tech developers — Find FHIR endpoints to integrate with, without maintaining your own scraper
- AI agents & LLM tools — Programmatic discovery of FHIR endpoints for automated workflows
- Compliance teams — Verify endpoint availability across your vendor network
- Researchers — Analyze the US FHIR endpoint landscape
Rate limits
Requests are rate limited to protect the infrastructure. Check the RateLimit-* response headers on every response and back off as your quota approaches zero. See the Rate Limits guide for details.
Next steps
- API Reference — Full parameter documentation
- Searching guide — Advanced search techniques
- Filtering guide — Filter by vendor, state, version, access type