Get Life OS

Developers

Your Life OS data, in your own code.

A read-only REST API over your own account: days, sleep, meals, workouts and today's list. Turn it on in the app, make a key, and build whatever you like with it.

Turn it on

  1. In Life OS, open Settings, Your data, Developer API.
  2. Choose what the API may read: days, sleep, meals, workouts, today's list. Each is off until you switch it on.
  3. Tap Create a key. The key is shown once; copy it somewhere safe.

From then on your iPhone keeps a copy of what you chose, for the last 90 days, where the API can read it. Turn the API off and that copy is deleted.

Authentication

Send your key as a bearer token on every request. Keys start with elo_. Anyone with your key can read what you shared, so keep it on a server, never in a web page.

curl https://life-os-ai.s0533495227.workers.dev/v1/me \
  -H "Authorization: Bearer elo_your_key"

Revoke a key in the same screen. A revoked key stops working at once.

Base URL

https://life-os-ai.s0533495227.workers.dev/v1. Every response is JSON. Dates are ISO 8601 in your own time zone, and ranges are inclusive.

Endpoints

GET /v1/me

The account the key belongs to, what it may read, and when your iPhone last sent a copy.

{
  "account": "a1b2c3",
  "name": "Sky",
  "scopes": ["days", "sleep", "meals"],
  "syncedAt": "2026-10-01T07:02:11+03:00"
}

GET /v1/days?from=2026-09-01&to=2026-09-30

One row a day: sleep, readiness, heart, steps, activity, water, and what you ate. A missing figure is null.

{ "days": [ {
  "date": "2026-09-30",
  "sleepMinutes": 431, "readiness": 64, "restingHeartRate": 52, "hrv": 61,
  "steps": 9120, "activeKcal": 512, "exerciseMinutes": 38,
  "waterMl": 1750, "eatenKcal": 2140, "proteinG": 142, "carbsG": 210, "fatG": 71
} ] }

Without from and to you get the last 30 days.

GET /v1/sleep?from&to

Each night: time asleep, each stage, the middle of your night and your breathing rate.

{ "sleep": [ { "night": "2026-09-30", "asleepMinutes": 431, "deepMinutes": 58, "remMinutes": 102,
  "coreMinutes": 251, "awakeMinutes": 20, "midpointHour": 3.4, "respiratoryRate": 14.2 } ] }

GET /v1/meals?from&to

Each meal and drink you logged.

{ "meals": [ { "time": "2026-09-30T13:05:00+03:00", "name": "Chicken and rice",
  "kcal": 720, "proteinG": 58, "carbsG": 82, "fatG": 14, "drinkMl": null } ] }

GET /v1/workouts?from&to

Each workout from Apple Health.

{ "workouts": [ { "type": "Running", "start": "2026-09-30T06:32:00+03:00", "minutes": 31.5, "activeKcal": 318 } ] }

GET /v1/tasks

Today's list.

{ "tasks": [ { "title": "Stretch", "time": "07:30", "done": true } ] }

Errors and limits

StatusMeaning
401No key, or a key that was revoked.
403That data is not shared with the API. Switch it on in the app.
404No such endpoint.
429More than 60 requests a minute. Wait and try again.

Errors come back as {"error": "code", "message": "what to do"}.

What it can see

Only what you switched on, only yours, and only read. The API cannot change your data, cannot see your journal or your chats, and is never used for advertising. See the API terms and the privacy policy.