Developers

Apple Health API

Apple Health has no web API: your data lives in HealthKit, on your iPhone. HealthAPI syncs it to your own private account and gives you a REST API with an OpenAPI spec, so your scripts, automations and AI tools can read your days, weeks and trends.

  • 2-day free preview, no card
  • iPhone, iOS 15 or later
  • Updated 15 October 2026

Does Apple Health have an API?

Not one you can call from a server. Apple's developer API for health data is HealthKit, a framework for apps running on your devices. Your iPhone and your Apple Watch each keep their own HealthKit store (so do iPad, from iPadOS 17, and Apple Vision Pro), and an app reads it on the device after you allow it, one type of data at a time.

So a script, a spreadsheet or an AI tool on another computer can't ask Apple for your steps. An app on your iPhone has to read them from HealthKit and send them somewhere you can query. That is what HealthAPI does.

How HealthAPI works

  1. Install HealthAPI and allow Apple Health

    The app asks for read access to Apple Health. In Sync Settings you choose which categories to sync and how much history to import.
  1. It syncs to your account

    HealthAPI uploads your data to your own private account when you open it and in the background as iOS allows, and adds daily totals and averages as it goes.
  2. Read it with your key

    Copy your API key in the app (Connect, then Other tools) and send it as a Bearer token. The app's Here's your data screen shows a real response from your own account.
Here's your data in the HealthAPI app: a GET request to /health/weekly-summary that returned 200, with the week's steps, sleep hours and resting heart rate as JSON and a steps chart.
A weekly summary request and its JSON, inside the HealthAPI app.

Your first request

The base URL is:

URL
https://healthapi.app/api/v1

Check your key first. GET /usage returns your plan and today's requests, and doesn't count toward them:

RequestShell
export KEY=<your API key>
curl "https://healthapi.app/api/v1/usage" \
  -H "Authorization: Bearer $KEY"

Then read a day. Dates are local to your timezone unless you pass tz:

RequestShell
curl "https://healthapi.app/api/v1/health/daily-summary?date=2026-10-12" \
  -H "Authorization: Bearer $KEY"
ResponseJSON
{
  "totals": {
    "steps": 11284,
    "distance_m": 8600,
    "active_energy_kcal": 684,
    "basal_energy_kcal": 1633,
    "flights_climbed": 9,
    "exercise_time_min": 52
  },
  "averages": {
    "heart_rate_bpm": 62,
    "resting_heart_rate_bpm": 54,
    "hrv_ms": 68,
    "spo2_pct": 98,
    "respiratory_rate_bpm": 14
  },
  "sleep": { "total_hours": 7.7, "session_count": 13 },
  "workouts": { "count": 1, "total_duration_seconds": 2490, "total_calories_kcal": 386.4 },
  "data_coverage_pct": 100,
  …
}

The full response, with its flat aliases and their units, is in the API reference.

Endpoints

Every endpoint takes your key as Authorization: Bearer <key> and returns JSON. Each links to its parameters and an example in the reference.

EndpointReturns
GET /usageYour plan and today’s requests left. It never counts toward them.
GET /query/daily-summaryOne day’s steps, average heart rate and workouts.
GET /health/daily-summaryOne day in full: activity, energy, heart, sleep and workouts.
GET /health/weekly-summaryA Monday-to-Sunday week, totalled and averaged.
GET /query/trendsOne metric day by day, for up to 365 days.
GET /health/samplesIndividual readings, newest first, with paging.
GET /health/workoutsWorkouts with type, duration, distance and energy.
GET /health/latestThe newest reading of every metric, in one call.
GET /gdpr/exportEverything in your account as one JSON file.
POST /account/regenerate-keyA new key. The old one stops working at once.

What you can read

50 Apple Health metrics plus workouts: steps, distance, active and resting energy, heart rate, resting heart rate, HRV, VO2 max, blood oxygen, respiratory rate, sleep stages, weight and body measurements, walking and running form, blood pressure, glucose and more. Each metric's API name is its HealthKit name, such as stepCount or restingHeartRate. See all 50, with units.

Things that add up (steps, energy, distance) are summed per day without counting iPhone and Apple Watch twice, so totals match the Health app. Readings (heart rate, HRV, weight) are averaged per day with a low and a high. Sleep is counted per night, the way the Health app counts it.

Use it from GPT Actions, n8n, Zapier and Make

The whole API is described in an OpenAPI 3.1 spec at https://healthapi.app/openapi.json, and llms.txt sums it up for AI agents.

ToolSetup
Custom GPTConfigure, Actions, Import from URL: the spec's address. Authentication: API Key, Bearer, your key. Privacy policy: https://healthapi.app/privacy.
n8n, Make, ZapierAn HTTP request to an endpoint with the header Authorization: Bearer <key>, or import the OpenAPI spec where the tool supports it.
Your own codeAny HTTP client. Generate a typed client from the OpenAPI spec if you like.

For ChatGPT, Claude or other AI tools that support MCP, you don't need the key at all: add HealthAPI as a connector and approve it on your iPhone. See the Apple Health MCP server.

Limits and plans

Requests are counted per account, per day, and the count resets at 00:00 UTC. Only health reads (/health/* and /query/*) and connector tool calls count. Syncing from your iPhone, /usage and the export don't.

PlanRequests a dayPrice
Free preview252 days, no card
Pro100$4.99 a month, after a 7-day free trial
Developer1,000$9.99 a month, after a 7-day free trial

The plans differ only in requests per day; both read the same data. The trial is for new subscribers, through the App Store, and plans are bought in the iPhone app (annual plans too). Past the limit, health reads return 429 with a Retry-After header. The rate limits and errors are in the reference.

Your key and your data

  • The key is the identity. Anyone with it can read everything you've synced, so give it only to tools you trust.
  • Regenerate it anytime in the app or with POST /account/regenerate-key. The old key stops working at once, and every connected AI app is disconnected.
  • Take it with you. GET /gdpr/export downloads everything as JSON. More on exporting.
  • Delete it. Deleting your account gives you 30 days to change your mind; DELETE /gdpr/account erases it at once. See the privacy policy.

Questions

Does Apple Health have an API?

Not one you can call over the web. HealthKit is a framework for apps running on your devices: each iPhone and Apple Watch keeps its own HealthKit store, and an app reads it on the device once you allow it. HealthAPI is that app on your iPhone, plus a REST API for the data it syncs.

Do I need a Mac, Xcode or an Apple developer account?

No. You need an iPhone with the HealthAPI app. The API is plain HTTPS with a Bearer key, so curl, Python, JavaScript, a spreadsheet script or an automation tool all work.

Can I write data to Apple Health through the API?

No. HealthAPI only reads from Apple Health, and its health endpoints only read from your account. Nothing you call changes what is on your iPhone.

How current is the data?

As current as the last sync from your iPhone. HealthAPI syncs when you open it and in the background as iOS allows. GET /health/latest shows when each metric was last recorded.

Does it work with Android or Google Health Connect?

No. HealthAPI reads Apple Health, and the app is for iPhone, iOS 15 or later.

How much does it cost?

Every account starts with a 2-day free preview with no card (25 requests a day). New subscribers then get a 7-day free trial through the App Store. After that it is Pro ($4.99 a month, 100 requests a day) or Developer ($9.99 a month, 1,000 requests a day). The plans differ only in requests per day.

The HealthAPI app icon

Your Apple Health data, one request away.

Get HealthAPI for iPhone, copy your key, and call the API from wherever you work.