Skip to content
AF
HealthKit reference

HealthKit Sleep and Self-Care Types

7 identifiers · read from Apple’s documentation on 2026-08-28

7 HealthKit identifiers cover sleep, mindfulness, hygiene events and alcohol. sleepAnalysis is a category type, so one night arrives as many records.

Seven identifiers cover sleep, mindfulness, self care events and alcohol. Four are category types and three are quantity types, and the most consequential member of the group, sleepAnalysis, is one of the category types. Everything awkward about reading sleep out of HealthKit follows from that one fact.

sleepAnalysis has been there since iOS 8.0 and carries HKCategoryValueSleepAnalysis. A record is one state, expressed as an enum case, covering one interval. A night is therefore not a record. It is a run of adjacent records, and the number your user thinks of as "hours slept" is something you compute by measuring and combining intervals, not something you read out of a value field. Anyone porting a sleep feature from a provider that returns a nightly summary object hits this on day one. What are sleep stages covers what the states describe, and the sleep tracking API reference covers the shape you get on each platform.

sleepAnalysis is also the only identifier in this group with a verified counterpart in the cross-platform matrix: Health Connect's SleepSessionRecord, which carries stages of its own. The other six are Apple only until a counterpart is verified, so a cross-platform self care feature will be thinner on Android than the iOS version unless you build the missing half yourself.

mindfulSession, from iOS 10.0, is the clearest case of a category type whose value carries nothing. It holds a generic HKCategoryValue and Apple gives it 6 words of discussion. The meaningful content of a mindful session record is its duration, which is to say its start and end. Write the interval, read the interval, and do not look for an intensity that is not there.

The two self care events work the same way. toothbrushingEvent arrived in iOS 13.0 and handwashingEvent in iOS 14.0, both with a generic HKCategoryValue. Handwashing is the better documented of the pair at 60 words of discussion against 7 for toothbrushing. Both are occurrences with a duration, which makes them countable per day and streakable, and makes averaging them meaningless.

The quantity types are where the numbers live, and two of the three are about alcohol and behave in opposite ways. numberOfAlcoholicBeverages, added in iOS 15.0, is cumulative and sits in the count unit family, so drinks add up over an evening exactly as you would expect. bloodAlcoholContent, one of the two identifiers here that date to iOS 8.0, is discrete and sits in the percent family, so it is a reading at a moment and summing it produces a number with no meaning at all. Two neighbouring types, one topic, opposite arithmetic. That is the trap the sum or average split exists to head off.

The third quantity type is appleSleepingBreathingDisturbances, dated iOS 18.0, and it is a hole in the documentation rather than a type you can build on. The parse found no abstract, no discussion at all, no aggregation style and no unit family for it. That is not a gap in this page; it is a gap in the source, and the silent identifiers explains what to do when you hit one.

Across versions the group is spread thin: two identifiers at iOS 8.0, one each at 10.0, 13.0, 14.0, 15.0 and 18.0. Sleep is also the group most likely to straddle midnight, which makes the day boundary problem a practical concern rather than a theoretical one when you decide which calendar day a night belongs to.

All identifier names, abstracts, availability versions and aggregation styles here were taken from a parse of Apple's developer documentation performed on 2026-08-28.

The 7 identifiers in sleep, mindfulness and self-care

Every field is joined from Apple’s documentation. Aggregation style and unit family are the two Apple states only in prose — where its wording does not state one, this table says so rather than guessing. Android names appear only where the mapping is verified on both platforms.

Mindfulness and Sleep 3

IdentifierWhat it isAggregateUnitiOSAndroid
appleSleepingBreathingDisturbancesHKQuantityTypeIdentifierAppleSleepingBreathingDisturbancesNo abstract published.not stated18.0not verified
mindfulSessionHKCategoryTypeIdentifierMindfulSessionA category sample type for recording a mindful session.enum — HKCategoryValue10.0not verified
sleepAnalysisHKCategoryTypeIdentifierSleepAnalysisA category sample type for sleep analysis information.enum — HKCategoryValueSleepAnalysis8.0SleepSessionRecord (carries stages)

Alcohol consumption 2

IdentifierWhat it isAggregateUnitiOSAndroid
bloodAlcoholContentHKQuantityTypeIdentifierBloodAlcoholContentA quantity sample type that measures the user’s blood alcohol content..discreteAveragepercent8.0not verified
numberOfAlcoholicBeveragesHKQuantityTypeIdentifierNumberOfAlcoholicBeveragesA quantity sample type that measures the number of standard alcoholic drinks that the user has consumed..cumulativeSumcount15.0not verified

Self Care 2

IdentifierWhat it isAggregateUnitiOSAndroid
handwashingEventHKCategoryTypeIdentifierHandwashingEventA category sample type for handwashing events.enum — HKCategoryValue14.0not verified
toothbrushingEventHKCategoryTypeIdentifierToothbrushingEventA category sample type for toothbrushing events.enum — HKCategoryValue13.0not verified

What will bite you

appleSleepingBreathingDisturbances documents nothing. The parse found an empty abstract, zero words of discussion, no aggregation style and no unit family. It is a quantity type dated iOS 18.0 with no stated answer to what its values mean or whether they add up. Do not put it in a weekly rollup on the strength of its name. Show the raw samples, or measure the behaviour yourself and record what you observed.

One night is many sleepAnalysis records. Each is an enum case over an interval, so total sleep is the union of intervals, not a count of records and not a sum of values. Overlap makes it worse: if a phone and a watch both write for the same night, adding the intervals up double counts the hours. Resolve overlaps before you total anything.

mindfulSession and the two hygiene events have nothing in the value. mindfulSession, toothbrushingEvent and handwashingEvent all carry a generic HKCategoryValue. There is no quality, score or intensity hiding in there. If your UI needs one, you are deriving it, and you should say so rather than present it as platform data.

The alcohol pair pulls in opposite directions. numberOfAlcoholicBeverages is cumulative in the count family and bloodAlcoholContent is discrete in the percent family. They look like they belong in the same chart and they do not: one is a running total, the other a point reading. A single generic handler for "alcohol" is how the wrong aggregation gets applied to one of them.

Questions

Why does one night of sleep produce many HealthKit records?
Because sleepAnalysis is a category type. Each record holds a single case of HKCategoryValueSleepAnalysis attached to one interval, so a night is stored as a run of adjacent state records. Total sleep is something you compute from those intervals, and no field in any single record holds it for you.
Does HealthKit's mindfulSession have a value?
Not a useful one. mindfulSession carries a generic HKCategoryValue and Apple gives the identifier 6 words of discussion. The content of the record is the interval it covers, so a session's length is its start and end times. There is no intensity, quality or score to read out of it.
Does HealthKit sleep data map to Android?
sleepAnalysis is the one identifier in this group with a verified counterpart in our cross-platform matrix, Health Connect's SleepSessionRecord, which carries stages as well. The other six, including mindfulSession, the hygiene events and both alcohol types, are Apple only until a counterpart is verified.

All 7 identifiers above were read from Apple’s documentation on 2026-08-28. See the full 240-identifier table for every group at once, or the datasets for the same data as JSON and CSV. Apple’s abstracts are quoted for identification; the grouping, the aggregation split and the cross-platform mapping are AIFitnessAPI’s.

← All HealthKit groups