@mergd/eight-sleep
v0.1.2
Published
Unofficial, typed TypeScript SDK for the Eight Sleep mobile API
Maintainers
Readme
@mergd/eight-sleep
Unofficial, typed TypeScript SDK for Eight Sleep's private mobile API.
Derived from Eight Sleep 7.57.9 (com.eightsleep.eight, versionCode 1007057009) via APKPure.
npm install @mergd/eight-sleepAuthentication is deliberately out of scope. Supply a fetch implementation
that already adds a valid bearer token (and handles refresh if needed):
import { EightSleepClient } from "@mergd/eight-sleep";
const client = new EightSleepClient({
fetch: async (input, init) => {
const headers = new Headers(init?.headers);
headers.set("Authorization", `Bearer ${await getAccessToken()}`);
return fetch(input, { ...init, headers });
},
});
const me = await client.users.current();
const status = await client.temperature.status(me.userId);
const trends = await client.sleep.trends({
userId: me.userId,
from: "2026-08-01",
to: "2026-08-07",
timeZone: "America/Los_Angeles",
});
// The app API has versioned routes. Authentication stays caller-owned.
const subscription = await client.request(`/users/${me.userId}/subscriptions`, {
host: "app",
version: "v3",
});API
users.current()andusers.get(userId)devices.get(deviceId),devices.peripherals(deviceId), anddevices.online(deviceId)temperature.status(userId),setPower(userId, on), andsetLevel(userId, level)sleep.trends(input)andsleep.intervals(userId, sessionId)- native alarm list/create/update/delete, snooze, and dismiss (app API v2 read, v1 writes)
- household summary, schedule, current set, and guests
request(path, options)for unwrapped client/app API endpoints
Temperature levels use Eight Sleep's -100..100 scale. setLevel puts the
side in smart mode first by default; pass { ensureSmart: false } to send only
the level update.
This package does not include login, OAuth client credentials, token storage, refresh, retries, caching, or rate-limit policy. Private APIs can change without notice. Not affiliated with Eight Sleep.
