Integration engineer at a dual-monitor desk reviewing API documentation, with an empty hospital corridor softly blurred behind a glass wall
    Epic FHIR capabilities

    Epic FHIR Capabilities

    You need to know what Epic's FHIR APIs allow before you commit a roadmap to them. This reference maps the APIs, scopes, auth models and limits from Epic's own developer documentation, and Agnotic Technologies builds and tests the integration against the Epic sandbox for you.

    FHIR R4SMART v1 and v2 scopesBackend OAuth 2.0Bulk Data Group export

    Trusted by global innovators

    Benchmark
    Chibasco
    Fundency
    Lantimer
    Lauren
    Lera
    One Minute
    Pento Pix
    TAP
    Xtrium
    Healthevolve
    Benchmark
    Chibasco
    Fundency
    Lantimer
    Lauren
    Lera
    One Minute
    Pento Pix
    TAP
    Xtrium
    Healthevolve
    Benchmark
    Chibasco
    Fundency
    Lantimer
    Lauren
    Lera
    One Minute
    Pento Pix
    TAP
    Xtrium
    Healthevolve
    Benchmark
    Chibasco
    Fundency
    Lantimer
    Lauren
    Lera
    One Minute
    Pento Pix
    TAP
    Xtrium
    Healthevolve

    What are Epic FHIR capabilities?

    Epic FHIR capabilities are the HL7 FHIR APIs, OAuth 2.0 launch and backend flows, Bulk Data export and CDS Hooks that Epic documents on fhir.epic.com for third-party apps. Agnotic Technologies uses that documentation to scope what your app can read, write and search, then builds and tests the integration for you.

    This page is a developer reference. Our Epic integration services page covers how an engagement runs; here we list what the platform documents and where its limits sit.

    Every capability below comes from Epic's published developer documentation. What a health system has licensed and switched on can be narrower, so we confirm it per customer before scoping.

    Capability table

    Which Epic FHIR capabilities can your app use?

    Built only from Epic's developer documentation. Availability at a given Epic customer still depends on its version, licensing and configuration.

    CapabilityWhat it doesAuth modelNotes from Epic's docs
    SMART on FHIR EHR launchLaunches your app from Epic with patient context and single sign-onOAuth 2.0 authorization code; PKCE with S256 onlyEncounter context is returned only to apps with an STU3 or later app FHIR version
    SMART standalone launchYour app starts the login and the patient signs in with MyChartOAuth 2.0 authorization codeEpic shows its Data Use Questionnaire to patients by default for MyChart apps
    Backend Systems appsServer-to-server FHIR calls, and HL7 v2 over HTTP(S)JWT client assertion; RS256, RS384, RS512, or ES256 and ES384 with a JWK Set URLA distinct public key or secret per customer and environment
    FHIR R4 resource APIsPer-API read, search and create, for example Patient.Search, Observation.Create, DocumentReference.SearchSMART v1 (.read, .write) or SMART v2 (c, r, u, d, s) scopesYour client ID lists every API it may call; Epic advises scoping narrowly
    Patient.$matchFinds a high-confidence patient match from demographicsBackend OAuth 2.0 for system-to-system lookupsEpic recommends it for patient lookup before querying records
    Bulk Data exportGroup export of FHIR resources for a defined patient groupBackend client authorized for the Bulk Data APIs and each resource's R4 Search APISpec 1.0.1; no _since; files deleted after 14 days
    CDS HooksCalls your service at patient-view, order-select and order-signRegistered CDS service; prefetch must be scoped to your clientPrefetch resources must match the client's primary FHIR version
    Patient.$summary (IPS)Returns an International Patient Summary for a patientBackend OAuth 2.0 recommendedSuited to query-based document exchange at the point of care

    Epic lists data warehouse synchronization and incremental loads as poor fits for Bulk Data, and suggests keeping registry cohorts to around 1,000 patients or fewer.

    App records

    How do Epic client IDs and app versions work?

    Registering an app on fhir.epic.com creates an app record with a production and a non-production client ID. Draft changes can take up to an hour to reach the sandbox.

    The app FHIR version chosen at creation changes launch behaviour, including the iss endpoint and the patient ID version returned. After an app is marked ready for production, technical changes other than redirect URIs and JWK Set URLs need a new app record.

    Failure points

    Where do Epic FHIR integrations break?

    Each of these comes from Epic's own documentation or change log, and each one fails quietly if you do not design for it.

    Challenge

    Over-scoped client IDs stall security review

    Agnotic approach

    We map every API on the client ID to a use case. Epic notes that customers review that list and may ask for a narrower client ID.

    Challenge

    Refresh tokens that stop working after an Epic upgrade

    Agnotic approach

    Tokens issued before the November 2025 sub-resource change lack the new sub-resource scopes, so we send the user back through authorization instead of retrying.

    Challenge

    Using Bulk Data as a sync engine

    Agnotic approach

    We use Bulk Data for one-time loads and small scheduled cohorts, and event feeds or targeted FHIR searches for ongoing sync.

    Challenge

    Wrong token endpoint at a customer

    Agnotic approach

    Discovery reads the SMART configuration or metadata endpoint with the Epic-Client-ID header, because a customer can override endpoints per client ID.

    Challenge

    FHIR IDs longer than your database expects

    Agnotic approach

    Some Epic FHIR IDs exceed 64 characters. We size ID columns for that or choose the 64-character option on new clients before go-live.

    Challenge

    Needing to edit an app after activation

    Agnotic approach

    We finish sandbox testing before an app is marked ready, and version app records on purpose, since later technical changes mean a new app.

    How we work

    How do you take an Epic FHIR app from sandbox to a live customer?

    Four steps, with a fixed first release agreed before any code is written.

    1.

    Scope the APIs

    We list the APIs, launch type and user context your use case needs, and leave out anything added just in case, in line with Epic's scoping guidance.

    Narrow scope
    2.

    Register and test in the sandbox

    We create the app record, pick the FHIR and SMART scope versions, and test with Epic's sandbox patients. Epic sandboxes take synthetic data only.

    Synthetic data
    3.

    Activate and provision per customer

    The app is marked ready for production, the health system downloads the client ID, and we register a distinct key or secret for each customer and environment.

    Per-customer keys
    4.

    Go live and monitor

    We watch token errors, API failures and Epic's API change log, and plan each customer's upgrades so integrations keep working.

    Monitored

    Scope drivers

    What drives the cost of an Epic FHIR integration?

    We do not quote a price before scoping. These are the factors that move effort on an Epic build, and we size each one on the call.

    Launch type and users

    Patient-facing, clinician-facing and backend apps differ in auth, testing and customer review. Many products need two of them.

    Read only or write back

    Search and read is the smaller build. Filing Observations adds mapping, flowsheet IDs from each health system and more testing.

    Number of Epic customers

    Each customer downloads the client ID, gets its own keys and may configure APIs differently, so rollout effort grows per site.

    API licensing at the customer

    Epic licenses its APIs to healthcare organizations based on production usage. A narrow client ID keeps the customer's licensing review short.

    Bulk Data and CDS Hooks

    Population exports need a group the health system sets up. CDS Hooks need a fast service and analyst configuration at each site.

    Startup or established product

    Startups often need the data model built with the integration. Established products mostly need mapping and hardening.

    Who builds on Epic

    Who builds on Epic FHIR APIs?

    The same documented capabilities, used by very different products.

    Health tech startups

    Products that need chart data from Epic customers from the first pilot.

    Clinician-facing apps

    Tools launched inside the clinician workflow with SMART on FHIR EHR launch and single sign-on.

    Patient apps

    Apps patients connect with their MyChart login through standalone launch.

    RPM and device programs

    Readings filed to flowsheets with Observation.Create or an HL7 v2 interface.

    Decision support vendors

    CDS Hooks services that return cards at patient-view or order-sign.

    Registries and analytics

    Scheduled extracts for small, defined cohorts through Bulk Data.

    Compliance as engineering

    How do we keep PHI safe on an Epic FHIR integration?

    The HIPAA Security Rule applies to your product as well as the health system. We turn it into concrete design decisions.

    Business associate agreements

    Agnotic signs a BAA before any PHI is shared. Development and testing use Epic's sandbox and synthetic patients only.

    Least-privilege scopes

    Each client ID carries only the APIs its use case needs, which also keeps customer security review focused.

    Key handling

    Signing keys live in a secrets manager. We prefer JWK Set URLs, as Epic recommends, so keys can rotate without a new app.

    Audit logging

    Every FHIR call is logged with user, patient, purpose and time, so the health system can answer access questions.

    Compliance-First Healthcare App Development Services Backed by Global Standards

    01HIPAA logo

    HIPAA

    Health Insurance Portability and Accountability Act

    Protect PHI with privacy-first architecture, encrypted storage and transmission, strict access controls, and traceable audit logs.

    02GDPR logo

    GDPR

    General Data Protection Regulation

    Implement lawful consent flows, data minimization, retention controls, and secure processing for sensitive health data.

    03FHIR logo

    FHIR

    Fast Healthcare Interoperability Resources

    Enable standardized health data exchange across apps, care teams, and systems through standards-based FHIR APIs.

    04HL7 logo

    HL7

    Health Level Seven International

    Support enterprise-grade interoperability with HL7-based integrations for records, events, and clinical messaging workflows.

    05HITRUST logo

    HITRUST

    Health Information Trust Alliance

    Align security programs to healthcare-specific control and risk management practices trusted by providers and ecosystem partners.

    06HITECH logo

    HITECH

    Health Information Technology for Economic and Clinical Health Act

    Design with breach notification readiness, digital record safeguards, and operational controls that support regulated care programs.

    07SaMD logo

    SaMD

    FDA Software as a Medical Device

    Plan software quality, traceability, and documentation pathways for products that may require SaMD review and submission.

    08MDR (EU) logo

    MDR (EU)

    Medical Device Regulation (European Union)

    Prepare EU market-ready processes for risk classification, evidence tracking, and lifecycle governance under MDR expectations.

    09SAMHSA logo

    SAMHSA

    Substance Abuse and Mental Health Services Administration

    Apply confidentiality controls and consent-aware sharing models for behavioral and mental health data experiences.

    Standards in scope

    Standards on Epic's FHIR surface

    FHIR R4SMARTOAuth 2.0Bulk DataCDS HooksHL7 v2
    Facts and sources

    Which facts from Epic's documentation shape this page?

    Short facts we design around, each linked to Epic's own developer documentation.

    Frequently Asked Questions

    Epic recommends an app FHIR version of STU3 or later, because DSTU2 lacks functionality the later versions support. We build new apps on R4 resources. Choosing an app FHIR version does not stop the app calling APIs of other FHIR versions.