Skicka Apple Health-data till en webhook
Apple Health har inget webb-API, så dina data når en webhook bara när en app på din iPhone skickar dem. Marrow Health gör det gratis: en automatisering skickar dina hälsomätvärden, träningspass, styrkeset, kostdagbok eller symtom och humör med POST till vilken URL som helst, som JSON eller CSV, enligt det schema du väljer, med appen stängd. Nedan finns installationen, payloaden och fungerande mottagare för n8n, Home Assistant och en vanlig server. Vi gör Marrow.
Ställ in automatiseringen
- Öppna fliken Exportera i Marrow Health, sedan Automatisk, sedan Ny automatisering.
- Klistra in din webhook-URL (använd HTTPS). Lägg till de rubriker som din mottagare kontrollerar, till exempel en
Authorization-bearer-token eller en n8n-nyckel för header-autentisering. - Välj typ av data: Hälsomätvärden, Träningspass, Styrkelogg, Kostdagbok eller Symtom och humör. En automatisering skickar en typ, och du kan ha upp till tio.
- Välj JSON eller CSV, datumintervallet (Sedan senaste körningen är standard) och hur ofta den körs, i minuter, timmar eller dagar.
- Slå på den och tryck på Kör nu för att skicka en första payload medan du håller koll på mottagaren.
Varje förfrågan är en POST med Content-Type: application/json (eller text/csv) och dina rubriker. Varje körning, med sin svarskod, listas i automatiseringens historik i appen.
Det som kommer fram
Hälsomätvärden kommer som dagssummor, i den enhet som anges i units. Puls kommer som varje dags medelvärde, lägsta och högsta, och sömn som varje natt med sina stadier, i timmar:
{"data": {"metrics": [
{"name": "body_mass", "units": "kg",
"data": [{"date": "2026-09-11", "qty": 81.3}]},
{"name": "step_count", "units": "count",
"data": [{"date": "2026-09-11", "qty": 8746}]},
{"name": "heart_rate", "units": "bpm",
"data": [{"date": "2026-09-11", "Avg": 71, "Min": 52, "Max": 148}]},
{"name": "sleep_analysis", "units": "h",
"data": [{"date": "2026-09-11", "totalSleep": 7.2, "asleep": 7.2, "deep": 1.1, "rem": 1.6, "core": 4.3, "awake": 0.2,
"sleepStart": "2026-09-10 23:36:00 -0400", "sleepEnd": "2026-09-11 07:02:00 -0400"}]}
]}}
Payloads för träningspass, styrka, kost och humör, råprover i stället för dagssummor, och CSV-layouten finns i referensen för automatiseringar.
Ta emot den i n8n
- Lägg till en Webhook-nod. Ställ in HTTP Method på
POSToch ge den en sökväg, till exempelapple-health. - Vill du ha en hemlighet, ställ in Authentication på Header Auth och lägg till samma rubriknamn och värde i Marrow-automatiseringen.
- Klicka på Listen for test event och tryck sedan på Kör nu i Marrow inom två minuter. Payloaden visas i editorn.
- Publicera arbetsflödet och peka Marrow mot Production URL (den med
/webhook/, inte/webhook-test/). Test-URL:en slutar lyssna efter ett test.
Payloaden ligger under body, så dagens steg är {{ $json.body.data.metrics.find(m => m.name === 'step_count').data.at(-1).qty }} i ett uttryck. Lägg till en Split Out-nod på body.data.metrics för att hantera varje mätvärde som en egen post. n8n tar som standard emot payloads på upp till 16 MB, vilket räcker för flera års dagssummor. Körningar i produktion visas under Executions, inte i editorn. (n8n Webhook docs)
Ta emot den i Home Assistant
En webhook-trigger tar emot POST på /api/webhook/<webhook_id>. Den här automatiseringen sparar det senaste stegantalet i en nummerhjälpare som heter input_number.steps_today (skapa den först, med ett maxvärde över din bästa dag):
automation:
- alias: "Apple Health from Marrow"
triggers:
- trigger: webhook
webhook_id: "pick-a-long-random-id"
allowed_methods:
- POST
local_only: false
actions:
- action: input_number.set_value
target:
entity_id: input_number.steps_today
data:
value: >-
{{ ((trigger.json.data.metrics
| selectattr('name', 'eq', 'step_count') | first).data
| last).qty }}
- JSON-innehållet ligger i
trigger.jsoneftersom Marrow skickarContent-Type: application/json. local_onlyär på som standard, vilket bara tar emot anrop från ditt hemnätverk eller en webhook-URL via Nabu Casa Cloud. Sätt den tillfalsenär telefonen skickar över internet till din egen HTTPS-adress.- Webhook-ID:t är den enda hemligheten, så gör det långt och slumpmässigt.
(Dokumentation för webhook-trigger i Home Assistant)
Ta emot den på din egen server
Vilken endpoint som helst som tar emot en HTTPS POST och svarar 2xx fungerar. Den här arkiverar varje payload i en fil:
from http.server import BaseHTTPRequestHandler, HTTPServer
import time
class H(BaseHTTPRequestHandler):
def do_POST(self):
body = self.rfile.read(int(self.headers.get("Content-Length", 0)))
with open(f"marrow-{int(time.time())}.json", "wb") as f:
f.write(body)
self.send_response(200)
self.end_headers()
HTTPServer(("0.0.0.0", 8798), H).serve_forever()
Lägg den bakom HTTPS med en Cloudflare Tunnel, Tailscale Funnel eller en omvänd proxy. Om du hellre vill ha en databas du kan söka i än en mapp med filer är Marrows spegel på egen server just den mottagaren, redan skriven, och AI-agenter kan fråga den också.
Tre regler för en mottagare som aldrig tappar data
- Senaste vinner. Spara varje värde med mätvärde och dag som nyckel och skriv över vid upprepning. Sedan senaste körningen skickar de två sista dagarna igen med flit, eftersom Apple Health fortsätter fylla på en dag efter att den har tagit slut.
- Spara råinnehållet först, och tolka det sedan. Ett fel i tolkningen ska aldrig kosta dig data.
- Svara snabbt. Marrow väntar upp till den tidsgräns du ställer in (60 sekunder som standard) och försöker om en misslyckad körning från det senaste lyckade fönstret vid nästa tur.
När körs den?
När iOS låter Marrow köra: efter att den synkat med Apple Health, när du öppnar den och under uppdatering i bakgrunden, när det valda intervallet har gått. iOS bestämmer när uppdatering i bakgrunden sker, så en telefon som ligger låst hela dagen skickar när den låses upp nästa gång, och Sedan senaste körningen täcker glappet.
Andra sätt att göra det
- Health Auto Export skickar också Apple Health-data till webhooks, och dess JSON för mätvärden har samma struktur som Marrows. Dess automatiseringar kräver nivån Premium.
- Apple Genvägar kan läsa hälsoprover och skicka dem med Get Contents of URL, i en personlig automatisering vid en bestämd tid. Det är gratis, det kan bara läsa hälsodata medan telefonen är upplåst, och du bygger och underhåller varje mätvärde själv.
- Apples export.zip är en fullständig säkerhetskopia på en gång, inte ett flöde. För att göra om en till CSV, använd vår konverterare i webbläsaren.