Skip to content
AF
HealthKit reference

HealthKit Hearing, UV and Diving Types

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

10 HealthKit identifiers measure the world around the body: audio exposure in sound pressure units, UV, daylight, underwater depth and water temperature.

Ten identifiers make up the hearing, UV exposure and diving groups, and they are the only part of HealthKit that measures the world around the body instead of the body itself. What the user is hearing, how much ultraviolet light and daylight reaches them, and how deep and how cold the water is. Seven are quantity types and three are category types.

Only one of the seven quantity types is cumulative. timeInDaylight, added in iOS 17.0, measures how long the user spent in daylight, and it is the sole member of this group that you may add up over a day, a week or a trip. The other six state a discrete aggregation style, which means each sample is a reading rather than a share of a total. Getting that backwards produces a plausible looking chart and a wrong one, as the sum or average split sets out.

The unit families in play are sound pressure, length, temperature, time and count. Sound pressure covers the loudness trio. environmentalAudioExposure and headphoneAudioExposure both shipped in iOS 13.0 and split exposure by source, one for sound in the environment and one for sound arriving through headphones. environmentalSoundReduction, from iOS 16.0, is the odd one out: Apple describes it as the difference in sound intensity when wearing headphones that lower environmental sound levels, so the value is a reduction rather than a level. Storing it in the same column as the other two, under a name like "decibels", will eventually mislead somebody.

uvExposure is the oldest entry here, dating to iOS 9.0, and its unit family is count. Not energy, not irradiance. Whatever you store the value in, do not convert it as though it carried physical units.

underwaterDepth and waterTemperature both arrived in iOS 16.0, in the length and temperature families respectively, and both are discrete. A dive summary built from them is a set of extremes and averages: the deepest reading, the coldest reading, the mean over the descent. Nothing in either type accumulates.

The three category types are the group's exposure events: audioExposureEvent (iOS 13.0), environmentalAudioExposureEvent (iOS 14.0) and headphoneAudioExposureEvent (iOS 14.2). Each carries its own value enum, HKCategoryValueAudioExposureEvent, HKCategoryValueEnvironmentalAudioExposureEvent and HKCategoryValueHeadphoneAudioExposureEvent. They record that an exposure event occurred, not how loud it was, so they pair with the quantity types rather than duplicating them. Apple wrote 120 words of discussion for environmentalAudioExposureEvent and 68 for headphoneAudioExposureEvent, but only 6 for audioExposureEvent, which is the thinnest documentation in the group.

By version, three identifiers arrived in iOS 13.0, one in 14.0, one in 14.2, three in 16.0 and one in 17.0, with uvExposure alone at 9.0. Read that as two waves: hearing in the iOS 13 and 14 releases, and water and daylight in 16 and 17.

No identifier in this group has a verified counterpart in the site's cross-platform matrix, so plan on all ten being Apple only until one is verified. Where these samples come from matters as much as what they contain: if your app reads a phone store that a watch writes into, HealthKit on Apple Watch covers how that hand off works, and timezones and day boundaries covers the rollup problem that timeInDaylight, as the group's only cumulative type, is the one that runs into.

Every identifier name, abstract, aggregation style and availability version quoted above comes from a parse of Apple's developer documentation dated 2026-08-28, and the complete set is at every HealthKit type identifier.

The 10 identifiers in environment, hearing and diving

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.

Hearing 6

IdentifierWhat it isAggregateUnitiOSAndroid
environmentalAudioExposureHKQuantityTypeIdentifierEnvironmentalAudioExposureA quantity sample type that measures audio exposure to sounds in the environment..discreteAveragesound pressure13.0not verified
environmentalSoundReductionHKQuantityTypeIdentifierEnvironmentalSoundReductionA quantity sample type that measures the difference in sound intensity when wearing headphones that lower environmental sound levels..discreteAveragesound pressure16.0not verified
headphoneAudioExposureHKQuantityTypeIdentifierHeadphoneAudioExposureA quantity sample type that measures audio exposure from headphones..discreteAveragesound pressure13.0not verified
audioExposureEventHKCategoryTypeIdentifierAudioExposureEventA category sample type for audio exposure events.enum — HKCategoryValueAudioExposureEvent13.0not verified
environmentalAudioExposureEventread-onlyHKCategoryTypeIdentifierEnvironmentalAudioExposureEventA category sample type that records exposure to potentially damaging sounds from the environment.enum — HKCategoryValueEnvironmentalAudioExposureEvent14.0not verified
headphoneAudioExposureEventHKCategoryTypeIdentifierHeadphoneAudioExposureEventA category sample type that records exposure to potentially damaging sounds from headphones.enum — HKCategoryValueHeadphoneAudioExposureEvent14.2not verified

UV exposure 2

IdentifierWhat it isAggregateUnitiOSAndroid
timeInDaylightHKQuantityTypeIdentifierTimeInDaylightA quantity sample type that measures amount of time the user spent in daylight..cumulativeSumtime17.0not verified
uvExposureHKQuantityTypeIdentifierUVExposureA quantity sample type that measures the user’s exposure to UV radiation..discreteAveragecount9.0not verified

Diving 2

IdentifierWhat it isAggregateUnitiOSAndroid
underwaterDepthHKQuantityTypeIdentifierUnderwaterDepthA quantity sample that records a person’s depth underwater..discreteAveragelength16.0not verified
waterTemperatureHKQuantityTypeIdentifierWaterTemperatureA quantity sample that records the water temperature..discreteAveragetemperature16.0not verified

What will bite you

The exposure events are not quiet versions of the exposure measurements. audioExposureEvent, environmentalAudioExposureEvent and headphoneAudioExposureEvent are category types. They carry an enum case and a date range, never a sound pressure value. A pipeline that fans every identifier with "audioExposure" in its name into one numeric column will silently write enum ordinals next to real measurements.

One cumulative type, six discrete ones. timeInDaylight is the only member of this group that adds up. Sum environmentalAudioExposure over a day and the result is proportional to how many samples the device happened to write, not to how much sound the user was in. The correct shape for the six discrete types is average, minimum, maximum or latest.

uvExposure is in the count unit family. There is no radiometric unit attached to it in Apple's documentation, so a value here is a scale reading. Labelling it in your UI with a physical unit you picked yourself invents precision the source does not have.

audioExposureEvent has 6 words of discussion. It is the least documented identifier in the group, and the abstract, "a category sample type for audio exposure events", is close to the whole of what Apple states. It also overlaps in name with the two source specific event types that came a release or two later. If you need to know which event kind you are holding, read the value enum rather than guessing from the identifier.

Questions

Which HealthKit types measure audio exposure?
They split across two families. environmentalAudioExposure and headphoneAudioExposure are quantity types in the sound pressure family, both from iOS 13.0, and environmentalSoundReduction joined them in iOS 16.0 measuring a difference rather than a level. audioExposureEvent, environmentalAudioExposureEvent and headphoneAudioExposureEvent are category types that record an event instead of a value.
Can I sum HealthKit audio exposure samples over a day?
No. The six discrete quantity types in this group, audio exposure among them, hold readings taken at a point in time, so a daily total mostly reflects how often the device wrote a sample. timeInDaylight is the group's only cumulative type and therefore the only one a sum is correct for.
What HealthKit types does diving produce?
Two: underwaterDepth, which records a person's depth underwater in the length unit family, and waterTemperature, in the temperature family. Both arrived in iOS 16.0 and both state discrete aggregation, so a dive summary is built from maximums, minimums and averages rather than from totals.

All 10 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