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.
First, install the library using either
npm install libre-link-unofficial-api
or
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.
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 |
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!
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' });
await client.login();
const user = client.me;
const reading = await client.read();
console.log(reading.value);
// 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.
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!
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! π
This project is licensed under the terms of the MIT license. See the LICENSE file for details.