Send Apple Health-data til en webhook
Apple Health har ingen web-API, så dataene dine når en webhook bare når en app på iPhonen sender dem. Marrow Health gjør dette gratis: en automatisering sender helsemålingene, treningsøktene, styrkesettene, matdagboken eller symptomene og humøret dine med POST til en hvilken som helst URL, som JSON eller CSV, etter tidsplanen du velger, med appen lukket. Nedenfor står oppsettet, nyttelasten og fungerende mottakere for n8n, Home Assistant og en vanlig server. Vi lager Marrow.
Sett opp automatiseringen
- Åpne fanen Eksporter i Marrow Health, deretter Automatisert, deretter Ny automatisering.
- Lim inn webhook-URL-en din (bruk HTTPS). Legg til eventuelle overskrifter mottakeren din sjekker, for eksempel et
Authorization-bearer-token eller en n8n-nøkkel for header-autentisering. - Velg typen data: Helsemålinger, Treningsøkter, Styrkelogg, Ernæringsdagbok eller Symptomer og humør. Én automatisering sender én type, og du kan ha opptil ti.
- Velg JSON eller CSV, datoperioden (Siden forrige kjøring er standard) og hvor ofte den kjører, i minutter, timer eller dager.
- Slå den på og trykk på Kjør nå for å sende en første nyttelast mens du følger med på mottakeren.
Hver forespørsel er en POST med Content-Type: application/json (eller text/csv) og overskriftene dine. Hver kjøring, med svarkoden sin, står i automatiseringens historikk i appen.
Det som kommer frem
Helsemålinger kommer som dagstotaler, i enheten som er oppgitt i units. Puls kommer som gjennomsnitt, minimum og maksimum for hver dag, og søvn som hver natt med fasene sine, i timer:
{"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"}]}
]}}
Nyttelastene for treningsøkter, styrke, ernæring og humør, råprøver i stedet for dagstotaler og CSV-oppsettet står i referansen for automatiseringer.
Motta den i n8n
- Legg til en Webhook-node. Sett HTTP Method til
POSTog gi den en bane, for eksempelapple-health. - For en hemmelighet setter du Authentication til Header Auth og legger til det samme overskriftsnavnet og den samme verdien i Marrow-automatiseringen.
- Klikk Listen for test event, og trykk deretter på Kjør nå i Marrow innen to minutter. Nyttelasten vises i editoren.
- Publiser arbeidsflyten og pek Marrow til Production URL (den med
/webhook/, ikke/webhook-test/). Test-URL-en slutter å lytte etter en test.
Nyttelasten ligger under body, så dagens skritt er {{ $json.body.data.metrics.find(m => m.name === 'step_count').data.at(-1).qty }} i et uttrykk. Legg til en Split Out-node på body.data.metrics for å behandle hver måling som sin egen post. n8n tar som standard imot nyttelaster på opptil 16 MB, noe som dekker flere år med dagstotaler. Produksjonskjøringer vises under Executions, ikke i editoren. (n8n Webhook docs)
Motta den i Home Assistant
En webhook-trigger tar imot POST-en på /api/webhook/<webhook_id>. Denne automatiseringen lagrer det siste skrittallet i en tallhjelper som heter input_number.steps_today (opprett den først, med et maksimum over din beste 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-innholdet ligger i
trigger.jsonfordi Marrow senderContent-Type: application/json. local_onlyer på som standard, noe som bare godtar innlegg fra hjemmenettverket ditt eller en Nabu Casa-sky-webhook-URL. Sett den tilfalsenår telefonen sender over internett til din egen HTTPS-adresse.- Webhook-ID-en er den eneste hemmeligheten, så gjør den lang og tilfeldig.
(Dokumentasjon for webhook-triggeren i Home Assistant)
Motta den på din egen server
Ethvert endepunkt som godtar en HTTPS POST og svarer 2xx, fungerer. Dette arkiverer hver nyttelast til 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()
Sett den bak HTTPS med en Cloudflare Tunnel, Tailscale Funnel eller en reverse proxy. Vil du heller ha en database du kan spørre i enn en mappe med filer, er Marrows selvdrevne speil akkurat den mottakeren, ferdig skrevet, og AI-agenter kan spørre i det også.
Tre regler for en mottaker som aldri mister data
- Siste verdi vinner. Lagre hver verdi med måling og dag som nøkkel, og overskriv ved gjentakelse. Siden forrige kjøring sender de to siste dagene på nytt med vilje, fordi Apple Health fortsetter å fylle inn en dag etter at den er over.
- Lagre råinnholdet først, og tolk det etterpå. En feil i tolkingen skal aldri koste deg data.
- Svar raskt. Marrow venter opptil tidsavbruddet du har satt (60 sekunder som standard) og prøver en mislykket kjøring på nytt fra det siste vellykkede vinduet ved neste runde.
Når kjører den?
Når som helst iOS lar Marrow kjøre: etter at den har synkronisert med Apple Health, når du åpner den, og under oppdatering i bakgrunnen, så snart intervallet du valgte har gått. iOS bestemmer når oppdatering i bakgrunnen skjer, så en telefon som ligger låst hele dagen, sender når den låses opp neste gang, og Siden forrige kjøring dekker gapet.
Andre måter å gjøre det på
- Health Auto Export sender også Apple Health-data til webhooks, og JSON-en med målinger har samme struktur som Marrows. Automatiseringene deres krever Premium-nivået.
- Apple Snarveier kan lese helseprøver og sende dem med Get Contents of URL, i en personlig automatisering på et fast tidspunkt. Det er gratis, det kan bare lese Helse-data mens telefonen er låst opp, og du bygger og vedlikeholder hver måling selv.
- Apples export.zip er en engangs-sikkerhetskopi av alt, ikke en strøm. For å gjøre en om til CSV bruker du konverteren vår i nettleseren.