SMA API Reference
Detailed request and response examples for all SMA Endpoint Directory endpoints.
List States
Returns all 56 U.S. states and territories with their Medicaid FHIR implementation status. Supports filtering by implementation status, API vendor, patient access status, and FHIR version.
| Method | Path | Description |
|---|
| GET | /v1/sma/states | List all states with summary info |
Parameters
| Parameter | Required | Type | Description |
|---|
implemented | No | boolean | Filter by implementation status (true or false) |
vendor | No | string | Filter by API vendor (e.g., "Epic") |
status | No | string | Filter by patient access status (e.g., "In Production") |
fhir_version | No | string | Filter by FHIR version (e.g., "4.0.1") |
Example
List implemented states using Epic
Request
const response = await fetch(
"https://api.fhirfly.io/v1/sma/states?implemented=true&vendor=Epic",
{
method: "GET",
headers: {
"x-api-key": "YOUR_API_KEY",
}
}
);
const data = await response.json();
console.log(data);
Response
{
"states": [
{
"id": "california",
"state": "California",
"abbreviation": "CA",
"is_implemented": true,
"api_vendor": "Epic",
"patient_access_status": "In Production",
"provider_directory_status": "In Production",
"production_url_count": 5,
"fhir_version": "4.0.1"
},
{
"id": "colorado",
"state": "Colorado",
"abbreviation": "CO",
"is_implemented": true,
"api_vendor": "Epic",
"patient_access_status": "In Production",
"provider_directory_status": "In Production",
"production_url_count": 3,
"fhir_version": "4.0.1"
}
],
"total": 2,
"meta": {
"data_as_of": "2026-03-01T00:00:00Z",
"source": "CMS SMA Endpoint Directory",
"source_url": "https://github.com/CMSgov/SMA-Endpoint-Directory"
}
}
Response Fields
| Field | Type | Description |
|---|
states | array | Array of state summaries |
total | number | Number of states returned (after filters) |
meta | object | Source attribution and data timestamp |
State Summary Fields
| Field | Type | Description |
|---|
id | string | State identifier (e.g., "california") |
state | string | Display name (e.g., "California") |
abbreviation | string | null | Two-letter abbreviation (e.g., "CA") |
is_implemented | boolean | Whether FHIR endpoints are implemented |
api_vendor | string | null | API vendor (e.g., "Epic") |
patient_access_status | string | null | Patient access API status |
provider_directory_status | string | null | Provider directory API status |
production_url_count | number | Number of production endpoint URLs |
fhir_version | string | null | FHIR version (e.g., "4.0.1") |
Get State
Returns full details for a specific state, including patient access endpoints (claims, PDex, formulary, CHIP), provider directory endpoints, contacts, and metadata.
The :state parameter accepts three formats:
- Abbreviation:
CA, NY, TX
- Underscore ID:
california, new_york
- Display name:
California, New York
| Method | Path | Description |
|---|
| GET | /v1/sma/states/:state | Get full details for one state |
Example
Get SMA details for California
Request
const response = await fetch(
"https://api.fhirfly.io/v1/sma/states/CA",
{
method: "GET",
headers: {
"x-api-key": "YOUR_API_KEY",
}
}
);
const data = await response.json();
console.log(data);
Response
{
"id": "california",
"state": "California",
"abbreviation": "CA",
"api_vendor": "Epic",
"survey_date": "2026-01-15",
"is_implemented": true,
"patient_access": {
"status": "In Production",
"implementation_date": "2024-07-01",
"fhir_version": "4.0.1",
"auth_protocol": "OAuth 2.0",
"refresh_frequency": "Daily",
"endpoints": {
"claims": [
"https://fhir.example.ca.gov/R4/Claims"
],
"pdex": [
"https://fhir.example.ca.gov/R4/PDex"
],
"formulary": [
"https://fhir.example.ca.gov/R4/Formulary"
],
"chip": [],
"capability_statement": [
"https://fhir.example.ca.gov/R4/metadata"
],
"sandbox": [
"https://sandbox.fhir.example.ca.gov/R4"
]
}
},
"provider_directory": {
"status": "In Production",
"implementation_date": "2024-07-01",
"fhir_version": "4.0.1",
"is_public": true,
"refresh_frequency": "Weekly",
"endpoints": {
"production": [
"https://pd.fhir.example.ca.gov/R4"
],
"capability_statement": [
"https://pd.fhir.example.ca.gov/R4/metadata"
],
"sandbox": []
}
},
"contacts": {
"member_phone": "1-800-555-0100",
"member_email": "members@example.ca.gov",
"developer_contact": "developer@example.ca.gov",
"pd_developer_contact": null,
"registration_info": "https://developer.example.ca.gov/register",
"pd_registration_info": null
},
"all_production_urls": [
"https://fhir.example.ca.gov/R4/Claims",
"https://fhir.example.ca.gov/R4/PDex",
"https://fhir.example.ca.gov/R4/Formulary",
"https://pd.fhir.example.ca.gov/R4"
],
"meta": {
"data_as_of": "2026-03-01T00:00:00Z",
"source": "CMS SMA Endpoint Directory",
"source_url": "https://github.com/CMSgov/SMA-Endpoint-Directory",
"ingested_at": "2026-03-01T12:00:00Z"
}
}
Response Structure
patient_access
Patient access API details including FHIR endpoint URLs by category.
| Field | Type | Description |
|---|
status | string | null | Implementation status (e.g., "In Production") |
implementation_date | string | null | When the API was deployed (ISO date) |
fhir_version | string | null | FHIR version |
auth_protocol | string | null | Authentication protocol (e.g., "OAuth 2.0") |
refresh_frequency | string | null | How often data is refreshed |
endpoints.claims | string[] | Claims FHIR endpoint URLs |
endpoints.pdex | string[] | Payer Data Exchange (PDex) endpoint URLs |
endpoints.formulary | string[] | Drug formulary endpoint URLs |
endpoints.chip | string[] | CHIP (Children's Health Insurance Program) endpoint URLs |
endpoints.capability_statement | string[] | FHIR CapabilityStatement (metadata) URLs |
endpoints.sandbox | string[] | Sandbox/testing endpoint URLs |
provider_directory
Provider directory API details.
| Field | Type | Description |
|---|
status | string | null | Implementation status |
implementation_date | string | null | When deployed (ISO date) |
fhir_version | string | null | FHIR version |
is_public | boolean | null | Whether the directory is publicly accessible |
refresh_frequency | string | null | How often data is refreshed |
endpoints.production | string[] | Production endpoint URLs |
endpoints.capability_statement | string[] | FHIR CapabilityStatement URLs |
endpoints.sandbox | string[] | Sandbox endpoint URLs |
Contact information for the state's Medicaid FHIR implementation.
| Field | Type | Description |
|---|
member_phone | string | null | Member services phone number |
member_email | string | null | Member services email |
developer_contact | string | null | Developer/API contact |
pd_developer_contact | string | null | Provider directory developer contact |
registration_info | string | null | API registration URL or instructions |
pd_registration_info | string | null | Provider directory registration info |
Error Response
If the state is not found, the API returns a 404:
{
"error": "state_not_found",
"message": "State not found",
"provided": "XX"
}
Stats
Returns aggregate statistics across all 56 states and territories — implementation counts, vendor distribution, FHIR version breakdown, and provider directory metrics.
| Method | Path | Description |
|---|
| GET | /v1/sma/stats | Get aggregate statistics |
Example
Get SMA aggregate statistics
Request
const response = await fetch(
"https://api.fhirfly.io/v1/sma/stats",
{
method: "GET",
headers: {
"x-api-key": "YOUR_API_KEY",
}
}
);
const data = await response.json();
console.log(data);
Response
{
"summary": {
"total_states": 56,
"implemented": 42,
"not_implemented": 14,
"total_production_urls": 187
},
"by_vendor": {
"Epic": 18,
"Conduent": 6,
"Gainwell": 5,
"Deloitte": 4,
"Other": 9
},
"by_patient_access_status": {
"In Production": 38,
"In Development": 4,
"Not Started": 14
},
"by_fhir_version": {
"4.0.1": 40,
"3.0.2": 2
},
"by_auth_protocol": {
"OAuth 2.0": 35,
"SMART on FHIR": 5,
"API Key": 2
},
"provider_directory": {
"total_with_pd": 30,
"by_status": {
"In Production": 25,
"In Development": 5
}
},
"meta": {
"data_as_of": "2026-03-01T00:00:00Z",
"source": "CMS SMA Endpoint Directory",
"source_url": "https://github.com/CMSgov/SMA-Endpoint-Directory"
}
}
Response Fields
summary
| Field | Type | Description |
|---|
total_states | number | Total states and territories tracked (56) |
implemented | number | States with active FHIR implementations |
not_implemented | number | States without implementations |
total_production_urls | number | Total production endpoint URLs across all states |
Breakdowns
Each breakdown is an object mapping category values to counts, sorted by count descending.
| Field | Description |
|---|
by_vendor | Count of states by API vendor |
by_patient_access_status | Count by patient access implementation status |
by_fhir_version | Count by FHIR version |
by_auth_protocol | Count by authentication protocol |
provider_directory.total_with_pd | States with a provider directory implementation |
provider_directory.by_status | Provider directory count by status |
SDK Usage
import { Fhirfly } from "@fhirfly-io/terminology";
const client = new Fhirfly({ apiKey: "your-api-key" });
// List all implemented states
const list = await client.sma.listStates({ implemented: true });
console.log(`${list.total} states have FHIR endpoints`);
for (const state of list.states) {
console.log(`${state.abbreviation}: ${state.api_vendor ?? "No vendor"}`);
}
// Get full details for California
const ca = await client.sma.getState("CA");
console.log(`Claims endpoints: ${ca.patient_access.endpoints.claims.length}`);
console.log(`Auth: ${ca.patient_access.auth_protocol}`);
// Get aggregate statistics
const stats = await client.sma.stats();
console.log(`${stats.summary.implemented} / ${stats.summary.total_states} states implemented`);
Required Scopes
connectivity.read — All SMA endpoints
See Also