September 3, 2026 · 4 min read

Vitamins and minerals

Where logged micronutrients come from, why coverage is thin, the fields with a product use, and what to build.

What the micronutrient biomarkers measure

Daily logged intake of each vitamin and mineral, on days with at least one log, over a midnight-to-midnight window in the profile’s local time zone. None requires a wearable.

Vitamins

BiomarkerUnit
vitamin_a_intakeMicrograms
vitamin_c_intakeMilligrams
vitamin_d_intakeMicrograms
vitamin_e_intakeMilligrams
vitamin_k_intakeMicrograms
thiamin_intake (B1)Milligrams
riboflavin_intake (B2)Milligrams
niacin_intake (B3)Milligrams
pantothenic_acid_intake (B5)Milligrams
vitamin_b6_intakeMilligrams
biotin_intake (B7)Micrograms
folate_intake (B9)Micrograms
vitamin_b12_intakeMicrograms

Minerals

BiomarkerUnit
calcium_intakeMilligrams
iron_intakeMilligrams
magnesium_intakeMilligrams
phosphorus_intakeMilligrams
potassium_intakeMilligrams
sodium_intakeMilligrams
zinc_intakeMilligrams
chloride_intakeMilligrams
copper_intakeMilligrams
manganese_intakeMilligrams
chromium_intakeMicrograms
molybdenum_intakeMicrograms
selenium_intakeMicrograms
iodine_intakeMicrograms
Access
APIGET /api/v1/profile/biomarker/{externalId}?categories=nutrition plus one types parameter per field and a date range
WebhookBiomarkerCreatedIntegrationEvent. Entries update in place, upsert on id.

Data sources

PlatformRecordNotes
iOS, HealthKitThe dietary type for each nutrientWritten by detailed loggers, Cronometer above all. Most apps write none of these.
Android, Health ConnectNutritionRecord fieldsSame, plus Samsung Health for a subset
Direct integrationsNone
Phone onlyManual entry, or entries your own app writes

How Sahha calculates vitamins and minerals

  1. Pick one source for the day, per nutrient. The source with the highest daily total of that nutrient wins.
  2. Sum the winning source’s entries with an end time inside the local day.

Absence means no source logged that nutrient that day, which is the normal state for nearly every profile.

Interpreting the values

Coverage decides everything. Before building on any of these, count profiles with a value in the last 30 days. It will be a small number.

Two fields have a product use beyond a breakdown table. Sodium and potassium relate to blood pressure and are the micronutrients a cardiovascular feature might reasonably surface. Iron and vitamin D are the ones supplement features most often target.

The rest belong in a table, not a feature. A nutrient breakdown view for users who log in detail is the honest ceiling.

None of the 27 is a score factor or has a trend or comparison insight. The supplement recommendations by archetype guide shows how to build supplement features from archetypes rather than from logged micronutrients, which is the path that works for users who do not log.

Use cases

A breakdown table for detailed loggers. Show every field with a value for the day, hide the rest. Do not render 27 blank rows.

GET /api/v1/profile/biomarker/{externalId}?categories=nutrition&types=sodium_intake&types=potassium_intake&types=iron_intake&types=vitamin_d_intake&startDateTime=2026-08-27&endDateTime=2026-09-03

A sodium note next to blood pressure. For users who log and own a cuff, the two together are a coherent story. For everyone else, neither field exists.

Limitations

  • Logged only, and rarely logged.
  • Per-nutrient winners. A day’s nutrients can come from different apps.
  • Absence is not zero for any field.

Related