Exact, incremental sync
Bookmarks on every Health type find exactly the days that changed. Each one is sent whole, every type and source, so your receiver ends up with what the phone has, edits and deletions included.



Apple Health has no cloud API. The only way your data leaves the phone is through an app on the phone, and the existing options pre-aggregate it, change their payload between versions, or sync when they feel like it. Health Relay does one job and does it exactly.
Exact, incremental sync
Bookmarks on every Health type find exactly the days that changed. Each one is sent whole, every type and source, so your receiver ends up with what the phone has, edits and deletions included.
One open schema
A single documented JSON format in Apple Health’s own terms, versioned by name. If you read
export.xml today, you already know it. Read the schema.
Destinations you choose
Add any HTTP endpoint with an optional bearer token and headers: your server, a home lab dashboard, a webhook. Every destination gets every day; one failing never holds up another.
Private by design
No account, no backend, no analytics. Data goes only to your destinations, tokens live in the Keychain, and nothing is read that the schema doesn’t name.
Reliable in the background
Wakes when Health records something, catches up every morning, keeps unsent batches on disk and retries with backoff. It tells you plainly when iOS is in the way.
Per-source detail
Daily statistics per source (Watch, iPhone, scale, apps) plus the raw samples where they matter: sleep stages, blood pressure, workouts with routes, ECG traces.
Write a receiver in an afternoon: accept a POST, check a token, store the
days, answer 200. Writing a receiver has the
rules, and the repository includes a reference receiver and canonical
fixtures to test against.
Every destination keeps a log of its deliveries with the receiver’s answer, and Data by type shows which Health types had data in the last 30 days, so a permission switched off in Settings is easy to spot.
