Welcome to the unofficial Node.js API for Libre Link Up! This library is designed to help you interact with your CGM data from your Freestyle Libre 2/3 stored inside Abbottβs database directly from your Node.js applications. Please note that this library is not officially supported by Abbott/Freestyle and was reverse engineered for educational purposes.
β οΈ The library is in alpha and may not work as expected, breaking changes may occur. Please open an issue if you encounter any problems.
π Getting Started
First, install the library using either
npm
npm install libre-link-unofficial-api
or
bun
bun install libre-link-unofficial-api
Then, you can import the LibreLinkClient
from the library:
import { LibreLinkClient } from 'libre-link-unofficial-api';
Youβll need to provide an email and password for your Libre Link Up account either in the .env file or when creating a new LibreLinkClient
instance:
const client = new LibreLinkClient({ email: 'your-libre-link-up-email', password: 'your-libre-link-up-password' });
Please make sure that the email and password work with the Libre Link Up mobile application before using them with this library.
π API
Options
The LibreLinkClient
constructor accepts the following options:
Option | Description | Default |
---|---|---|
email | The email address for your Libre Link Up account. Will fallback to env variables, if not provided. | undefined |
password | The password for your Libre Link Up account. Will fallback to env variables, if not provided. | undefined |
patientId | The patient ID for the user. Will fallback to env variables, if not provided. | undefined |
cache | Whether to enable cache for request responses received from Libre Link Up api. Data like blood glucose readings will never be cached. | true |
Methods
The LibreLinkClient
provides access to the following methods:
Method | Description | Status |
---|---|---|
login | Login to the Libre Link Up API. | β |
me | Get the current cached user. | β |
read | Get the raw reading. | β |
stream | Stream the readings. | β |
history | Get the history of readings. | β |
fetchReading | Fetch the raw reading from the Libre Link Up API. Use read for parsed readings. | β |
fetchConnections | Fetch the connections between LinkUp account and Libre app. | β |
More methods will be added in the future. If you need a specific method, please open an issue or submit a pull request!
π Examples
Create a new LibreLinkClient
Itβs necessary to create a new LibreLinkClient
instance to interact with the Libre Link Up API. Otherwise any method listed below will throw an error.
import { LibreLinkClient } from 'libre-link-unofficial-api';
const client = new LibreLinkClient({ email: 'your-libre-link-up-email', password: 'your-libre-link-up-password' });
Log into Libre Link Up
await client.login();
Get current user
const user = client.me;
Get a blood glucose reading
const reading = await client.read();
console.log(reading.value);
Stream the blood glucose readings. (Every 1.5min by default)
// Stream the readings every 1.5min (can be changed via arguments)
const stream = client.stream();
for await (const reading of stream) {
const { value, timestamp, trendType } = reading;
console.log(value, " - ", timestamp.toTimeString());
console.log(`Trend ${trendType}`);
// Use break; to stop the stream.
// if(value > 150) break;
}
Check out the Sandbox directory for more samples.
β οΈ Disclaimer
This library was reverse engineered from the Libre Link Up API and resources available online; and may be incomplete or inaccurate. The library is not associated with Abbott or Freestyle. Use at your own risk.
Every 12 hours a Github Action runs to test the library against the Libre Link Up API. If the tests fail, the library may be out of date. Please open an issue or submit a pull request if you notice any issues. Thanks!
π Acknowledgements
Big thanks to the author of the libre-link-up-api-client library for reverse engineering the Libre Link Up API β your work inspired this library! π
π License
This project is licensed under the terms of the MIT license. See the LICENSE file for details.