To receive Apple Health data as a webhook, HealthSave Pro POSTs batched HealthKit samples over HTTPS to a Server URL you control. Point it at the open-core HealthSave Observatory, or at any endpoint of your own that implements the documented ingest contract (POST /api/apple/batch). Either way, your iPhone pushes Apple Health to your own server, no cloud middleman.
What "Apple Health webhook" means here
iOS doesn't let apps fire arbitrary outbound webhooks per sample. What HealthSave does instead is the practical equivalent: it batches your new HealthKit samples and POSTs them to an endpoint you configure, in the background, on a best-effort cadence. If your endpoint is a server you wrote, you've effectively turned Apple Health into a webhook source feeding your own infrastructure.
The pipeline
iPhone (Apple Health)
└─ HealthSave Pro ──HTTPS POST /api/apple/batch──▶ your endpoint
(batched, background, ~1–5 min) ├─ Observatory (ready-made), or
└─ your own handler (any language)
Step 1, Choose what receives the POST
Two options. Run the HealthSave Observatory (the open-core datahub project, FastAPI + TimescaleDB via Docker) and let it store and serve everything. Or, if you just want the raw feed, write a small handler of your own, anything that can accept an HTTP POST and return 200 works.
Step 2, Implement the contract
Your endpoint needs to accept POST /api/apple/batch (batched samples as JSON) and answer GET /api/apple/status so the app can confirm the connection. The full request/response shape, including how samples are tagged by metric, source, and unit, is on the API page. The Observatory implements this for you; a custom handler just needs to honor the same shape.
Step 3, Point the app at it
In HealthSave: Settings → Server Sync, set the Server URL to your endpoint (e.g. https://your-host, iOS won't sync to localhost), add an API key, and enable background sync. Batches begin within a few minutes.
Step 4, Verify it's flowing
Watch your endpoint's logs for incoming POSTs, or call GET /api/apple/status. Once batches land, every new HealthKit sample your phone records will keep arriving at your server automatically.
What's free vs Pro
| Capability | Tier |
|---|---|
| On-device dashboard, CSV/JSON export | Free |
| Background POST to your endpoint (the webhook) | Pro |
| API key auth, custom server URL | Pro |
| REST API to read the data back | Pro |
Pro is a one-time $24.99 (US price, varies by region), Family Sharing included, no subscription.
Honest limits
- Batched, not real-time. iOS background scheduling means ~1–5 minute latency, not per-sample events.
- You own the endpoint. You host it, secure it (HTTPS + API key), and keep it reachable.
- Inbound contract is fixed. Your handler must accept the documented shape; HealthSave decides the payload, not you.
- iOS only; it reads Apple Health, so data must already be in HealthKit.
- Accuracy is your wearable's, the webhook forwards exactly what your devices recorded.
Related
- The HealthSave ingest contract, the exact request and response shape.
- Store Apple Health in your own database with the ready-made Observatory.
- Build a custom REST API over your Apple Health data.
- Apple Health data in your homelab.
FAQ
Is this a real-time webhook?
No. HealthSave batches samples and syncs on a best-effort cadence, roughly 1 to 5 minutes, because iOS limits background work. It's a reliable push, not a sub-second event stream.
Can I send to my own server instead of the Observatory?
Yes. The Server URL is just an HTTP endpoint you control. Any server that implements the ingest contract (POST /api/apple/batch) can receive the data; the open-core Observatory is one ready-made implementation.
Is the webhook authenticated?
You can set an API key in the app that is sent with each request, and you should serve your endpoint over HTTPS. You own and secure the endpoint.
What does the payload look like?
Batched HealthKit samples as JSON, tagged by metric type, source, and unit. The exact request and response contract is documented on the HealthSave API page.
Does it work without the Observatory?
Yes. The Observatory is optional. If you only need the raw webhook, point HealthSave at a small handler you write in any language and process the batches yourself.
HealthSave is not a medical device. It is for informational purposes only and does not diagnose, treat, cure, or prevent any disease or condition. The accuracy of any health data depends on your wearable device and its sensors. Privacy claims of zero data collection apply to the iOS app; self-host sync sends your data to your own server.
Get HealthSave
Download free, try the export, then unlock background sync, the webhook to your own endpoint, with a one-time Pro purchase when you're ready.
Download HealthSave on the App Store