Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no cardYour first API call in 2 minutes →
FreeStyle Libre API: get Libre glucose data into FHIR (no public API)
Abbott has no public FreeStyle Libre or LibreView API: what exists (partnerships, Lingo sync to phone stores) and how to store glucose readings in FHIR.
Abbott does not publish a developer API for FreeStyle Libre or LibreView: there is no developer portal, no API reference and no self-service keys, and Abbott's integrations (Epic, insulin pump makers, digital health companies) are business partnerships. Anpheros does not connect to Abbott's cloud itself: your code reads glucose data where the person can share it with you (or the phone's health store), and Anpheros keeps the record with the person's consent. Abbott documents no sync from the FreeStyle Libre app to Apple Health or Health Connect; its Lingo wellness sensor, a different product, does sync with both.
Read glucose from the phone and store it in FHIR (5 minutes)
Your phone app reads a glucose sample from Apple Health (bloodGlucose) or Health Connect (BloodGlucoseRecord), sends it to your backend, and the backend writes it to the person's record (sandbox key sk_test_…). Carry the source the health store reports into device.display; here, a reading written by Abbott Lingo:
curl -X POST https://platform.anpheros.com/fhir/R4/Observation \
-H "Authorization: Bearer $ANPHEROS_KEY" \
-H "Content-Type: application/fhir+json" \
-H "X-Anpheros-Author-Type: device" \
-d '{"resourceType":"Observation","status":"final",
"category":[{"coding":[{"system":"http://terminology.hl7.org/CodeSystem/observation-category","code":"vital-signs"}]}],
"code":{"coding":[{"system":"http://loinc.org","code":"2339-0","display":"Glucose [Mass/volume] in Blood"}]},
"subject":{"reference":"Patient/<id>"},
"effectiveDateTime":"2026-11-02T08:15:00+01:00",
"valueQuantity":{"value":104,"unit":"mg/dL","system":"http://unitsofmeasure.org","code":"mg/dL"},
"device":{"display":"Abbott Lingo"},
"note":[{"text":"CGM reading (interstitial), read from Apple Health"}]}'
The same in Python, for a batch your app uploads: every reading becomes one Observation, sent together in one transaction Bundle.
import os, requests
FHIR = "https://platform.anpheros.com/fhir/R4"
fhir = {"Authorization": f"Bearer {os.environ['ANPHEROS_KEY']}", "Content-Type": "application/fhir+json",
"X-Anpheros-Author-Type": "device"}
# What your phone app sent: one item per glucose sample from HealthKit or Health Connect
readings = [
{"id": "hk-5F2A", "time": "2026-11-02T08:15:00+01:00", "mg_dl": 104, "source": "Abbott Lingo", "store": "Apple Health"},
{"id": "hk-5F2B", "time": "2026-11-02T08:20:00+01:00", "mg_dl": 107, "source": "Abbott Lingo", "store": "Apple Health"},
]
entries = [{
"request": {"method": "POST", "url": "Observation"},
"resource": {
"resourceType": "Observation", "status": "final",
"identifier": [{"system": "https://yourapp.example/glucose-sample", "value": g["id"]}],
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "2339-0", "display": "Glucose [Mass/volume] in Blood"}]},
"subject": {"reference": "Patient/<id>"},
"effectiveDateTime": g["time"],
"valueQuantity": {"value": g["mg_dl"], "unit": "mg/dL", "system": "http://unitsofmeasure.org", "code": "mg/dL"},
"device": {"display": g["source"]},
"note": [{"text": f"CGM reading (interstitial), read from {g['store']}"}],
},
} for g in readings]
r = requests.post(FHIR, headers=fhir, json={"resourceType": "Bundle", "type": "transaction", "entry": entries})
print(r.status_code, len(entries), "readings saved")
And in JavaScript (Node 18+), one reading:
const fhir = { Authorization: `Bearer ${process.env.ANPHEROS_KEY}`, 'Content-Type': 'application/fhir+json' };
const g = { time: '2026-11-02T08:15:00+01:00', mgDl: 104, source: 'Abbott Lingo' }; // from your phone app
await fetch('https://platform.anpheros.com/fhir/R4/Observation', {
method: 'POST', headers: fhir,
body: JSON.stringify({
resourceType: 'Observation', status: 'final',
category: [{ coding: [{ system: 'http://terminology.hl7.org/CodeSystem/observation-category', code: 'vital-signs' }] }],
code: { coding: [{ system: 'http://loinc.org', code: '2339-0', display: 'Glucose [Mass/volume] in Blood' }] },
subject: { reference: 'Patient/<id>' },
effectiveDateTime: g.time,
valueQuantity: { value: g.mgDl, unit: 'mg/dL', system: 'http://unitsofmeasure.org', code: 'mg/dL' },
device: { display: g.source },
note: [{ text: 'CGM reading (interstitial)' }],
}),
});
The phone side is the HealthKit or Health Connect code on Apple HealthKit to FHIR and Health Connect to FHIR, with the glucose type instead of steps. The Anpheros side is standard FHIR R4, so the same requests work with any FHIR server. Anpheros stores the readings as they come: it does not interpret glucose values, raise alerts or give treatment advice.
Ways to get FreeStyle Libre data into FHIR
| Path | Status | What you need |
|---|---|---|
| Your backend reads a public FreeStyle Libre or LibreView API | Not available | Abbott publishes no developer API. Integrations are business partnerships; how to apply is not published |
| FreeStyle Libre app → Apple Health or Health Connect → your app | Not available | Abbott documents no such sync. Third-party bridge apps exist but are not Abbott's |
| Abbott Lingo → Apple Health or Health Connect → your app → Anpheros | Works today | A different, over-the-counter wellness sensor. Lingo shares 5-minute values with a 3-hour delay, only in the 55–200 mg/dL range |
| Unofficial LibreLinkUp or LibreView libraries | Not available | Not supported by Abbott: they use the person's Abbott password, are undocumented and break without notice |
| A direct FreeStyle Libre connector inside Anpheros | On our roadmap | Not available yet. Use the button below to tell us you need it |
What Abbott offers developers
No public API. No official Abbott, FreeStyle or LibreView site offers a developer portal, an API reference or self-service keys. LibreView is presented as a data system for clinics and patients (developed by Newyu, Inc.), not as a developer platform. There is no public OAuth, no public endpoint and therefore no rate limit to document.
Partnerships instead. Abbott connects Libre data through agreements with specific companies:
| Year | Partnership | What it does |
|---|---|---|
| 2019 | Omada Health | Libre data in a digital health and coaching service for type 2 diabetes |
| 2020 | Tandem Diabetes Care | Work on integrated technology with insulin delivery systems; other pump makers followed |
| 2025 (29 April) | Epic | LibreView data linked to the Epic EHR through Epic Aura, for US healthcare providers |
Abbott does not publish how to apply as a partner or what it costs.
Other things that are not developer APIs. LibreLinkUp is a follower app for family and caregivers. In the US, the Libre app works with Libre 2 Plus and Libre 3 Plus sensors and has an Apple Watch companion. Libre Assist, the AI feature inside the Libre app, does not connect to other health apps. Within Abbott's own apps people log glucose, notes, food, insulin and activity, but none of it is offered as an API.
Unofficial libraries. Community projects call the LibreLinkUp and LibreView backends with the person's login. Abbott does not document or support them, and apps built on them warn that an Abbott change can stop them working. They also mean handling the person's Abbott password, which a medical record should not depend on.
Sources: LibreView, Abbott and Epic, Abbott and Tandem, Abbott and Omada, Libre app, Libre Assist, Lingo and Health Connect, November 2026.
Glucose readings as FHIR Observations
| Data | FHIR | Note |
|---|---|---|
| Glucose value (mg/dL) | valueQuantity, LOINC 2339-0, UCUM mg/dL, category vital-signs |
2339-0 is the blood glucose code used on Wearable data in FHIR. CGM readings are interstitial: say so in a note and record the sensor in device |
| Glucose value in mmol/L | convert to mg/dL, or keep mmol/L as reported |
never mix units under one code |
| Sample time | effectiveDateTime |
with the time-zone offset |
| Source app or sensor | device.display |
the name the health store reports, for example "Abbott Lingo" |
| Sample ID from the health store | identifier |
stops duplicates when the same sample is sent again |
Frequently asked questions
Is there a FreeStyle Libre API?
Not a public one. Abbott offers no developer portal, API reference or self-service keys for FreeStyle Libre. Its integrations are business partnerships, such as Epic, Tandem and Omada Health.
Can I read LibreView data?
Not through a documented API. LibreView is a data system for clinics and patients, and Abbott publishes no developer access to it. Libraries that read LibreView with the person's login are unofficial and can stop working at any time.
Does FreeStyle Libre sync with Apple Health or Health Connect?
Abbott does not document it for the FreeStyle Libre app. Abbott Lingo, a separate wellness sensor, syncs glucose with both, with a 3-hour delay.
Is LibreLinkUp an API?
No. LibreLinkUp is a follower app that lets family and caregivers see a person's glucose. It is not a developer API, and Abbott does not support apps that call its backend.
How can a clinic get Libre data?
Through Abbott's own clinic tools and partnerships, for example LibreView or, for US providers on Epic, the Epic integration. Abbott does not publish a self-service route for other systems.
Does Anpheros connect to FreeStyle Libre directly?
Not yet. Today your code writes glucose readings it can lawfully read (for example from HealthKit or Health Connect) to Anpheros as standard FHIR. A direct FreeStyle Libre connector is on our roadmap; tell us with the button on this page if you need it.
Related
- Wearable APIs: every brand compared
- Dexcom API to FHIR: CGM glucose readings in your app
- Wearable data in FHIR (Apple Health, Health Connect)
- Apple HealthKit to FHIR · Health Connect to FHIR
- Oura API to FHIR · Garmin API to FHIR · Google Health API
Ask your AI
Paste this into Claude, ChatGPT, Cursor or Claude Code. Your assistant reads this guide and adapts it to your code.
Read https://developers.anpheros.com/guides/freestyle-libre-api.md and help me apply this guide to my own project. Use the Anpheros sandbox (base URL https://platform.anpheros.com) with my API key from the ANPHEROS_KEY environment variable, never written in the code. Give me complete, runnable code, the response I should expect, and how to fix the errors in https://developers.anpheros.com/guides/troubleshooting.md if a call fails.Open in ClaudeOpen in ChatGPTThis guide as MarkdownBuild the whole integration with an AI coding tool
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no cardYour first API call in 2 minutes →